This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Fix for LD_LIBRARY_PATH inheritance on SunOS when -shared
Type: Stage:
Components: Build Versions: Python 2.3
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: loewis Nosy List: barry, david_ascher, hobbs, jhylton, loewis
Priority: normal Keywords: patch

Created on 2003-07-16 00:28 by david_ascher, last changed 2022-04-10 16:09 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
py23conf.patch david_ascher, 2003-07-16 00:28 Patch against Configure
Messages (12)
msg44269 - (view) Author: David Ascher (david_ascher) * (Python triager) Date: 2003-07-16 00:28
The attached patch fixes a problem whereby building
with --enable-shared fails if the user already has
an LD_LIBRARY_PATH setting.  The absence of
{}'s can cause a failure to interpolate the existing
values.

Tested on Solaris 2.6, but "should" work equally
well on the other affected platforms (Linux, HP-UX
and OSF).

Patch from Jeff Hobbs.
msg44270 - (view) Author: Jeremy Hylton (jhylton) (Python triager) Date: 2003-07-18 17:44
Logged In: YES 
user_id=31392

This sounds like probably the right thing to me, but I don't
have any expertise.  At the least, the patch needs to be
made against configure.in.  If we can resolve this in the
next 30 minutes, I'm okay with it.  If not, let's wait.
msg44271 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2003-07-19 00:43
Logged In: YES 
user_id=21627

I fail to see the point of this patch. The curly braces
should not have any effect, and indeed, I can't see any
effect on Linux here.
msg44272 - (view) Author: Barry A. Warsaw (barry) * (Python committer) Date: 2003-07-22 15:06
Logged In: YES 
user_id=12800

This is the last unresolved priority >= 7 issue for Python
2.3.  Martin, David, can you guys make a final decision
about this and either lower the priority or close the bug
report?
msg44273 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2003-07-22 19:45
Logged In: YES 
user_id=21627

I'm lowering the priority. --enable-shared is not
release-critical in the first place, as you can always build
Python without that.
msg44274 - (view) Author: Jeffrey Hobbs (hobbs) Date: 2003-07-23 23:05
Logged In: YES 
user_id=72656

Unfortunate that the prio was lowered.  The point is that this 
is not for Linux - you have to see beyond one unix platform.

Without this patch, you cannot build with gcc installed in the 
standard /usr/local/ area.  libstdc++ will not be found, 
as /usr/local/lib (where it gets default installed) is not on the 
standard lib search path.  The issue is that configure is losing 
the user's LD_LIBRARY_PATH setting.

This will likely not effect SunPro builders, as they won't need 
libstdc++.
msg44275 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2003-07-24 05:46
Logged In: YES 
user_id=21627

This is all not true:

a) "you cannot build with gcc installed in the standard
/usr/local area". This is not true. This report is about
--enable-shared. You can certainly install Python without
--enable-shared.

b) "libstdc++ will not be found". This is not true. There
are many ways to find libstdc++, on Solaris, that don't
involve setting LD_LIBRARY_PATH:
1. Use crle(1)
2. Edit the gcc specs file, to add -R/usrt/local/lib to all
linker invocations.
3. Set LD_RUN_PATH
4. Configure with --without-cxx. Then libstdc++ won't be
needed in the first place.
5. Configure with BASECFLAGS=-R/usr/local/lib

Each of these approaches is better than setting
LD_LIBRARY_PATH, since it won't require the Python users to
set LD_LIBRARY_PATH later.

c) I still fail to see the need for this patch. It is not
only Linux that does not need it, it is also unnecessary on
Solaris. I can only try Solaris 9, but on that system,
LD_LIBRARY_PATH is copied into the Makefile even without the
patch. I cannot believe that Solaris 2.6 is so broken. 
msg44276 - (view) Author: Jeffrey Hobbs (hobbs) Date: 2003-07-24 17:09
Logged In: YES 
user_id=72656

It is correct that this is for --enable-shared and use of C++ 
compiler (if it isn't needed, why is that on by default?).  But 
not that all the other solutions require extra effort as well, 
and it is a simple and correct fix (it is a pedantic shell 
construct).

Without --enable-shared (which should be default IMHO) you 
cannot embed python, which is needed in my case for 
Mozilla/pyxpcom.
msg44277 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2003-07-24 18:22
Logged In: YES 
user_id=21627

I disagree that --enable-shared should be the default. It is
difficult to maintain, as finding shared libraries is always
a PITA (in particular on Solaris). Its only real use is for
embedding, in even in the case of embedding, it is possible
to avoid using shared libraries.

According to the sh(1) man page of Solaris:

# The  braces  are  required only when parameter 
# is followed by a letter, digit, or underscore that is 
# not to be  interpreted as part of its name.

Since the variable name is not followed by a letter, digit,
or underscore in this case, the braces are not needed.

Can you please report precisely what the problem was that
you mention in the first sentence of your report? What was
the specific setting of LD_LIBRARY_PATH, and how did you
find out there was a failure in interpolation?
msg44278 - (view) Author: Jeffrey Hobbs (hobbs) Date: 2003-07-24 18:42
Logged In: YES 
user_id=72656

I have LD_LIBRARY_PATH set to /usr/local/lib in my env. g++ 
is the C++ compiler, and requires libstdc++ in /usr/local/lib. 
Running the unpatched configure gives me:

RUNSHARED=       
LD_LIBRARY_PATH=/export/home/jeffh/src/Python-2.3c1:

and patched gives me:

RUNSHARED=       
LD_LIBRARY_PATH=/export/home/jeffh/src/Python-
2.3c1:/usr/local/lib

Note that the only difference is that it actually substituted 
the LD_LIBRARY_PATH from my env correctly the second time.

I know that this seems contrary to the docs, but when I 
encountered this, I knew exactly what to look for in 
configure, because I have seen this before on the odd 
platform sh not behaving right.  David was looking over my 
shoulder watching all the changes, so he can vouch that I'm 
not crazy on this one.
msg44279 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2003-07-24 19:17
Logged In: YES 
user_id=21627

I'll accept the patch for application after 2.3; for 2.3, it
is too late.
msg44280 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2003-08-09 09:08
Logged In: YES 
user_id=21627

Committed as

configure 1.418
configure.in 1.429
configure 1.416.4.1
configure.in 1.427.4.1
History
Date User Action Args
2022-04-10 16:09:58adminsetgithub: 38856
2003-07-16 00:28:31david_aschercreate