From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7306407937029701632 X-Received: by 2002:a05:622a:134c:b0:418:134f:17f4 with SMTP id w12-20020a05622a134c00b00418134f17f4mr19149566qtk.22.1701155662985; Mon, 27 Nov 2023 23:14:22 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:ac8:7d13:0:b0:423:a0d4:8c61 with SMTP id g19-20020ac87d13000000b00423a0d48c61ls483347qtb.2.-pod-prod-09-us; Mon, 27 Nov 2023 23:14:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IETTdy491DIXnHIcV2qBjelUqvboWKad6InnugU+yE0nKoExTeG1dWJRN0uGI/+I6EXjnsV X-Received: by 2002:a05:622a:11d1:b0:41c:e028:7254 with SMTP id n17-20020a05622a11d100b0041ce0287254mr16556252qtk.34.1701155662268; Mon, 27 Nov 2023 23:14:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701155662; cv=none; d=google.com; s=arc-20160816; b=PrcSqLk3yloUgJnC8UtLNH3L4b9d80tX16KPMb3rRXKtrdN7jJAwJ05QovS1zo1H46 NAmM3eHqvoCockvfd38zd7yD0feTD+SXwTjGLu4hnk1JaHrPALNmIaHz/2QnWJMudwwL +ZBc5ltWjnWzpgvqtmEfvssKJPTAXvWOYpCq0X/W3gfHDI4AETJKRiu8D1Z/QDdN2iPI TiqIrIERmx8kG7CAoX2lDZ1yclaXVIq1HJyUV+4rdQmhVA5NZWhjqSn2kyCVxsX3XjEg xtwbr3LaoCrpRhREbmyAA8Ix9cH67d1Ej6ncSd8dCJmO7gsuJM4O6F/NiGFKOFg4LdIM wSZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:ironport-sdr; bh=T5IUsRMhNFtHuC5R/P4gvBBXfaeNT6xM4a8JFrBnpKM=; fh=gp5XRFzynoG7q2ar63X04ZhCpARwhO3WOMNieBEcr3I=; b=B39fnZSDJe7N+/MDSYabMhV7lbKjGkcd10CAUv2S9vPGhScniIrEi4kEsCNSK918VD xI/p2CDg6xQLA4Hp9U7x3ko9xb84oTyYhKCj70akee6nWD+6lpyGgs225nuBShWY1xKA mtxM1MhHEk54T/LibojtEIjZi/y3i36hgFxgpywh2J4VHpL1SUBV8LPQfDI7ADKCKb1l s7VX7yRm9vm4G82g0Ju3hN+/Em1VAcqOxjhsVKwr98dE0mNF2AQH2oC/oWixCaKEQxJ4 wVgIt1jZFcwj8NgJLReweWSKc9qzIRFgcH9efidzrSbLBRy4o1pWiV/2N8a14uXMY0JP YMiQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of srinuvasan_a@mentor.com designates 68.232.129.153 as permitted sender) smtp.mailfrom=Srinuvasan_A@mentor.com Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com. [68.232.129.153]) by gmr-mx.google.com with ESMTPS id ay14-20020a05622a228e00b00423977fa478si1718659qtb.3.2023.11.27.23.14.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 27 Nov 2023 23:14:22 -0800 (PST) Received-SPF: pass (google.com: domain of srinuvasan_a@mentor.com designates 68.232.129.153 as permitted sender) client-ip=68.232.129.153; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of srinuvasan_a@mentor.com designates 68.232.129.153 as permitted sender) smtp.mailfrom=Srinuvasan_A@mentor.com X-CSE-ConnectionGUID: GkdS+x9KThONjrk2YqPpxg== X-CSE-MsgGUID: O6FY8ITQRCedbSpjvcChWg== X-IronPort-AV: E=Sophos;i="6.04,233,1695715200"; d="scan'208";a="26972656" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 27 Nov 2023 23:14:20 -0800 IronPort-SDR: lvR/JnE+YYW3lIv6NuHOnEpQ3IHtrkoQu1MoooGzAntnJHUYQxLgA3DT5PtNt5iNzyEKcom8bp vrwS2OiIzSSRcB/aG5LZ+tdpO+fn3ezxdVtrLP65d0ofjIH4GzjeY2URd062x9wvvqkKUTdwFJ kD5TUZuKH85bISqn7y0F1hEuVLUvGMq1fZsU8ICyLyRwXCXmMXDPoa4mVRhIPyoKi+ZXB7iCDr Q67wCeyMhDzDlXYFfk0PL4RdbfkheGYPyOtHBuXXUpwQUSJ3K5nSoP9I2MxI0WLV/UlF/eEEuh wRA= From: Srinuvasan Arjunan To: CC: Srinuvasan A Subject: [RFC][PATCH] Add sbuildchroot class Date: Tue, 28 Nov 2023 12:44:01 +0530 Message-ID: <20231128071401.1894962-1-srinuvasan_a@mentor.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Return-Path: srinuvasan_a@mentor.com X-ClientProxiedBy: svr-orw-mbx-12.mgc.mentorg.com (147.34.90.212) To svr-orw-mbx-12.mgc.mentorg.com (147.34.90.212) X-TUID: 3WmalaDSLZp7 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