* [PATCH] dpgk: Restore support for replacing pre-installed packages in sbuild-chroot
@ 2023-12-17 16:42 Jan Kiszka
2023-12-18 5:39 ` Srinuvasan Arjunan
0 siblings, 1 reply; 2+ messages in thread
From: Jan Kiszka @ 2023-12-17 16:42 UTC (permalink / raw)
To: isar-users; +Cc: Srinuvasan Arjunan, Kowalsky, Clara (T CED SES-DE)
From: Jan Kiszka <jan.kiszka@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.kiszka@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.
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] dpgk: Restore support for replacing pre-installed packages in sbuild-chroot
2023-12-17 16:42 [PATCH] dpgk: Restore support for replacing pre-installed packages in sbuild-chroot Jan Kiszka
@ 2023-12-18 5:39 ` Srinuvasan Arjunan
0 siblings, 0 replies; 2+ messages in thread
From: Srinuvasan Arjunan @ 2023-12-18 5:39 UTC (permalink / raw)
To: isar-users
[-- 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 --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-12-18 5:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-17 16:42 [PATCH] dpgk: Restore support for replacing pre-installed packages in sbuild-chroot Jan Kiszka
2023-12-18 5:39 ` Srinuvasan Arjunan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox