The container upstream changed the internal UID and GID which causes the boostrap script to create wrong mappings
91 lines
2.4 KiB
Bash
Executable File
91 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o pipefail
|
|
|
|
MANIFEST_BRANCH="${1:-main}"
|
|
|
|
YOCTO_GID="1000"
|
|
YOCTO_UID="1000"
|
|
YOCTO_USER="yocto"
|
|
YOCTO_WORKDIR="/opt/${YOCTO_USER}"
|
|
|
|
[[ -d "$PWD"/downloads ]] || mkdir "$PWD"/downloads
|
|
[[ -d "$PWD"/sstate-cache ]] || mkdir "$PWD"/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"
|
|
mkdir -p $DEPLOY_PATH
|
|
rm -rf "$DEPLOY_PATH"/*
|
|
deploy_param1="-v"
|
|
deploy_param2="${PWD}"/"${DEPLOY_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}"/downloads:"${YOCTO_WORKDIR}"/downloads:Z \
|
|
--env TEMPLATECONF="${YOCTO_WORKDIR}"/meta-caros/conf/templates \
|
|
--env SSTATE_PATH="${SSTATE_PATH}" \
|
|
${CONTAINER_NAME} \
|
|
ghcr.io/jhnc-oss/yocto-image/yocto:37 \
|
|
bash -c "dev/init_env.sh "
|