Control: severity -1 serious
On Sat, 17 Aug 2019 23:29:25 +0200 Michael Biebl <[email protected]> wrote:
> Package: debhelper
> Version: 12.5
> Severity: normal
>
> Hi Niels,
>
> systemd supports build profiles to skip the creation of udeb files.
> The full debian/rules file is at
> https://salsa.debian.org/systemd-team/systemd/blob/master/debian/rules
>
> So far, running "dpkg-buildpackage -Pnoudeb" worked nicely.
> Since the latest update of debhelper, I'm getting this instead:
>
> [...]
>
>
> Is this a regression in debhelper or is the systemd package doing
> something wrong? In that case, I would appreciate any pointers how to
> fix it.
>
> Regards,
> Michael
>
> [...]
Hi Michael,
Sorry to hear that it broke. It is definitely a regression and made me
aware that some of my recent changes will need to be rolled back as they
make builds under noudeb unreproducible with a build without noudeb[1].
I introduced some of this code to help the glibc maintainers, so they
would not have to work around dh_makeshlibs (admittedly, not the error
that broke the "noudeb" systemd build).
Suggestions for handling the systemd case while we sort this out:
* You can side-step the entire issue by relying on dh_makeshlibs new
auto-detection feature (please verify it works; I tested with an old
git snapshot and debhelper/12.3). I.e. remove --add-udeb=... and
bump Build-Depends on debhelper to debhelper (>= 12.3) assuming that
is acceptable to your backwards compat requirements. It would look
something like [2] (caveat emptor: old git snapshot)
* Alternatively, if you can live with noudeb being broken in sid for
while, then it will eventually be fixed in debhelper.
As for the glibc case:
* glibc has some udebs with *fewer* libraries than their deb
counterparts.
* So we need a filtering mechanism, but it cannot rely on the udeb
being built (as that would break the "noudeb" profile and its
1:1 reproducibility requirements for regular debs).
AFAICT, this reduces my options either:
* Some form of "--exclude" that only applies to udebs (or a positive
list of expected libraries).
* Or declaring this beyond what dh_makeshlibs can handle. This implies
that the glibc maintainers will have to use the --no-add-udeb (that
now should work) and generate the list manually.
- @Aurelien: This approach show work in sid now in case you need to
do a glibc upload and would be no worse than what you already have.
(you can use -O--no-add-udeb if you want to be compatible with
debhelper in stable)
Brilliant ideas welcome; I don't think that either of the above are
particular satisfying.
Thanks,
~Niels
[1] Required by
https://wiki.debian.org/BuildProfileSpec#Registered_profile_names
[2]:
> diff --git a/debian/rules b/debian/rules
> index 96ae11798..ac6992ea8 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -288,7 +288,6 @@ override_dh_shlibdeps:
>
> override_dh_makeshlibs:
> sed 's/SHARED_LIB_VERSION/$(PROJECT_VERSION)/' debian/shlibs.local.in
> > debian/shlibs.local
> - dh_makeshlibs -plibudev1 --add-udeb=libudev1-udeb --
> -c$(GENSYMBOLS_LEVEL)
> dh_makeshlibs -psystemd -Xlibsystemd-shared -- -c$(GENSYMBOLS_LEVEL)
> dh_makeshlibs --remaining-packages -- -c$(GENSYMBOLS_LEVEL)
>
The dh_makeshlibs --remaining-packages will now handle libudev1 + its udeb.