Bug#813384: libperl-dev: should not depend on perl anymore

Niko Tyni ntyni at debian.org
Fri Feb 5 08:47:53 UTC 2016


On Mon, Feb 01, 2016 at 04:41:44PM +0200, Niko Tyni wrote:
> Package: libperl-dev
> Version: 5.22.1-5

> I think the libperl-dev -> perl (-> perl-base) dependency is a bug now
> that libperl5.22 is M-A:same and has the full standard library. It should
> be enough for libperl-dev to Depend on libperl5.22.

On second thoughts, it's not quite that simple.

The supported way of embedding a perl interpreter (which is what every 
package linking against libperl does AFAIK) is to use the output of

 % perl -MExtUtils::Embed -e ccopts
 % perl -MExtUtils::Embed -e ldopts

which currently expand to

 -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/x86_64-linux-gnu/perl/5.22/CORE

 -Wl,-E  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/x86_64-linux-gnu/perl/5.22/CORE -lperl -ldl -lm -lpthread -lc -lcrypt

Both of these are obviously arch-dependent.

So even if the build dependencies become satisfiable for a cross build,
those packages will try to link against the build arch libperl rather
than the host arch one, and use the build arch perl headers.

Under the hood, the arch-dependent parts come from Config.pm. As
it happens, we currently ship symlinks to Config.pm in libperl5.22 under

 /usr/lib/<triplet>/perl/cross-config-<version>

as an experimental and undocumented measure mainly intended for cross
building Perl XS modules (arch:any lib*-perl packages).

As far as I can see, it should be possible to get things to work by
using ExtUtils::Embed with the above in @INC.

The ExtUtils::Embed calls are usually buried deep in upstream build
systems, and the above is very much Debian specific, so this would
probably introduce non-upstreamable patches. I'm not sure how wide
adoption we can expect for that.

Anyway, all the necessary components are in libperl5.22 so I suppose
this bug is still fixable by removing the perl dependency and adding some
documentation about how to achieve cross builds with the current setup.

Last, I note that if the perl dependency is removed, the symlink

 lrwxrwxrwx 1 root root 4 Dec  6  2013 /usr/share/doc/libperl-dev -> perl

needs to be turned into a regular directory or a symlink to libperl5.22.
-- 
Niko Tyni   ntyni at debian.org




More information about the Perl-maintainers mailing list