Implement basic yocto build setup based on protos from jhnc-oss
This commit is contained in:
8
dev/AddUserToSubgidAndSubuid.sh
Executable file
8
dev/AddUserToSubgidAndSubuid.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
||||
USERNAME="$(logname)"
|
||||
echo "${USERNAME}":"$(id -u "${USERNAME}")":65536 >> /etc/subuid
|
||||
echo "${USERNAME}":"$(id -g "${USERNAME}")":65536 >> /etc/subgid
|
||||
90
dev/bootstrap.sh
Executable file
90
dev/bootstrap.sh
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
|
||||
MANIFEST_BRANCH="${1:-main}"
|
||||
|
||||
YOCTO_GID="4040"
|
||||
YOCTO_UID="2000"
|
||||
YOCTO_USER="yocto"
|
||||
YOCTO_WORKDIR="/opt/${YOCTO_USER}"
|
||||
|
||||
[[ -d "$PWD"/download ]] || mkdir "$PWD"/download
|
||||
[[ -d "$PWD"/sstate-cache ]] || mkdir "$PWD"/sstate-cache
|
||||
|
||||
#sudo chmod -R 775 "${PWD}"/{download,sstate-cache}
|
||||
|
||||
subgidSize=$(( $(podman info --format "{{ range .Host.IDMappings.GIDMap }}+{{.Size }}{{end }}" ) - 1 ))
|
||||
subuidSize=$(( $(podman info --format "{{ range .Host.IDMappings.UIDMap }}+{{.Size }}{{end }}" ) - 1 ))
|
||||
|
||||
|
||||
if [ -z "$DO_DEPLOY" ] ; then DO_DEPLOY=false ; fi
|
||||
if [ -z "$DO_SSTATE" ] ; then DO_SSTATE=false ; fi
|
||||
|
||||
usage() {
|
||||
echo " --deploy map deploy folder for outside access"
|
||||
echo " --sstate map sstate folder to preserve regarless of container"
|
||||
echo " --name=<name> assign a name to the container"
|
||||
}
|
||||
|
||||
while [ -n "$1" ] ; do
|
||||
case "$1" in
|
||||
--deploy)
|
||||
DO_DEPLOY=true
|
||||
;;
|
||||
--sstate)
|
||||
DO_SSTATE=true
|
||||
;;
|
||||
--name=*)
|
||||
CONTAINER_NAME="$1"
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
if $DO_SSTATE ; then
|
||||
SSTATE_PATH="sstate-cache"
|
||||
mkdir -p $SSTATE_PATH
|
||||
sstate_param1="-v"
|
||||
sstate_param2="${PWD}"/"${SSTATE_PATH}":"${YOCTO_WORKDIR}"/"${SSTATE_PATH}"
|
||||
fi
|
||||
|
||||
if $DO_DEPLOY ; then
|
||||
DEPLOY_PATH="deploy-rpms"
|
||||
mkdir -p $DEPLOAY_PATH
|
||||
deploy_param1="-v"
|
||||
deploy_param2="${PWD}"/"${DEPOLY_PATH}":"${YOCTO_WORKDIR}"/"${DEPLOY_PATH}"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
podman run \
|
||||
-ti \
|
||||
--rm \
|
||||
--pull=always \
|
||||
--gidmap ${YOCTO_GID}:0:1 \
|
||||
--gidmap $((YOCTO_GID+1)):$((YOCTO_GID+1)):$((subgidSize-YOCTO_GID)) \
|
||||
--gidmap 0:1:${YOCTO_GID} \
|
||||
--uidmap ${YOCTO_UID}:0:1 \
|
||||
--uidmap $((YOCTO_UID+1)):$((YOCTO_UID+1)):$((subuidSize-YOCTO_UID)) \
|
||||
--uidmap 0:1:${YOCTO_UID} \
|
||||
--user "${YOCTO_USER}:${YOCTO_USER}" \
|
||||
--workdir "${YOCTO_WORKDIR}" \
|
||||
${deploy_param1} ${deploy_param2} \
|
||||
${sstate_param1} ${sstate_param2} \
|
||||
-v "${PWD}"/default.xml:"${YOCTO_WORKDIR}"/default.xml \
|
||||
-v "${PWD}"/meta-caros:"${YOCTO_WORKDIR}"/meta-caros:Z \
|
||||
-v "${PWD}"/dev:"${YOCTO_WORKDIR}"/dev:Z \
|
||||
-v "${PWD}"/download:"${YOCTO_WORKDIR}"/download:Z \
|
||||
-v "${PWD}"/sstate:"${YOCTO_WORKDIR}"/sstate:Z \
|
||||
--env TEMPLATECONF="${YOCTO_WORKDIR}"/meta-caros/conf/templates \
|
||||
--env SSTATE_PATH="${SSTATE_PATH}" \
|
||||
${CONTAINER_NAME} \
|
||||
ghcr.io/jhnc-oss/yocto-image/yocto:38 \
|
||||
bash -c "dev/init_env.sh "
|
||||
20
dev/init_env.sh
Executable file
20
dev/init_env.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -o errexit
|
||||
|
||||
# Workaround for unsupported local manifest
|
||||
mkdir _local
|
||||
cd "${YOCTO_DIR}/_local"
|
||||
cp "${YOCTO_DIR}/default.xml" .
|
||||
git init -b master
|
||||
git add .
|
||||
git commit -m "local manifest"
|
||||
cd - > /dev/null
|
||||
|
||||
repo --color=always init _local
|
||||
repo sync --no-clone-bundle
|
||||
rm -rf "${YOCTO_DIR}/_local"
|
||||
|
||||
source poky/oe-init-build-env
|
||||
|
||||
exec /bin/bash
|
||||
Reference in New Issue
Block a user