Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
p5pRT opened this issue Mar 23, 2011 · 21 comments
Closed

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

p5pRT opened this issue Mar 23, 2011 · 21 comments
Labels

Comments

@p5pRT
Copy link

p5pRT commented Mar 23, 2011

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

Searchable as RT86854$

@p5pRT
Copy link
Author

p5pRT commented Mar 23, 2011

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
Copy link
Author

p5pRT commented Mar 23, 2011

@p5pRT
Copy link
Author

p5pRT commented Mar 25, 2011

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
Copy link
Author

p5pRT commented Mar 25, 2011

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

@p5pRT
Copy link
Author

p5pRT commented Mar 30, 2011

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
Copy link
Author

p5pRT commented Mar 30, 2011

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
Copy link
Author

p5pRT commented Mar 31, 2011

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
Copy link
Author

p5pRT commented Mar 31, 2011

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
Copy link
Author

p5pRT commented Apr 13, 2011

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
Copy link
Author

p5pRT commented Apr 14, 2011

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
Copy link
Author

p5pRT commented Apr 15, 2011

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 --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@kjahds.com>
 # for this test.
 cat >try.c <<'EOM'

-- 

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

@p5pRT
Copy link
Author

p5pRT commented Apr 15, 2011

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
Copy link
Author

p5pRT commented Apr 15, 2011

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
Copy link
Author

p5pRT commented Apr 15, 2011

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
Copy link
Author

p5pRT commented Apr 15, 2011

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@​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@​ccur.com>

On 15 April 2011 08​:00, Tom Horsley <tom.horsley@​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
Copy link
Author

p5pRT commented Apr 17, 2011

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@​kjahds.com>
# for this test.
cat >try.c <<'EOM'

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

--

@p5pRT
Copy link
Author

p5pRT commented Apr 17, 2011

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

@p5pRT p5pRT closed this as completed Apr 17, 2011
@p5pRT
Copy link
Author

p5pRT commented Apr 18, 2011

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
Copy link
Author

p5pRT commented Apr 18, 2011

From rmbarker.cpan@btinternet.com

0001-suppress-trailing-in-plibpth.patch
From 2650d6916f193686ae1e1f8e89d53934b421c159 Mon Sep 17 00:00:00 2001
From: Robin Barker <rmbarker@cpan.org>
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
Copy link
Author

p5pRT commented Apr 18, 2011

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 --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
Copy link
Author

p5pRT commented Apr 18, 2011

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 ebf3760
  Author​: David Mitchell <davem@​iabyn.com>
  AuthorDate​: Mon Apr 18 19​:29​:52 2011 +0100
  Commit​: David Mitchell <davem@​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

  bcab124

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant