[debhelper-devel] "Rules-Requires-Root: no" vs ExtUtils::Install + dh_strip_nondeterminism

Niels Thykier niels at thykier.net
Sat Oct 28 06:34:00 UTC 2017


Axel Beckert:
> Hi,
> 
> I just tried to build systray-mdstat (a Perl-written application which
> uses Dist::Zilla as build-system) with "Rules-Requires-Root: no" and
> it FTBFS as follows:
> 

Hi,

Thanks for testing R³ in the wild. :)

> [...]
> 
> The same strange behaviour with permissions seem to happen for scripts
> I install into /usr/bin/.
> 
> So IMHO it's not dh_strip_nondeterminism's fault, also because it
> perl's open() which indeed does bail out on trying to write to files
> with 444 (i.e. read-only) permissions (at least as unprivileged user).
> 
> I suspect that this fact will more or less affect most perl-based
> packages (as ExtUtils::MakeMaker is the most common build-system for
> Perl modules and applications) and we can't move them easily to
> "Rules-Requires-Root: no" without fixes inside debhelper or
> per-package workarounds.
> 
> [...]
> 
> Anyone another idea how to fix this in general and (more efficient)
> inside debhelper?
> 
> 		Regards, Axel
> 

Basically, I see three options that are viable and useful:

 1) Fix ExtUtils::MakeMaker to DTRT (assuming upstream agrees with our
    choice of permissions)

 2) Drop the use of dh_strip_nondeterminism for packages that embrace
    R³ (e.g. via an completely empty override target).  Please note that
    the strip-nondeterminism tooling is a temporary measure and will
    eventually be retired if possible.
    - Reference: https://tracker.debian.org/news/845042

 3) Hack around this in the debhelper build system as a temporary
    measure by "fixing" the permissions from EU::MakeMaker.  I believe
    this is the "perl_makemaker.pm" build system.

For me, the proper solution is 1) while 2) and 3) are work-arounds and
hacks.  But 2) makes the package build slightly faster and shows a
higher confidence in the reproducible properties of the package, where
3) makes it a bit slower and punts the strip-nondeterminism issue for
later.  Given how unlikely it is that strip-nondeterminism provides any
value for the average perl package:

 * I would recommend that the perl team to go with 2) we need a
   temporary measure while 1) is being fixed.

Thanks,
~Niels



More information about the debhelper-devel mailing list