#!/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"/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= 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 "