Control: severity -1 serious

On Sat, 17 Aug 2019 23:29:25 +0200 Michael Biebl <bi...@debian.org> 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.

Reply via email to