Bug#886494: polymake: Can't locate loadable object for module Polymake::Ext in @INC
Niko Tyni
ntyni at debian.org
Sat Jan 6 19:08:06 UTC 2018
Package: polymake
Version: 3.1-5
Severity: grave
X-Debbugs-Cc: perl at packages.debian.org
Running polymake currently fails with
$ polymake
Can't locate loadable object for module Polymake::Ext in @INC (@INC contains: /usr/share/polymake/perllib /usr/lib/polymake/perlx/5.26.0 /usr/lib/polymake/perlx /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/polymake/perllib/Polymake/Namespaces.pm line 17.
Compilation failed in require at /usr/share/polymake/perllib/Polymake/Namespaces.pm line 17.
BEGIN failed--compilation aborted at /usr/share/polymake/perllib/Polymake/Namespaces.pm line 17.
Compilation failed in require at /usr/share/polymake/perllib/Polymake.pm line 27.
BEGIN failed--compilation aborted at /usr/share/polymake/perllib/Polymake.pm line 27.
Compilation failed in require at /usr/bin/polymake line 162.
BEGIN failed--compilation aborted at /usr/bin/polymake line 162.
Apparently this is because it was built with Perl 5.26.0, but
we've since moved to 5.26.1.
There's an open binnmu request at #883933 but I don't think that's the
correct way to fix this as it makes no provisions for partial upgrades.
I see two better alternatives:
1) [preferrable] fix polymake not to install its extensions in a
versioned directory (currently /usr/lib/polymake/perlx/5.26.0).
This may be as simple as
--- a/lib/core/src/perl/Makefile.PL
+++ b/lib/core/src/perl/Makefile.PL
@@ -140,7 +140,7 @@ WriteMakefile(
LIBS => "$libpaths $AddLibs",
DEFINE => "-DPerlVersion=$numvers -Wno-nonnull".($coverage && ' -DPMCollectCoverage=1'),
INC => "-I$TOP/include/core",
- LIB => "\$(InstallDir)/perlx/$Config::Config{version}",
+ LIB => "\$(InstallDir)/perlx",
MAN3PODS => { },
@optimize,
);
but I haven't tested that (the package is huge...)
2) [less preferrable] add binnmu-safe strict dependencies on the current
Perl version. See for instance libdevel-cover-perl for an example of
how to do this. If you do this, please let perl at packages.debian.org know
so we can update
https://wiki.debian.org/PerlMaintenance#New_upstream_release_checklist
(and/or feel free to add to it yourself.)
I note that the confusing @INC list above (it has
/usr/lib/polymake/perlx/5.26.0 so it looks like it should work) is
because "use lib" will add versioned subdirectories to @INC if it
finds any, but will apparently *not* add arch-specific subdirectories
(like /usr/lib/polymake/perlx/5.26.0/x86_64-linux-gnu-thread-multi)
under those, and that's what would be needed here. I'm not quite sure
if this is a glitch in lib.pm's handling of binary-compatible versions
($Config{inc_version_list}).
Hope this helps a bit,
--
Niko
More information about the Perl-maintainers
mailing list