Patches item #1569798, was opened at 2006-10-03 08:24
Message generated for change (Comment added) made by gbrandl
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1569798&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Build
Group: Python 2.4
>Status: Closed
>Resolution: Fixed
Priority: 5
Private: No
Submitted By: Matthias Klose (doko)
Assigned to: Nobody/Anonymous (nobody)
Summary: Fix building the source within exec_prefix

Initial Comment:
[forwarded from http://bugs.debian.org/385336]

when built under a subdirectory of exec_prefix, the
build fails building the extensions.

bug submitter writes:

OK, after a debugging session, I found out why.  It
seems to be an
upstream bug in distutils.  See
python2.5-2.5~c1/Lib/distutils/command/build_ext.py
line 188+:

  if string.find(sys.executable, sys.exec_prefix) != -1:
      # building third party extensions
      self.library_dirs.append(os.path.join(sys.prefix,
"lib",
                                            "python" +
  get_python_version(),
                                            "config"))
  else:
      # building python standard extensions
      self.library_dirs.append('.')

This code is executed only in the shared build.  The if
clause is here
to determine whether we're running a correctly
installed python or
whether we're running python from its source tree.  In
our case (since
we're building python itself atm), the condition *must*
evaluate to
false.  However, this exact check looks very clumsy.

On my build system, sys.executable ==
'/usr/src/debian/build/python2.5-2.5~c1/build-shared/python',
sys.exec_prefix == '/usr', i.e. the condition is true
and distutils
thinks it's running on an already installed python
distribution.  The
reason is that I'm building below the 'install prefix'
directory (in
/usr/src/...).

In contrast, on the Debian buildd machines, this is
performed in
/build/buildd/.... which does not trigger the distutils
bug.


----------------------------------------------------------------------

>Comment By: Georg Brandl (gbrandl)
Date: 2007-03-13 10:20

Message:
Logged In: YES 
user_id=849994
Originator: NO

Thanks for the patch, adapted to current trunk and applied in rev. 54331,
54332 (2.5).

----------------------------------------------------------------------

Comment By: Benjamin Thyreau (benji2)
Date: 2006-11-09 13:27

Message:
Logged In: YES 
user_id=140916

Hi,
I seem to have a very related problem too, since i also
traced it back to Lib/distutils/command/build_ext.py line 188.
Summary, when Python is installed with both --enable-shared
and --prefix, distutils generated compilations lines
(rightly) add -lpython2.5 but does NOT add the corresponding
-L (which is, PREFIX/lib by default ). I had to  manually
add self.library_dirs.append(os.path.join(sys.prefix,
"lib")) on line 190 to quick fix that.

Also, the abovementioned test "string.find(sys.executable,
sys.exec_prefix)!=-1" doesn't have the intended effect on my
system either, because of symlinks (oddly enough it works
when running from IPython, maybe it resolves paths differently)

Thanks

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1569798&group_id=5470
_______________________________________________
Patches mailing list
Patches@python.org
http://mail.python.org/mailman/listinfo/patches

Reply via email to