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="$((1 + $RANDOM % 1000))"
|
|
YOCTO_UID="$((1 + $RANDOM % 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_rpms"
|
|
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 "
|