[PATCH] sbuild: Declare using random build path

22 views
Skip to first unread message

Anton Mikanovich

unread,
Mar 18, 2025, 11:51:09 AM3/18/25
to isar-...@googlegroups.com, Anton Mikanovich
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 <ami...@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

Jan Kiszka

unread,
Mar 18, 2025, 5:20:51 PM3/18/25
to Anton Mikanovich, isar-...@googlegroups.com
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 <ami...@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

MOESSBAUER, Felix

unread,
Mar 19, 2025, 2:59:54 AM3/19/25
to ami...@ilbers.de, isar-...@googlegroups.com, Kiszka, Jan
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
--
Siemens AG
Linux Expert Center
Friedrich-Ludwig-Bauer-Str. 3
85748 Garching, Germany

Anton Mikanovich

unread,
Mar 19, 2025, 3:32:58 AM3/19/25
to Jan Kiszka, isar-...@googlegroups.com
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.

Uladzimir Bely

unread,
Mar 25, 2025, 12:57:38 PM3/25/25
to Anton Mikanovich, isar-...@googlegroups.com
Applied to next.

--
Best regards,
Uladzimir.


Reply all
Reply to author
Forward
0 new messages