Message ID | 20250318155058.263431-1-amikan@ilbers.de |
---|---|
State | Accepted, archived |
Headers | show |
Series | sbuild: Declare using random build path | expand |
On 18.03.25 16:50, Anton Mikanovich wrote: > After 0.87.1 version of sbuild BUILD_PATH value is no more random by > default. It is better for reproducibility but breaks concurrent builds > because this path got removed during cleanup stage. Can you elaborate? > To keep sbuild choose a random build location (just like it is in older > package versions) set the empty string to build-path option. Err, no. We clearly need reproducibility as well. Jan > > More details can be found in sbuild commit: > 14cc3a41f7eed7d9bd62e3c443d077b0f345cb24 > > This fixes Isar building on Trixie hosts. > > Signed-off-by: Anton Mikanovich <amikan@ilbers.de> > --- > meta/classes/dpkg.bbclass | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass > index 64404103..0e5a495d 100644 > --- a/meta/classes/dpkg.bbclass > +++ b/meta/classes/dpkg.bbclass > @@ -124,7 +124,7 @@ dpkg_runbuild() { > --finished-build-commands="rm -f ${deb_dir}/sbuild-build-depends-main-dummy_*.deb" \ > --finished-build-commands="find ${deb_dir} -maxdepth 1 -type f -name '*.deb' -print -exec cp ${CP_FLAGS} -t ${ext_deb_dir}/ {} +" \ > --finished-build-commands="cp /var/log/dpkg.log ${ext_root}/dpkg_partial.log" \ > - --build-dir=${WORKDIR} --dist="${DEBDISTRONAME}" ${DSC_FILE} > + --build-path="" --build-dir=${WORKDIR} --dist="${DEBDISTRONAME}" ${DSC_FILE} > > sbuild_dpkg_log_export "${WORKDIR}/rootfs/dpkg_partial.log" > deb_dl_dir_export "${WORKDIR}/rootfs" "${distro}"
On Tue, 2025-03-18 at 22:20 +0100, 'Jan Kiszka' via isar-users wrote: > On 18.03.25 16:50, Anton Mikanovich wrote: > > After 0.87.1 version of sbuild BUILD_PATH value is no more random > > by > > default. It is better for reproducibility but breaks concurrent > > builds > > because this path got removed during cleanup stage. > > Can you elaborate? > > > To keep sbuild choose a random build location (just like it is in > > older > > package versions) set the empty string to build-path option. > > Err, no. We clearly need reproducibility as well. According to the "reproducible" definition of Debian, this change should not matter, as long as we apply the -fdebug-prefix-map switch on compilation (which we do). If this change really does not break reproducibility needs to be verified, though. Felix > > Jan > > > > > More details can be found in sbuild commit: > > 14cc3a41f7eed7d9bd62e3c443d077b0f345cb24 > > > > This fixes Isar building on Trixie hosts. > > > > Signed-off-by: Anton Mikanovich <amikan@ilbers.de> > > --- > > meta/classes/dpkg.bbclass | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass > > index 64404103..0e5a495d 100644 > > --- a/meta/classes/dpkg.bbclass > > +++ b/meta/classes/dpkg.bbclass > > @@ -124,7 +124,7 @@ dpkg_runbuild() { > > --finished-build-commands="rm -f ${deb_dir}/sbuild-build- > > depends-main-dummy_*.deb" \ > > --finished-build-commands="find ${deb_dir} -maxdepth 1 - > > type f -name '*.deb' -print -exec cp ${CP_FLAGS} -t ${ext_deb_dir}/ > > {} +" \ > > --finished-build-commands="cp /var/log/dpkg.log > > ${ext_root}/dpkg_partial.log" \ > > - --build-dir=${WORKDIR} --dist="${DEBDISTRONAME}" > > ${DSC_FILE} > > + --build-path="" --build-dir=${WORKDIR} -- > > dist="${DEBDISTRONAME}" ${DSC_FILE} > > > > sbuild_dpkg_log_export "${WORKDIR}/rootfs/dpkg_partial.log" > > deb_dl_dir_export "${WORKDIR}/rootfs" "${distro}" > > -- > Siemens AG, Foundational Technologies > Linux Expert Center
18/03/2025 23:20, Jan Kiszka wrote: > On 18.03.25 16:50, Anton Mikanovich wrote: >> After 0.87.1 version of sbuild BUILD_PATH value is no more random by >> default. It is better for reproducibility but breaks concurrent builds >> because this path got removed during cleanup stage. > Can you elaborate? > In this case new default BUILD_PATH=/build/reproducible-path got shared between multiple sbuild instances for all the packages. When the first package finish the built it removes /build/reproducible-path, which results in other sbuild processes fails with errors like: | E: Failed to change to directory �/build/reproducible-path�: No such file or directory So we just won't use static BUILD_PATH on trixie for now. >> To keep sbuild choose a random build location (just like it is in older >> package versions) set the empty string to build-path option. > Err, no. We clearly need reproducibility as well. As Felix already mentioned, this change do not brake anything, but just do not apply additional reproducibility improvement on trixie hosts. Actually there will be no any changes in paths on bookworm and lower, but trixie will behave in the same way as bookworm currently does.
On Tue, 2025-03-18 at 17:50 +0200, Anton Mikanovich wrote: > After 0.87.1 version of sbuild BUILD_PATH value is no more random by > default. It is better for reproducibility but breaks concurrent > builds > because this path got removed during cleanup stage. > To keep sbuild choose a random build location (just like it is in > older > package versions) set the empty string to build-path option. > > More details can be found in sbuild commit: > 14cc3a41f7eed7d9bd62e3c443d077b0f345cb24 > > This fixes Isar building on Trixie hosts. > > Signed-off-by: Anton Mikanovich <amikan@ilbers.de> > --- > meta/classes/dpkg.bbclass | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass > index 64404103..0e5a495d 100644 > --- a/meta/classes/dpkg.bbclass > +++ b/meta/classes/dpkg.bbclass > @@ -124,7 +124,7 @@ dpkg_runbuild() { > --finished-build-commands="rm -f ${deb_dir}/sbuild-build- > depends-main-dummy_*.deb" \ > --finished-build-commands="find ${deb_dir} -maxdepth 1 -type > f -name '*.deb' -print -exec cp ${CP_FLAGS} -t ${ext_deb_dir}/ {} +" > \ > --finished-build-commands="cp /var/log/dpkg.log > ${ext_root}/dpkg_partial.log" \ > - --build-dir=${WORKDIR} --dist="${DEBDISTRONAME}" ${DSC_FILE} > + --build-path="" --build-dir=${WORKDIR} -- > dist="${DEBDISTRONAME}" ${DSC_FILE} > > sbuild_dpkg_log_export "${WORKDIR}/rootfs/dpkg_partial.log" > deb_dl_dir_export "${WORKDIR}/rootfs" "${distro}" > -- > 2.34.1 Applied to next.
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass index 64404103..0e5a495d 100644 --- a/meta/classes/dpkg.bbclass +++ b/meta/classes/dpkg.bbclass @@ -124,7 +124,7 @@ dpkg_runbuild() { --finished-build-commands="rm -f ${deb_dir}/sbuild-build-depends-main-dummy_*.deb" \ --finished-build-commands="find ${deb_dir} -maxdepth 1 -type f -name '*.deb' -print -exec cp ${CP_FLAGS} -t ${ext_deb_dir}/ {} +" \ --finished-build-commands="cp /var/log/dpkg.log ${ext_root}/dpkg_partial.log" \ - --build-dir=${WORKDIR} --dist="${DEBDISTRONAME}" ${DSC_FILE} + --build-path="" --build-dir=${WORKDIR} --dist="${DEBDISTRONAME}" ${DSC_FILE} sbuild_dpkg_log_export "${WORKDIR}/rootfs/dpkg_partial.log" deb_dl_dir_export "${WORKDIR}/rootfs" "${distro}"
After 0.87.1 version of sbuild BUILD_PATH value is no more random by default. It is better for reproducibility but breaks concurrent builds because this path got removed during cleanup stage. To keep sbuild choose a random build location (just like it is in older package versions) set the empty string to build-path option. More details can be found in sbuild commit: 14cc3a41f7eed7d9bd62e3c443d077b0f345cb24 This fixes Isar building on Trixie hosts. Signed-off-by: Anton Mikanovich <amikan@ilbers.de> --- meta/classes/dpkg.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)