tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH] Fixing the subtle python PLIST breakage on installing with an older version present



Am Sat, 6 Apr 2019 00:51:32 +0200
schrieb Joerg Sonnenberger <joerg%bec.de@localhost>: 

> On Thu, Apr 04, 2019 at 07:00:32PM +0200, Dr. Thomas Orgis wrote:
> > The generated files had version 3.7.2 instead of 3.7.3. The reason: My
> > system writes RPATH into the ELF binaries instead of the newer RUNPATH
> > (no --enable-new-dtags).  
> 
> At this point, I would just set it for Linux systems. Most default to it
> anyway...

It is not that simple. We had lengthy discussions in the HPC team here
about RPATH or RUNPATH. We did agree that we'd use RPATH for our
installations of add-on software (what we do with pkgsrc) to ensure
that LD_LIBRARY_PATH has no effect on _our_ binaries, only those built
by the users or some 3rd-party binaries that need messing with
libraries. For really replacing something like a MPI library, one can
use LD_PRELOAD.

Maybe we'll revise that decision … but it's our decision.

I am against pkgsrc just setting this linker flag. It is a choice from
the OS pkgsrc is living in. This same discussion is to be had with
python folks, though. I stumbled over this:

https://bugs.python.org/issue17362

I need to look into what these occurences do:

sh-4.4$ find . -type f | xargs grep new-dtags
grep: ./Mac/Icons/Disk: No such file or directory
grep: Image.icns: No such file or directory
grep: ./Mac/Icons/Python: No such file or directory
grep: Folder.icns: No such file or directory
./configure:# distutils.unixccompiler to know if it should add --enable-new-dtags
./Lib/distutils/unixccompiler.py.orig:                    return "-Wl,--enable-new-dtags,-R" + dir
./Lib/distutils/unixccompiler.py.orig:                # No idea how --enable-new-dtags would be passed on to
./Lib/distutils/tests/test_unixccompiler.py:        self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
./Lib/distutils/tests/test_unixccompiler.py:        self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
./configure.orig:# distutils.unixccompiler to know if it should add --enable-new-dtags
./configure.ac:# distutils.unixccompiler to know if it should add --enable-new-dtags

I'm not sure if we really want to expect LD_LIBRARY_PATH to
make /prefix1/bin/python3 being called pull in libpython3.so from
$ELSEWHERE and effectively run another python interpreter … if this
really works flawlessly. The libpython3.so is not just any library in
this case, /methinks.

More next week when I'm back in office …


Alrighty then,

Thomas

-- 
Dr. Thomas Orgis
HPC @ Universität Hamburg


Home | Main Index | Thread Index | Old Index