Hi All, Any thoughts on this RFC, If you need additional use case also will provide. Many thanks, Srinu On Tuesday, November 28, 2023 at 12:44:22 PM UTC+5:30 Srinuvasan Arjunan wrote: > From: Srinuvasan A > > In present implementation we are using sbuild/schroot to build the > packages, this schroot created via sessions during package build, and > immediatley vanish once build the packages. > > Some of the downstream projects uses this chroot at many > places for doing some postprocessing the meta data based on the chroot > path, but unfortunately we cannot refer this path due to creating the > chroot via session. > > Hence install the required packages in persistence sbuildchroot, to > access isar-apt and other directories we introduces the sbuildchroot > class. > > Signed-off-by: Srinuvasan A > --- > meta/classes/sbuildchroot.bbclass | 101 ++++++++++++++++++++++++++++++ > 1 file changed, 101 insertions(+) > create mode 100644 meta/classes/sbuildchroot.bbclass > > diff --git a/meta/classes/sbuildchroot.bbclass > b/meta/classes/sbuildchroot.bbclass > new file mode 100644 > index 00000000..edddd566 > --- /dev/null > +++ b/meta/classes/sbuildchroot.bbclass > @@ -0,0 +1,101 @@ > +# This software is a part of ISAR. > +# Copyright (C) 2018 Siemens AG > +# > +# SPDX-License-Identifier: MIT > + > +inherit crossvars > + > +MOUNT_LOCKFILE = "${SCHROOT_DIR}.lock" > + > +sbuildchroot_do_mounts() { > + if [ "${USE_CCACHE}" = "1" ]; then > + mkdir -p "${CCACHE_DIR}" > + if [ "${CCACHE_DEBUG}" = "1" ]; then > + mkdir -p "${CCACHE_DIR}/debug" > + fi > + fi > + > + sudo -s <<'EOSUDO' > + ( flock 9 > + set -e > + > + mountpoint -q '${SCHROOT_DIR}/isar-apt' || > + mount --bind '${REPO_ISAR_DIR}/${DISTRO}' '${SCHROOT_DIR}/isar-apt' > + if [ "${USE_CCACHE}" = "1" ]; then > + mkdir -p '${SCHROOT_DIR}/ccache' > + mountpoint -q '${SCHROOT_DIR}/ccache' || > + mount --bind '${CCACHE_DIR}' '${SCHROOT_DIR}/ccache' > + fi > + mountpoint -q '${SCHROOT_DIR}/dev' || > + ( mount -o bind,private /dev '${SCHROOT_DIR}/dev' && > + mount -t tmpfs none '${SCHROOT_DIR}/dev/shm' && > + mount --bind /dev/pts '${SCHROOT_DIR}/dev/pts' ) > + mountpoint -q '${SCHROOT_DIR}/proc' || > + mount -t proc none '${SCHROOT_DIR}/proc' > + mountpoint -q '${SCHROOT_DIR}/sys' || > + mount --rbind /sys '${SCHROOT_DIR}/sys' > + mount --make-rslave '${SCHROOT_DIR}/sys' > + > + # Mount base-apt if 'ISAR_USE_CACHED_BASE_REPO' is set > + if [ > "${@repr(bb.utils.to_boolean(d.getVar('ISAR_USE_CACHED_BASE_REPO')))}" = > 'True' ] > + then > + mkdir -p '${SCHROOT_DIR}/base-apt' > + mountpoint -q '${SCHROOT_DIR}/base-apt' || \ > + mount --bind '${REPO_BASE_DIR}' '${SCHROOT_DIR}/base-apt' > + fi > + > + # Refresh or remove /etc/resolv.conf at this chance > + if [ "${@repr(bb.utils.to_boolean(d.getVar('BB_NO_NETWORK')))}" = 'True' > ] > + then > + rm -rf '${SCHROOT_DIR}/etc/resolv.conf' > + else > + cp -L /etc/resolv.conf '${SCHROOT_DIR}/etc' > + fi > + > + ) 9>'${MOUNT_LOCKFILE}' > +EOSUDO > +} > + > +add_isar_apt() { > + sudo -s <<'EOSUDO' > + set -e > + > + mkdir -p '${SCHROOT_DIR}/etc/apt/sources.list.d' > + echo 'deb [trusted=yes] file:///isar-apt ${DEBDISTRONAME} main' > \ > + '${SCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list' > + echo 'deb-src [trusted=yes] file:///isar-apt ${DEBDISTRONAME} main' >> \ > + '${SCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list' > + > + mkdir -p '${SCHROOT_DIR}/etc/apt/preferences.d' > + cat << EOF > '${SCHROOT_DIR}/etc/apt/preferences.d/isar-apt' > +Package: * > +Pin: release n=${DEBDISTRONAME} > +Pin-Priority: 1000 > +EOF > +EOSUDO > +} > + > +cleanup_isar_apt() { > + sudo -s <<'EOSUDO' > + set -e > + rm -f "${SCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list" > + rm -f "${SCHROOT_DIR}/etc/apt/preferences.d/isar-apt" > + rm -f "${SCHROOT_DIR}/etc/apt/sources.list.d/base-apt.list" > + rm -f "${SCHROOT_DIR}/etc/apt/apt.conf.d/50isar" > +EOSUDO > +} > + > +image_do_mounts() { > + sudo flock ${MOUNT_LOCKFILE} -c ' \ > + mkdir -p "${BUILDROOT_DEPLOY}" "${BUILDROOT_ROOTFS}" "${BUILDROOT_WORK}" > + mount --bind "${DEPLOY_DIR_IMAGE}" "${BUILDROOT_DEPLOY}" > + mount --bind "${IMAGE_ROOTFS}" "${BUILDROOT_ROOTFS}" > + mount --bind "${WORKDIR}" "${BUILDROOT_WORK}" > + ' > + sbuildchroot_do_mounts > +} > + > +BUILDROOT = "${SCHROOT_DIR}${PP}" > +BUILDROOT_DEPLOY = "${SCHROOT_DIR}${PP_DEPLOY}" > +BUILDROOT_ROOTFS = "${SCHROOT_DIR}${PP_ROOTFS}" > +BUILDROOT_WORK = "${SCHROOT_DIR}${PP_WORK}" > -- > 2.34.1 > >