summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2010-01-08 23:57:53 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2010-01-08 23:57:53 (GMT)
commitaf77a2f371f665076f04784aa75570cd674f9e67 (patch)
tree1ef3e39fadab02a0ad3e82f261d9263bd46278ab
parent56992e563840bd5fcb71316437a4a6ea5322275a (diff)
downloadcpython-af77a2f371f665076f04784aa75570cd674f9e67.zip
cpython-af77a2f371f665076f04784aa75570cd674f9e67.tar.gz
cpython-af77a2f371f665076f04784aa75570cd674f9e67.tar.bz2
Merged revisions 77377 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r77377 | tarek.ziade | 2010-01-09 00:42:23 +0100 (Sat, 09 Jan 2010) | 1 line Fixed #7617: all flavors of gcc should be recognized now ........
-rw-r--r--Lib/distutils/tests/test_unixccompiler.py12
-rw-r--r--Lib/distutils/unixccompiler.py7
-rw-r--r--Misc/NEWS4
3 files changed, 21 insertions, 2 deletions
diff --git a/Lib/distutils/tests/test_unixccompiler.py b/Lib/distutils/tests/test_unixccompiler.py
index 1b7dd4c..008ae5d 100644
--- a/Lib/distutils/tests/test_unixccompiler.py
+++ b/Lib/distutils/tests/test_unixccompiler.py
@@ -82,6 +82,18 @@ class UnixCCompilerTestCase(unittest.TestCase):
sysconfig.get_config_var = gcv
self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
+ # GCC GNULD with fully qualified configuration prefix
+ # see #7617
+ sys.platform = 'bar'
+ def gcv(v):
+ if v == 'CC':
+ return 'x86_64-pc-linux-gnu-gcc-4.4.2'
+ elif v == 'GNULD':
+ return 'yes'
+ sysconfig.get_config_var = gcv
+ self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
+
+
# non-GCC GNULD
sys.platform = 'bar'
def gcv(v):
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
index da85c89..51f6349 100644
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
@@ -264,6 +264,9 @@ class UnixCCompiler(CCompiler):
def library_dir_option(self, dir):
return "-L" + dir
+ def _is_gcc(self, compiler_name):
+ return "gcc" in compiler_name or "g++" in compiler_name
+
def runtime_library_dir_option(self, dir):
# XXX Hackish, at the very least. See Python bug #445902:
# http://sourceforge.net/tracker/index.php
@@ -283,12 +286,12 @@ class UnixCCompiler(CCompiler):
# MacOSX's linker doesn't understand the -R flag at all
return "-L" + dir
elif sys.platform[:5] == "hp-ux":
- if "gcc" in compiler or "g++" in compiler:
+ if self._is_gcc(compiler):
return ["-Wl,+s", "-L" + dir]
return ["+s", "-L" + dir]
elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5":
return ["-rpath", dir]
- elif compiler[:3] == "gcc" or compiler[:3] == "g++":
+ elif self._is_gcc(compiler):
# gcc on non-GNU systems does not need -Wl, but can
# use it anyway. Since distutils has always passed in
# -Wl whenever gcc was used in the past it is probably
diff --git a/Misc/NEWS b/Misc/NEWS
index 4cfafff..5fd5775 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -194,6 +194,10 @@ C-API
Library
-------
+- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes
+ gcc when it has a fully qualified configuration prefix. Initial patch
+ by Arfrever.
+
- Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against
the destruction of weakref'ed objects while iterating.