caros/dev/bootstrap.sh
Lars Niesen bd2e7c5319
!26 Add upstream changes to UID and GID
The container upstream changed the internal UID and GID
which causes the boostrap script to create wrong mappings
2023-09-23 17:40:08 +02:00

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 "