-
-
Notifications
You must be signed in to change notification settings - Fork 31.7k
"Out of tree" build fails on AIX #54865
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
Comments
I do "out of tree" builds (I think that is the right term). I make an <path to src directory>/configure followed by make. This works on most open source pages. It appears to I did an "in tree" build using basically just ./configure && make and so far (I'm still testing) that has worked fine. |
There are some unit tests concerning distutils which are currently failing on AIX and may be an illustration of the same problem: ====================================================================== Traceback (most recent call last):
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/unixccompiler.py", line 254, in link
self.spawn(linker + ld_args)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/ccompiler.py", line 911, in spawn
spawn(cmd, dry_run=self.dry_run)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/spawn.py", line 34, in spawn
_spawn_posix(cmd, search_path, dry_run=dry_run)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/spawn.py", line 138, in _spawn_posix
% (cmd[0], exit_status))
distutils.errors.DistutilsExecError: command './Modules/ld_so_aix' failed with exit status 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/tests/test_build_ext.py", line 85, in test_build_ext
cmd.run()
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/command/build_ext.py", line 347, in run
self.build_extensions()
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/command/build_ext.py", line 456, in build_extensions
self.build_extension(ext)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/command/build_ext.py", line 543, in build_extension
target_lang=language)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/ccompiler.py", line 719, in link_shared_object
extra_preargs, extra_postargs, build_temp, target_lang)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/unixccompiler.py", line 256, in link
raise LinkError(msg)
distutils.errors.LinkError: command './Modules/ld_so_aix' failed with exit status 1 ====================================================================== Traceback (most recent call last):
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/unixccompiler.py", line 254, in link
self.spawn(linker + ld_args)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/ccompiler.py", line 911, in spawn
spawn(cmd, dry_run=self.dry_run)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/spawn.py", line 34, in spawn
_spawn_posix(cmd, search_path, dry_run=dry_run)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/spawn.py", line 138, in _spawn_posix
% (cmd[0], exit_status))
distutils.errors.DistutilsExecError: command './Modules/ld_so_aix' failed with exit status 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/tests/test_build_ext.py", line 343, in test_get_outputs
cmd.run()
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/command/build_ext.py", line 347, in run
self.build_extensions()
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/command/build_ext.py", line 456, in build_extensions
self.build_extension(ext)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/command/build_ext.py", line 543, in build_extension
target_lang=language)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/ccompiler.py", line 719, in link_shared_object
extra_preargs, extra_postargs, build_temp, target_lang)
File "/san_cis/home/cis/.buildbot/python-aix6/py3k-aix6-xlc/build/Lib/distutils/unixccompiler.py", line 256, in link
raise LinkError(msg)
distutils.errors.LinkError: command './Modules/ld_so_aix' failed with exit status 1 I will take a look. |
I tried with trunk (python 3.2) on AIX: Not sure with python 2.7. |
I have experienced the same problem under ppc64 aix 6.1.2.0 while compiling Python 2.7.1 $ cd Python-2.7.1
$ mkdir __build
$ cd __build
$ ../configure --with-gcc=xlc_r --with-cxx-main=xlC_r --with-threads --disable-ipv6
$ /usr/linux/bin/make
[...]
../Modules/ld_so_aix xlc_r -bI:Modules/python.exp -L.. -L/opt/freeware/lib -L/opt/freeware/lib build/temp.aix-6.1-2.7/data/tcarel/ngbuilder/python/2.7.1/Python-2.7.1/Modules/_struct.o -L/opt/freeware/lib -L/usr/local/lib -o build/lib.aix-6.1-2.7/_struct.so
unable to execute ../Modules/ld_so_aix: No such file or directory There are references to $(srcdir)/Modules/ld_so_aix in both configure.in and Makefile.pre.in whereas ld_so_aix is created in build tree. ================================================== diff -r f4e6e18cae4b Makefile.pre.in
--- a/Makefile.pre.in Tue Mar 29 17:28:25 2011 -0700
+++ b/Makefile.pre.in Thu Mar 31 13:05:45 2011 +0200
@@ -1028,7 +1028,7 @@
$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix \
$(DESTDIR)$(LIBPL)/makexp_aix; \
echo "$(LIBPL)/makexp_aix"; \
- $(INSTALL_SCRIPT) $(srcdir)/Modules/ld_so_aix \
+ $(INSTALL_SCRIPT) Modules/ld_so_aix \
$(DESTDIR)$(LIBPL)/ld_so_aix; \
echo "$(LIBPL)/ld_so_aix"; \
echo; echo "See Misc/AIX-NOTES for details."; \
diff -r f4e6e18cae4b configure.in
--- a/configure.in Tue Mar 29 17:28:25 2011 -0700
+++ b/configure.in Thu Mar 31 13:05:45 2011 +0200
@@ -1778,7 +1778,7 @@
then
case $ac_sys_system/$ac_sys_release in
AIX*)
- BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
+ BLDSHARED="Modules/ld_so_aix \$(CC) -bI:Modules/python.exp -L\$(srcdir)"
LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
;;
BeOS*) ================================================== After fixing these 2 files, Modules/ld_so_aix is found and properly executed by compilation process, but then there is a new issue: Modules/ld_so_aix xlc_r -bI:Modules/python.exp -L.. -L/opt/freeware/lib -L/opt/freeware/lib build/temp.aix-6.1-2.7/data/tcarel/Python-2.7.1/Modules/_struct.o -L/opt/freeware/lib -L/usr/local/lib -o build/lib.aix-6.1-2.7/_struct.so This time, makexp_aix is expected to be is the same directory than ld_so_aix whereas makeexp_aix remains in the source tree. Here is a fix: ================================================== diff -r f4e6e18cae4b Modules/ld_so_aix.in
--- a/Modules/ld_so_aix.in Tue Mar 29 17:28:25 2011 -0700
+++ b/Modules/ld_so_aix.in Thu Mar 31 13:01:57 2011 +0200
@@ -69,7 +69,10 @@
echo $usage; exit 2
fi
-makexp=`dirname $0`/makexp_aix
+makexp=`dirname $0`/@srcdir@/makexp_aix
+if test ! -e "$makexp" ; then
+ makeexp=makexp_aix
+fi
# Check for existence of compiler.
CC=$1; shift ================================================== The first value fix the issue while building Python. The second will use PATH to find makeexp_aix as explained in section `SHARED LIBRARY SUPPORT' in AIX-NOTES (for building shared extension modules). You can find a patch for 2.7 branch in attachment. RegardsTristan Carel |
Basically the same as Tristan's patch, with a little improvement to not rely on PATH to find makexp_aix within ld_so_aix. Thanks! |
The idea of the patches makes sense to me. Embedding the name of whatever directory Python was built in into the installed version of Modules/ld_so_aix.in does not seem very clean to me. Is there another way of doing this? Perhaps a file copy or symlink? |
Actually, why do you remove $(srcdir) for Modules/python.exp? This code was added in r88426; see <https://bugs.python.org/issue941346#msg128586\>. |
Modules/python.exp is generated at build-time, thus does not belong to $(srcdir). |
Okay I will assume that $(srcdir) reference was just due to a mistake or bad cargo-culting then. Will commit this soon unless anyone has a good idea to avoid embedding @abs_srcdir@. |
New changeset 48526666321a by Martin Panter in branch '3.5': New changeset 76d1f8001e27 by Martin Panter in branch '3.6': New changeset 180f046b597e by Martin Panter in branch 'default': New changeset ca46883fc5cf by Martin Panter in branch '2.7': |
Misc/NEWS
so that it is managed by towncrier #552Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: