public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Srinuvasan Arjunan <srinuvasanasv@gmail.com>
To: isar-users <isar-users@googlegroups.com>
Subject: Re: [PATCH] dpgk: Restore support for replacing pre-installed packages in sbuild-chroot
Date: Sun, 17 Dec 2023 21:39:00 -0800 (PST)	[thread overview]
Message-ID: <60303f69-20ca-4592-b058-8b652339dcd3n@googlegroups.com> (raw)
In-Reply-To: <d6d7be6f-83f2-4798-a10a-697707db591d@siemens.com>


[-- Attachment #1.1: Type: text/plain, Size: 6784 bytes --]



On Sunday, December 17, 2023 at 10:12:16 PM UTC+5:30 Jan Kiszka wrote:

From: Jan Kiszka <jan.k...@siemens.com> 

During the migration to sbuild, support for using self-built packages in 
the build environment was lost if those were already part of the 
sbuild-chroot. This restores it by adding --apt-distupgrade to the 
sbuild call. But that is not enough because sbuild will only upgrade 
packages the already configured sources, not those specified via 
--extra-repository. 

We therefore switch back to configuring isar-apt during sbuild-chroot 
creation which is actually slightly simpler than using 
--extra-repository. 

As rootfs_configure_isar_apt configures the isar repo under /isar-apt, 
we bind-mount the one in /home/builder/${PN} to that folder. 

Another difference is that we now need to run apt-get update explicitly, 
but only for isar-apt. 

Signed-off-by: Jan Kiszka <jan.k...@siemens.com> 
--- 

My original plan was to use linux-libc-dev as test case for this, but we 
have some todos to make that work in cross-build scenarios (IOW, 
KERNEL_LIBC_DEV_DEPLOY is broken for cross). 

Clara, this avoids your workaround for xenomai-images that hard-codes 
the linux-libc-dev version in order to enforce an upgrade. 

Srinu, this does not fill an SBUILD_FLAVOR with self-built packages yet, 
but it should simplify it, obsoleting the need for any extra class.


    I hope this will not fill my requirements, this would be helpful in 
case if any package depends on self-built package
    during package generation via SBUILD, but most of the time am 
installing local packages directly in the SCHROOT
    during image generation part. 



meta/classes/dpkg-base.bbclass | 11 ++--------- 
meta/classes/dpkg.bbclass | 5 +++-- 
meta/classes/sbuild.bbclass | 3 +++ 
meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc | 2 -- 
4 files changed, 8 insertions(+), 13 deletions(-) 

diff --git a/meta/classes/dpkg-base.bbclass 
b/meta/classes/dpkg-base.bbclass 
index 7b054d3f..5c1f55c4 100644 
--- a/meta/classes/dpkg-base.bbclass 
+++ b/meta/classes/dpkg-base.bbclass 
@@ -19,8 +19,6 @@ DEPENDS:append:riscv64 = "${@' 
crossbuild-essential-riscv64' if d.getVar('ISAR_C 
DEB_BUILD_PROFILES ?= "" 
DEB_BUILD_OPTIONS ?= "" 

-ISAR_APT_REPO ?= "deb [trusted=yes] 
file:///home/builder/${PN}/isar-apt/${DISTRO}-${DISTRO_ARCH}/apt/${DISTRO} 
${DEBDISTRONAME} main" 
- 
python do_adjust_git() { 
import subprocess 

@@ -297,11 +295,9 @@ python do_devshell() { 
bb.build.exec_func('schroot_configure_ccache', d) 

schroot = d.getVar('SBUILD_CHROOT') 
- isar_apt = d.getVar('ISAR_APT_REPO') 
pkg_arch = d.getVar('PACKAGE_ARCH') 
build_arch = d.getVar('BUILD_ARCH') 
pp_pps = os.path.join(d.getVar('PP'), d.getVar('PPS')) 
- debdistroname = d.getVar('DEBDISTRONAME') 

install_deps = ":" if d.getVar('BB_CURRENTTASK') == "devshell_nodeps" else 
f"mk-build-deps -i \ 
--host-arch {pkg_arch} --build-arch {build_arch} \ 
@@ -310,15 +306,12 @@ python do_devshell() { 

termcmd = "schroot -d / -c {0} -u root -- sh -c ' \ 
cd {1}; \ 
- echo {2} > /etc/apt/sources.list.d/isar_apt.list; \ 
- echo \"Package: *\nPin: release n={3}\nPin-Priority: 1000\" > 
/etc/apt/preferences.d/isar-apt; \ 
- echo \"APT::Get::allow-downgrades 1;\" > /etc/apt/apt.conf.d/50isar-apt; 
\ 
apt-get -y -q update; \ 
- {4}; \ 
+ {2}; \ 
export PATH=$PATH_PREPEND:$PATH; \ 
$SHELL -i \ 
'" 
- oe_terminal(termcmd.format(schroot, pp_pps, isar_apt, debdistroname, 
install_deps), "Isar devshell", d) 
+ oe_terminal(termcmd.format(schroot, pp_pps, install_deps), "Isar 
devshell", d) 

bb.build.exec_func('schroot_delete_configs', d) 
} 
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass 
index 1d684e98..0cdb5792 100644 
--- a/meta/classes/dpkg.bbclass 
+++ b/meta/classes/dpkg.bbclass 
@@ -110,16 +110,17 @@ dpkg_runbuild() { 
DEB_SOURCE_NAME=$(dpkg-parsechangelog --show-field Source --file 
${WORKDIR}/${PPS}/debian/changelog) 
DSC_FILE=$(find ${WORKDIR} -name "${DEB_SOURCE_NAME}*.dsc" -maxdepth 1 
-print) 

- sbuild -A -n -c ${SBUILD_CHROOT} --extra-repository="${ISAR_APT_REPO}" \ 
+ sbuild -A -n -c ${SBUILD_CHROOT} \ 
--host=${PACKAGE_ARCH} --build=${BUILD_ARCH} ${profiles} \ 
--no-run-lintian --no-run-piuparts --no-run-autopkgtest 
--resolve-alternatives \ 
--bd-uninstallable-explainer=apt \ 
- --no-apt-update \ 
+ --no-apt-update --apt-distupgrade \ 
--chroot-setup-commands="echo \"Package: *\nPin: release 
n=${DEBDISTRONAME}\nPin-Priority: 1000\" > /etc/apt/preferences.d/isar-apt" 
\ 
--chroot-setup-commands="echo \"APT::Get::allow-downgrades 1;\" > 
/etc/apt/apt.conf.d/50isar-apt" \ 
--chroot-setup-commands="rm -f /var/log/dpkg.log" \ 
--chroot-setup-commands="mkdir -p ${deb_dir}" \ 
--chroot-setup-commands="ln -sf ${ext_deb_dir}/*.deb -t ${deb_dir}/" \ 
+ --chroot-setup-commands="apt-get update -o 
Dir::Etc::SourceList=\"sources.list.d/isar-apt.list\" -o 
Dir::Etc::SourceParts=\"-\" -o APT::Get::List-Cleanup=\"0\"" \ 
--finished-build-commands="rm -f 
${deb_dir}/sbuild-build-depends-main-dummy_*.deb" \ 
--finished-build-commands="[ -z "$(find ${deb_dir} -maxdepth 1 -name 
'*.deb' -print -quit)" ] || cp ${CP_FLAGS} ${deb_dir}/*.deb -t 
${ext_deb_dir}/" \ 
--finished-build-commands="cp /var/log/dpkg.log 
${ext_root}/dpkg_partial.log" \ 
diff --git a/meta/classes/sbuild.bbclass b/meta/classes/sbuild.bbclass 
index 995f7a54..3e9bf38b 100644 
--- a/meta/classes/sbuild.bbclass 
+++ b/meta/classes/sbuild.bbclass 
@@ -49,6 +49,9 @@ EOF 
fstab_downloads="${DL_DIR} /downloads none rw,bind 0 0" 
grep -qxF "${fstab_downloads}" ${sbuild_fstab} || echo "${fstab_downloads}" 
>> ${sbuild_fstab} 
fi 
+ 
+ fstab_isarapt="${WORKDIR}/isar-apt/${DISTRO}-${DISTRO_ARCH}/apt/${DISTRO} 
/isar-apt none rw,bind 0 0" 
+ grep -qxF "${fstab_isarapt}" ${sbuild_fstab} || echo "${fstab_isarapt}" 
>> ${sbuild_fstab} 
EOSUDO 
} 

diff --git a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc 
b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc 
index 938b8334..3634ad05 100644 
--- a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc 
+++ b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc 
@@ -56,8 +56,6 @@ SBUILD_CHROOT_DIR = "${WORKDIR}/rootfs" 
ROOTFSDIR = "${SBUILD_CHROOT_DIR}" 
ROOTFS_PACKAGES = "${SBUILD_CHROOT_PREINSTALL}" 

-# We don't need /etc/apt/sources.list.d/isar-apt.list' while it's handled 
by sbuild 
-ROOTFS_CONFIGURE_COMMAND:remove = "rootfs_configure_isar_apt" 
ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_isar_apt" 

DEPLOY_SCHROOT = "${@d.getVar('SCHROOT_' + 
d.getVar('SBUILD_VARIANT').upper() + '_DIR')}${SBUILD_SCHROOT_SUFFIX}" 
-- 
2.35.3 


[-- Attachment #1.2: Type: text/html, Size: 8285 bytes --]

      reply	other threads:[~2023-12-18  5:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-17 16:42 Jan Kiszka
2023-12-18  5:39 ` Srinuvasan Arjunan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=60303f69-20ca-4592-b058-8b652339dcd3n@googlegroups.com \
    --to=srinuvasanasv@gmail.com \
    --cc=isar-users@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox