From c25417f64467f00bc4f271f5979810ea13563a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarek=20Ziad=C3=A9?= Date: Fri, 8 Jan 2010 23:42:23 +0000 Subject: [PATCH] Fixed #7617: all flavors of gcc should be recognized now --- Lib/distutils/tests/test_unixccompiler.py | 12 ++++++++++++ Lib/distutils/unixccompiler.py | 7 +++++-- Misc/NEWS | 4 ++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Lib/distutils/tests/test_unixccompiler.py b/Lib/distutils/tests/test_unixccompiler.py index 1b7dd4cd645..008ae5d03a0 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 2083f829829..67adcfcf979 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -266,6 +266,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 @@ -285,12 +288,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 97720bc581b..3536ff45810 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -65,6 +65,10 @@ Core and Builtins Library ------- +- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes + gcc when it has a fully qualified configuration prefix. Initial patch + by Arfrever. + - Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent