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