summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-05-07 21:24:43 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2009-05-07 21:24:43 (GMT)
commit5662d3e676088b43d3138d48819ce7410292198d (patch)
treef190db92a6ccfa4961db334be54032135c2316d7
parent72b06c6be08e9b1b27ee9c9963d5acec56b11d9c (diff)
downloadcpython-5662d3e676088b43d3138d48819ce7410292198d.zip
cpython-5662d3e676088b43d3138d48819ce7410292198d.tar.gz
cpython-5662d3e676088b43d3138d48819ce7410292198d.tar.bz2
Merged revisions 72445 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r72445 | tarek.ziade | 2009-05-07 23:20:34 +0200 (Thu, 07 May 2009) | 1 line Fixed #5941: added ARFLAGS for the archiver command. ........
-rw-r--r--Lib/distutils/sysconfig.py10
-rw-r--r--Lib/distutils/tests/test_build_clib.py40
-rw-r--r--Lib/distutils/tests/test_sysconfig.py5
-rw-r--r--Makefile.pre.in13
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS5
-rw-r--r--configure.in7
7 files changed, 70 insertions, 11 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index fbeb45f..223ff67 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -160,9 +160,9 @@ def customize_compiler(compiler):
varies across Unices and is stored in Python's Makefile.
"""
if compiler.compiler_type == "unix":
- (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar) = \
+ (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
- 'CCSHARED', 'LDSHARED', 'SO', 'AR')
+ 'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS')
if 'CC' in os.environ:
cc = os.environ['CC']
@@ -185,6 +185,10 @@ def customize_compiler(compiler):
ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
if 'AR' in os.environ:
ar = os.environ['AR']
+ if 'ARFLAGS' in os.environ:
+ archiver = ar + ' ' + os.environ['ARFLAGS']
+ else:
+ archiver = ar + ' ' + ar_flags
cc_cmd = cc + ' ' + cflags
compiler.set_executables(
@@ -194,7 +198,7 @@ def customize_compiler(compiler):
compiler_cxx=cxx,
linker_so=ldshared,
linker_exe=cc,
- archiver=ar)
+ archiver=archiver)
compiler.shared_lib_extension = so_ext
diff --git a/Lib/distutils/tests/test_build_clib.py b/Lib/distutils/tests/test_build_clib.py
index 7374c49..3c6643f 100644
--- a/Lib/distutils/tests/test_build_clib.py
+++ b/Lib/distutils/tests/test_build_clib.py
@@ -1,9 +1,12 @@
"""Tests for distutils.command.build_clib."""
import unittest
+import os
+import sys
from distutils.command.build_clib import build_clib
from distutils.errors import DistutilsSetupError
from distutils.tests import support
+from distutils.spawn import find_executable
class BuildCLibTestCase(support.TempdirManager,
support.LoggingSilencer,
@@ -97,6 +100,43 @@ class BuildCLibTestCase(support.TempdirManager,
cmd.distribution.libraries = 'WONTWORK'
self.assertRaises(DistutilsSetupError, cmd.finalize_options)
+ def test_run(self):
+ # can't test on windows
+ if sys.platform == 'win32':
+ return
+
+ pkg_dir, dist = self.create_dist()
+ cmd = build_clib(dist)
+
+ foo_c = os.path.join(pkg_dir, 'foo.c')
+ self.write_file(foo_c, 'int main(void) { return 1;}')
+ cmd.libraries = [('foo', {'sources': [foo_c]})]
+
+ build_temp = os.path.join(pkg_dir, 'build')
+ os.mkdir(build_temp)
+ cmd.build_temp = build_temp
+ cmd.build_clib = build_temp
+
+ # before we run the command, we want to make sure
+ # all commands are present on the system
+ # by creating a compiler and checking its executables
+ from distutils.ccompiler import new_compiler
+ from distutils.sysconfig import customize_compiler
+
+ compiler = new_compiler()
+ customize_compiler(compiler)
+ for ccmd in compiler.executables.values():
+ if ccmd is None:
+ continue
+ if find_executable(ccmd[0]) is None:
+ return # can't test
+
+ # this should work
+ cmd.run()
+
+ # let's check the result
+ self.assert_('libfoo.a' in os.listdir(build_temp))
+
def test_suite():
return unittest.makeSuite(BuildCLibTestCase)
diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py
index 1e9dbd5..971aac6 100644
--- a/Lib/distutils/tests/test_sysconfig.py
+++ b/Lib/distutils/tests/test_sysconfig.py
@@ -49,7 +49,8 @@ class SysconfigTestCase(unittest.TestCase):
if get_default_compiler() != 'unix':
return
- os.environ['AR'] = 'xxx'
+ os.environ['AR'] = 'my_ar'
+ os.environ['ARFLAGS'] = '-arflags'
# make sure AR gets caught
class compiler:
@@ -60,7 +61,7 @@ class SysconfigTestCase(unittest.TestCase):
comp = compiler()
sysconfig.customize_compiler(comp)
- self.assertEquals(comp.exes['archiver'], 'xxx')
+ self.assertEquals(comp.exes['archiver'], 'my_ar -arflags')
def test_suite():
diff --git a/Makefile.pre.in b/Makefile.pre.in
index b2525e2..d8b0abb 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -67,6 +67,7 @@ LDLAST= @LDLAST@
SGI_ABI= @SGI_ABI@
CCSHARED= @CCSHARED@
LINKFORSHARED= @LINKFORSHARED@
+ARFLAGS= @ARFLAGS@
# Extra C flags added for building the interpreter object files.
CFLAGSFORSHARED=@CFLAGSFORSHARED@
# C flags used for building the interpreter object files
@@ -422,12 +423,12 @@ sharedmods: $(BUILDPYTHON)
# avoid long command lines, same as LIBRARY_OBJS
$(LIBRARY): $(LIBRARY_OBJS)
-rm -f $@
- $(AR) cr $@ Modules/getbuildinfo.o
- $(AR) cr $@ $(PARSER_OBJS)
- $(AR) cr $@ $(OBJECT_OBJS)
- $(AR) cr $@ $(PYTHON_OBJS)
- $(AR) cr $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
- $(AR) cr $@ $(MODOBJS)
+ $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o
+ $(AR) $(ARFLAGS) $@ $(PARSER_OBJS)
+ $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)
+ $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS)
+ $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
+ $(AR) $(ARFLAGS) $@ $(MODOBJS)
$(RANLIB) $@
libpython$(VERSION).so: $(LIBRARY_OBJS)
diff --git a/Misc/ACKS b/Misc/ACKS
index e26940a..5623bad 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -144,6 +144,7 @@ Aldo Cortesi
David Costanzo
Scott Cotton
Greg Couch
+David Cournapeau
Steve Cousins
Alex Coventry
Matthew Dixon Cowles
diff --git a/Misc/NEWS b/Misc/NEWS
index 1c5734c..4051323 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -581,6 +581,11 @@ Core and Builtins
Library
-------
+- Issue #5941: Distutils build_clib command was not working anymore because
+ of an incomplete costumization of the archiver command. Added ARFLAGS in the
+ Makefile besides AR and make Distutils use it. Original patch by David
+ Cournapeau.
+
- Issue #2245: aifc now skips chunk types it doesn't recognize, per spec.
- Issue #5874: distutils.tests.test_config_cmd is not locale-sensitive
diff --git a/configure.in b/configure.in
index ba43b21..2591d8d 100644
--- a/configure.in
+++ b/configure.in
@@ -726,6 +726,13 @@ AC_PROG_RANLIB
AC_SUBST(AR)
AC_CHECK_PROGS(AR, ar aal, ar)
+# tweak ARFLAGS only if the user didn't set it on the command line
+AC_SUBST(ARFLAGS)
+if test -z "$ARFLAGS"
+then
+ ARFLAGS="rc"
+fi
+
AC_SUBST(SVNVERSION)
AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
if test $SVNVERSION = found