Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.92k stars 549 forks source link

libs empty on Ubuntu 11.04 alpha (linux 2.6.38-7-generic #38-Ubuntu) #11206

Closed p5pRT closed 13 years ago

p5pRT commented 13 years ago

Migrated from rt.perl.org#86854 (status was 'resolved')

Searchable as RT86854$

p5pRT commented 13 years ago

From ilmari.vacklin@cs.helsinki.fi

Hi\,

I'm trying to compile perl-5.12.3 on Ubuntu 11.04 alpha 3\, 32-bit variant. Configure fails to find any libs to link against\, which causes make to fail because e.g. pow() isn't found (-lm is not used).

I've attached myconfig's output.

Any ideas what's going on?

-- Ilmari Vacklin

p5pRT commented 13 years ago

From ilmari.vacklin@cs.helsinki.fi

perl-5.12.3.myconfig

p5pRT commented 13 years ago

From @obra

I have made this bug a 5.14 blocker. It'd really suck if we didn't work right on the latest ubuntu when it came out.

p5pRT commented 13 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 13 years ago

From @iabyn

I'm just forwarding this email back to the list (and to RT)\, because for some reason it hasn't shown up on the ticket\, and possibly the OP hasn't seen it.

Also\, a question to the OP​: does your Ubuntu alpha installation already have a system perl installed on it; if so\, could you post the output of /usr/bin/perl -V ?

----- Forwarded message from Andy Dougherty \doughera@​lafayette\.edu -----

Date​: Thu\, 24 Mar 2011 12​:37​:17 -0400 (EDT) From​: Andy Dougherty \doughera@​lafayette\.edu To​: Perl Porters \perl5\-porters@​perl\.org Subject​: Re​: [perl #86854] libs empty on Ubuntu 11.04 alpha (linux   2.6.38-7-generic #38-Ubuntu) Message-ID​: \alpine\.DEB\.2\.00\.1103241207540\.22420@​fractal\.phys\.lafayette\.edu

On Wed\, 23 Mar 2011\, Ilmari Vacklin wrote​:

# New Ticket Created by Ilmari Vacklin # Please include the string​: [perl #86854] # in the subject line of all future correspondence about this issue. # \<URL​: http​://rt.perl.org/rt3/Ticket/Display.html?id=86854 >

Hi\,

I'm trying to compile perl-5.12.3 on Ubuntu 11.04 alpha 3\, 32-bit variant. Configure fails to find any libs to link against\, which causes make to fail because e.g. pow() isn't found (-lm is not used).

By default\, Configure looks in the following directories for libraries​:

  /usr/local/lib /lib /usr/lib /usr/lib64

It looks like Ubuntu has moved the math library (and presumably other libraries as well) out of /lib/ and /usr/lib into /lib/i386-linux-gnu. (I presume other names are used for other architectures\, but I don't know what those other names actually are.)

The quick workaround is to tell Configure about the new directory​:

  sh Configure -Dplibpth=/lib/i386-linux-gnu -de

I don't know how Ubuntu is managing to compile perl for itself without such a workaround (or its equivalent).

Assuming this is a deliberate change in Ubuntu\, the fix for 5.14 will be to detect this situation in the hints/linux.sh hint file and add the appropriate plibpth values automatically. In order to do that\, I could use some help​:

Does anyone understand this new organization enough to suggest how to coax the necessary directory name (e.g. /lib/i386-linux-gnu) out of the build tools? (For example\, what should it be on an amd64 system? How about PPC? SPARC? Are there trailing 32s or 64s on any of those names? etc.)

Clearly\, however\, the compiler on the system has been taught to look in the appropriate directories. In the long term\, perhaps Configure ought to consider looking for a library by trying to use it   cc -o try try.c -lm rather than trying to find the file libm.*.

--   Andy Dougherty doughera@​lafayette.edu

----- End forwarded message -----

-- Indomitable in retreat\, invincible in advance\, insufferable in victory   -- Churchill on Montgomery

p5pRT commented 13 years ago

From @doughera88

This is also listed in the Ubuntu bug tracker as

  https://bugs.launchpad.net/ubuntu/natty/+source/perl/+bug/739693

I have posted a follow-up request there.

p5pRT commented 13 years ago

From @salva

On 03/30/2011 05​:04 PM\, Dave Mitchell wrote​:

I'm just forwarding this email back to the list (and to RT)\, because for some reason it hasn't shown up on the ticket\, and possibly the OP hasn't seen it.

Also\, a question to the OP​: does your Ubuntu alpha installation already have a system perl installed on it; if so\, could you post the output of /usr/bin/perl -V ?

The output of perl -V is attached.

I come across the same bug again today while trying to compile blead on the upcoming Ubuntu release. Besides libm\, librt is also missing.

And this is for a blead perl compiled adding "-lm -lrt" into the broken ld command executions by hand​:

$ ldd /usr/local/perl/blead/bin//perl   linux-vdso.so.1 => (0x00007fff93dff000)   librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007febb56a0000)   libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007febb541b000)   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007febb5075000)   libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007febb4e57000)   /lib64/ld-linux-x86-64.so.2 (0x00007febb58d1000)

$ uname -a Linux topo 2.6.38-7-generic #39-Ubuntu SMP Fri Mar 25 21​:24​:57 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

- Salva

p5pRT commented 13 years ago

From @salva

Summary of my perl5 (revision 5 version 10 subversion 1) configuration​:  
  Platform​:   osname=linux\, osvers=2.6.24-28-server\, archname=x86_64-linux-gnu-thread-multi   uname='linux allspice 2.6.24-28-server #1 smp wed aug 18 21​:17​:51 utc 2010 x86_64 x86_64 x86_64 gnulinux '   config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -des'   hint=recommended\, useposix=true\, d_sigaction=define   useithreads=define\, usemultiplicity=define   useperlio=define\, d_sfio=undef\, uselargefiles=define\, usesocks=undef   use64bitint=define\, use64bitall=define\, uselongdouble=undef   usemymalloc=n\, bincompat5005=undef   Compiler​:   cc='cc'\, ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'\,   optimize='-O2 -g'\,   cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'   ccversion=''\, gccversion='4.5.2'\, gccosandvers=''   intsize=4\, longsize=8\, ptrsize=8\, doublesize=8\, byteorder=12345678   d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16   ivtype='long'\, ivsize=8\, nvtype='double'\, nvsize=8\, Off_t='off_t'\, lseeksize=8   alignbytes=8\, prototype=define   Linker and Libraries​:   ld='cc'\, ldflags =' -fstack-protector -L/usr/local/lib'   libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64   libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt   perllibs=-ldl -lm -lpthread -lc -lcrypt   libc=/lib/libc-2.12.2.so\, so=so\, useshrplib=true\, libperl=libperl.so.5.10.1   gnulibc_version='2.12.2'   Dynamic Linking​:   dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags='-Wl\,-E'   cccdlflags='-fPIC'\, lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'

Characteristics of this binary (from libperl)​:   Compile-time options​: MULTIPLICITY PERL_DONT_CREATE_GVSV   PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL   USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES   USE_PERLIO USE_REENTRANT_API   Locally applied patches​:   DEBPKG​:debian/arm_thread_stress_timeout - http​://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts   DEBPKG​:debian/cpan_config_path - Set location of CPAN​::Config to /etc/perl as /usr may not be writable.   DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.   DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove overly restrictive DB_File version check.   DEBPKG​:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.   DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @​INC directories.   DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.   DEBPKG​:debian/extutils_hacks - Various debian-specific ExtUtils changes   DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.   DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.   DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.   DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.   DEBPKG​:debian/m68k_thread_stress - http​://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.   DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian   DEBPKG​:debian/module_build_man_extensions - http​://bugs.debian.org/479460 Adjust Module​::Build manual page extensions for the Debian Perl policy   DEBPKG​:debian/perl_synopsis - http​://bugs.debian.org/278323 Rearrange perl.pod   DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.   DEBPKG​:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File.   DEBPKG​:fixes/assorted_docs - http​://bugs.debian.org/443733 [384f06a] Math​::BigInt​::CalcEmu documentation grammar fix   DEBPKG​:fixes/net_smtp_docs - http​://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net​::SMTP 'Port' option   DEBPKG​:fixes/processPL - http​://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules.   DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local   DEBPKG​:fixes/pod2man-index-backslash - http​://bugs.debian.org/521256 Escape backslashes in .IX entries   DEBPKG​:debian/disable-zlib-bundling - Disable zlib bundling in Compress​::Raw​::Zlib   DEBPKG​:fixes/kfreebsd_cppsymbols - http​://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD.   DEBPKG​:debian/cpanplus_definstalldirs - http​://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.   DEBPKG​:debian/cpanplus_config_path - Save local versions of CPANPLUS​::Config​::System into /etc/perl.   DEBPKG​:fixes/kfreebsd-filecopy-pipes - http​://bugs.debian.org/537555 [16f708c] Fix File​::Copy​::copy with pipes on GNU/kFreeBSD   DEBPKG​:fixes/anon-tmpfile-dir - http​://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file   DEBPKG​:fixes/abstract-sockets - http​://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets.   DEBPKG​:fixes/hurd_cppsymbols - http​://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd.   DEBPKG​:fixes/autodie-flock - http​://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc   DEBPKG​:fixes/archive-tar-instance-error - http​://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive​::Tar instance error strings from each other   DEBPKG​:fixes/positive-gpos - http​://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \G crash on first match   DEBPKG​:debian/devel-ppport-ia64-optim - http​://bugs.debian.org/548943 Work around an ICE on ia64   DEBPKG​:fixes/trie-logic-match - http​://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626]   DEBPKG​:fixes/hppa-thread-eagain - http​://bugs.debian.org/554218 make the threads-shared test suite more robust\, fixing failures on hppa   DEBPKG​:fixes/crash-on-undefined-destroy - http​://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method   DEBPKG​:fixes/tainted-errno - http​://bugs.debian.org/574129 [perl #61976] [be1cf43] fix an errno stringification bug in taint mode   DEBPKG​:fixes/safe-upgrade - http​://bugs.debian.org/582978 Upgrade Safe.pm to 2.25\, fixing CVE-2010-1974   DEBPKG​:fixes/tell-crash - http​://bugs.debian.org/578577 [f4817f3] Fix a tell() crash on bad arguments.   DEBPKG​:fixes/format-write-crash - http​://bugs.debian.org/579537 [perl #22977] [421f30e] Fix a crash in format/write   DEBPKG​:fixes/arm-alignment - http​://bugs.debian.org/289884 [f1c7503] Prevent gcc from optimizing the alignment test away on armel   DEBPKG​:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed   DEBPKG​:fixes/hurd-ccflags - http​://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them   DEBPKG​:debian/squelch-locale-warnings - http​://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts   DEBPKG​:fixes/lc-numeric-docs - http​://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes   DEBPKG​:fixes/lc-numeric-sprintf - http​://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants   DEBPKG​:fixes/concat-stack-corruption - http​://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding'   DEBPKG​:fixes/cgi-multiline-header - http​://bugs.debian.org/606995 [CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and multiline header vulnerabilities   DEBPKG​:fixes/h2ph-gcc-4.5 - http​://bugs.debian.org/599933 [8d66b3f] Fix h2ph and test   DEBPKG​:fixes/threads-tmps-crash - [perl #70411] [24855df] Conditionally compile tmps stack cleanup code   DEBPKG​:patchlevel - http​://bugs.debian.org/567489 List packaged patches for 5.10.1-17ubuntu1 in patchlevel.h   Built under linux   Compiled at Feb 15 2011 15​:57​:07   @​INC​:   /etc/perl   /usr/local/lib/perl/5.10.1   /usr/local/share/perl/5.10.1   /usr/lib/perl5   /usr/share/perl5   /usr/lib/perl/5.10   /usr/share/perl/5.10   /usr/local/lib/site_perl   /usr/local/lib/perl/5.10.0   /usr/local/share/perl/5.10.0   .

p5pRT commented 13 years ago

From @obra

On a whim\, I cloned the following code from hints/cygwin.sh into hints/linux.sh​:

  plibpth=`gcc -print-file-name=libc.a`   plibpth=`dirname $plibpth`   plibpth=`cd $plibpth && pwd`

This is enough goo to actually get Perl building on ubuntu 11.04 and other similar multiarch distributions. But it's ungodly brittle and makes too many assumptions.

Could someone who knows something about how to write hints code portably and safely perhaps gin us up an equivalent stanza with the right bulletproofing? (Or some better way to do this)

Thanks!

p5pRT commented 13 years ago

From @doughera88

On Wed\, 13 Apr 2011\, Jesse via RT wrote​:

On a whim\, I cloned the following code from hints/cygwin.sh into hints/linux.sh​:

plibpth=\`gcc \-print\-file\-name=libc\.a\`
plibpth=\`dirname $plibpth\`
plibpth=\`cd $plibpth && pwd\`

This is enough goo to actually get Perl building on ubuntu 11.04 and other similar multiarch distributions. But it's ungodly brittle and makes too many assumptions.

Could someone who knows something about how to write hints code portably and safely perhaps gin us up an equivalent stanza with the right bulletproofing? (Or some better way to do this)

Currently\, I'm fiddling with

# Configure sets trnl='\n'; plibpth=`gcc -print-search-dirs | grep libraries | cut -f2- -d= | \ tr '​:' $trnl | grep -v 'gcc' | uniq`

For Linux only\, where 'readlink' is likely to be available\, I've also fiddled with

pblibpth=`gcc -print-search-dirs | grep libraries |cut -f2- -d= | \   sed -e's/\​:/\n/g' | xargs -n1 readlink -f | grep -v 'gcc | uniq`

I want to check whether this can safely go in a cc.cbu call-back unit\, where we know the name of the compiler be used. I just haven't checked whether that's too late for setting plibpth.

--   Andy Dougherty doughera@​lafayette.edu

p5pRT commented 13 years ago

From @doughera88

Could a few people with various Linux distributions give this a try (and particuarly with Ubuntu 11.04 or later)?

If it looks ok\, could someone please apply it? (I probably won't be able to do so in a timely manner.)

Inline Patch ```diff diff --git a/hints/linux.sh b/hints/linux.sh index ac27f23..e03ab1e 100644 --- a/hints/linux.sh +++ b/hints/linux.sh @@ -151,6 +151,24 @@ case "$optimize" in ;; esac +# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries +# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us +# where to look. We don't want gcc's own libraries, however, so we +# filter those out. +# This could be conditional on Unbuntu, but other distributions may +# follow suit, and this scheme seems to work even on rather old gcc's. +# This unconditionally uses gcc because even if the user is using another +# compiler, we still need to find the math library and friends, and I don't +# know how other compilers will cope with that situation. +# Still, as an escape hatch, allow Configure command line overrides to +# plibpth to bypass this check. +case "$plibpth" in +'') plibpth=`gcc -print-search-dirs | grep libraries | + cut -f2- -d= | tr ':' $trnl | grep -v 'gcc'` + plibpth="$plibpth" # Collapse all entries on one line + ;; +esac + # Are we using ELF? Thanks to Kenneth Albanowski # for this test. cat >try.c <<'EOM' -- ```

  Andy Dougherty doughera@​lafayette.edu   Dept. of Physics   Lafayette College\, Easton PA 18042

p5pRT commented 13 years ago

From @obra

On Fri\, Apr 15\, 2011 at 10​:22​:47AM -0400\, Andy Dougherty wrote​:

Could a few people with various Linux distributions give this a try (and particuarly with Ubuntu 11.04 or later)?

If it looks ok\, could someone please apply it? (I probably won't be able to do so in a timely manner.)

It works for me on Ubuntu Natty x86_64.

I'd love to hear about reports on slackware ppc or something equally ancient and esoteric.

p5pRT commented 13 years ago

From Tom.Horsley@ccur.com

I've got a lot of various vintage virtual machines installed for testing\, so I'm running this command on some of the older ones​:

gcc -print-search-dirs | grep libraries | cut -f2- -d= | tr '​:' '\n' | grep -v gcc

Debian GNU/Linux 4.0 (etch) prints​:

/lib/i486-linux-gnu/4.1.2/ /lib/ /usr/lib/i486-linux-gnu/4.1.2/ /usr/lib/

Fedora release 8 (Werewolf) prints​:

/lib/i386-redhat-linux/4.1.2/ /lib/ /usr/lib/i386-redhat-linux/4.1.2/ /usr/lib/

openSUSE 10.2 (i586) prints​:

/lib/i586-suse-linux/4.1.2/ /lib/ /usr/lib/i586-suse-linux/4.1.2/ /usr/lib/

I think those are my oldest virtual machines. Seems to work on all of them.

p5pRT commented 13 years ago

From @iabyn

On Fri\, Apr 15\, 2011 at 10​:22​:47AM -0400\, Andy Dougherty wrote​:

Could a few people with various Linux distributions give this a try (and particuarly with Ubuntu 11.04 or later)?

Works fine on Fedora 13 x86_64

-- But Pity stayed his hand. "It's a pity I've run out of bullets"\, he thought. -- "Bored of the Rings"

p5pRT commented 13 years ago

From kjw@pathillogical.com

Missed the "Reply all" button -- apologies to Tom for the spurious e-mail.

Results for FC5 i386 and FC4 x86_64 below.

Cheers\,

kjw

---------- Forwarded message ---------- From​: Kevin J. Woolley \kjw@&#8203;pathillogical\.com Date​: 15 April 2011 10​:07 Subject​: Re​: [perl #86854] libs empty on Ubuntu 11.04 alpha (linux 2.6.38-7-generic #38-Ubuntu) To​: Tom Horsley \tom\.horsley@&#8203;ccur\.com

On 15 April 2011 08​:00\, Tom Horsley \tom\.horsley@&#8203;ccur\.com wrote​:

I've got a lot of various vintage virtual machines installed for testing\, so I'm running this command on some of the older ones​:

gcc -print-search-dirs | grep libraries | cut -f2- -d= | tr '​:' '\n' | grep -v gcc

Fedora 5 i386​:

/lib/i386-redhat-linux/4.1.1/ /lib/ /usr/lib/i386-redhat-linux/4.1.1/ /usr/lib/

Fedora 4 x86_64​:

/lib/x86_64-redhat-linux/4.0.0/ /lib/ /usr/lib/x86_64-redhat-linux/4.0.0/ /usr/lib/

I think that's as old and weird as I get.

Cheers\,

kjw

p5pRT commented 13 years ago

From @obra

Thanks. Applied as 40f0262.

On Fri\, Apr 15\, 2011 at 10​:22​:47AM -0400\, Andy Dougherty wrote​:

Could a few people with various Linux distributions give this a try (and particuarly with Ubuntu 11.04 or later)?

If it looks ok\, could someone please apply it? (I probably won't be able to do so in a timely manner.)

diff --git a/hints/linux.sh b/hints/linux.sh index ac27f23..e03ab1e 100644 --- a/hints/linux.sh +++ b/hints/linux.sh @​@​ -151\,6 +151\,24 @​@​ case "$optimize" in ;; esac

+# Ubuntu 11.04 (and later\, presumably) doesn't keep most libraries +# (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us +# where to look. We don't want gcc's own libraries\, however\, so we +# filter those out. +# This could be conditional on Unbuntu\, but other distributions may +# follow suit\, and this scheme seems to work even on rather old gcc's. +# This unconditionally uses gcc because even if the user is using another +# compiler\, we still need to find the math library and friends\, and I don't +# know how other compilers will cope with that situation. +# Still\, as an escape hatch\, allow Configure command line overrides to +# plibpth to bypass this check. +case "$plibpth" in +'') plibpth=`gcc -print-search-dirs | grep libraries | + cut -f2- -d= | tr '​:' $trnl | grep -v 'gcc'` + plibpth="$plibpth" # Collapse all entries on one line + ;; +esac + # Are we using ELF? Thanks to Kenneth Albanowski \kjahds@&#8203;kjahds\.com # for this test. cat >try.c \<\<'EOM'

-- Andy Dougherty doughera@​lafayette.edu Dept. of Physics Lafayette College\, Easton PA 18042

--

p5pRT commented 13 years ago

@obra - Status changed from 'open' to 'resolved'

p5pRT commented 13 years ago

From rmbarker.cpan@btinternet.com

The previous patch creates library paths with trailing / this leads to effective duplicate paths in libpth

This further patch fixes the construction of plibpth to suppress trailing /

Robin

p5pRT commented 13 years ago

From rmbarker.cpan@btinternet.com

0001-suppress-trailing-in-plibpth.patch ```diff From 2650d6916f193686ae1e1f8e89d53934b421c159 Mon Sep 17 00:00:00 2001 From: Robin Barker Date: Mon, 18 Apr 2011 14:48:49 +0100 Subject: [PATCH] suppress trailing / in plibpth --- hints/linux.sh | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hints/linux.sh b/hints/linux.sh index e03ab1e..70e4bd0 100644 --- a/hints/linux.sh +++ b/hints/linux.sh @@ -164,7 +164,7 @@ esac # plibpth to bypass this check. case "$plibpth" in '') plibpth=`gcc -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc'` + cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` plibpth="$plibpth" # Collapse all entries on one line ;; esac -- 1.7.0.4 ```
p5pRT commented 13 years ago

From @doughera88

On Mon\, 18 Apr 2011\, Robin Barker wrote​:

The previous patch creates library paths with trailing / this leads to effective duplicate paths in libpth

This further patch fixes the construction of plibpth to suppress trailing /

Good catch. I suspect those were harmless\, but certainly unintended.

Your patch looks fine. However\, looking at my lines right below it\, I realized they didn't do what I intended (and I didn't adequate test them.) Specifically\, plibpth doesn't end up all on a single line\, and running
  ./perl -Ilib -V​:plibpth comes up curiously empty.

Here's a fix that includes your patch as well as the correct incantation to collapse plibpth onto a single line.

Inline Patch ```diff diff --git a/hints/linux.sh b/hints/linux.sh index e03ab1e..970640c 100644 --- a/hints/linux.sh +++ b/hints/linux.sh @@ -164,8 +164,10 @@ esac # plibpth to bypass this check. case "$plibpth" in '') plibpth=`gcc -print-search-dirs | grep libraries | - cut -f2- -d= | tr ':' $trnl | grep -v 'gcc'` - plibpth="$plibpth" # Collapse all entries on one line + cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'` + set X $plibpth # Collapse all entries on one line + shift + plibpth="$*" ;; esac -- ```

  Andy Dougherty doughera@​lafayette.edu

p5pRT commented 13 years ago

From @iabyn

On Mon\, Apr 18\, 2011 at 01​:42​:22PM -0400\, Andy Dougherty wrote​:

On Mon\, 18 Apr 2011\, Robin Barker wrote​:

The previous patch creates library paths with trailing / this leads to effective duplicate paths in libpth

This further patch fixes the construction of plibpth to suppress trailing /

Good catch. I suspect those were harmless\, but certainly unintended.

Your patch looks fine. However\, looking at my lines right below it\, I realized they didn't do what I intended (and I didn't adequate test them.) Specifically\, plibpth doesn't end up all on a single line\, and running
./perl -Ilib -V​:plibpth comes up curiously empty.

I think I fixed that with

  commit ebf3760c26025a6c498c5d5dd2c9d1a8a46be64b   Author​: David Mitchell \davem@&#8203;iabyn\.com   AuthorDate​: Mon Apr 18 19​:29​:52 2011 +0100   Commit​: David Mitchell \davem@&#8203;iabyn\.com   CommitDate​: Mon Apr 18 19​:29​:52 2011 +0100

  configpm​: handle multi-line key='value\n...'

Here's a fix that includes your patch as well as the correct incantation to collapse plibpth onto a single line.

I independently committed a separate collapsing fix\, but yours looks more robust and includes the trailing / removal\, so I've reverted mine and applied yours instead\, as

  bcab1245a0693be445ce018352f6fbe4abc26e88

-- Never do today what you can put off till tomorrow.