diff --git a/patches/python2.4-backport-CPPFLAGS-setup-from-python2.6.patch b/patches/python2.4-backport-CPPFLAGS-setup-from-python2.6.patch new file mode 100644 index 0000000000000000000000000000000000000000..999dd30050d06812383785a642560cf5908c3a2d --- /dev/null +++ b/patches/python2.4-backport-CPPFLAGS-setup-from-python2.6.patch @@ -0,0 +1,73 @@ +From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> +Date: Mon, 7 Mar 2011 13:02:05 +0900 +Subject: [PATCH] Pass CPPFLAGS when building modules in Python 2.4 + +In contrary to Python 2.6, when building Python 2.4 modules, CPPFLAGS +specified to configure script is not passed at all. This patch backports +the fix from Python 2.6. + +--- Makefile.pre.in 2006-10-09 02:41:25.000000000 +0900 ++++ Makefile.pre.in 2011-03-07 14:58:34.368000777 +0900 +@@ -56,7 +56,10 @@ + OPT= @OPT@ + BASECFLAGS= @BASECFLAGS@ + CFLAGS= $(BASECFLAGS) $(OPT) +-CPPFLAGS= -I. -I$(srcdir)/Include ++# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to ++# be able to build extension modules using the directories specified in the ++# environment variables ++CPPFLAGS= -I. -I$(srcdir)/Include @CPPFLAGS@ + LDFLAGS= @LDFLAGS@ + LDLAST= @LDLAST@ + SGI_ABI= @SGI_ABI@ +--- setup.py 2006-10-09 02:41:25.000000000 +0900 ++++ setup.py 2011-03-07 14:53:36.208000779 +0900 +@@ -3,7 +3,7 @@ + + __version__ = "$Revision: 52231 $" + +-import sys, os, getopt, imp, re ++import sys, os, getopt, imp, re, optparse + + from distutils import log + from distutils import sysconfig +@@ -243,6 +243,39 @@ + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + ++ # Add paths specified in the environment variables LDFLAGS and ++ # CPPFLAGS for header and library files. ++ # We must get the values from the Makefile and not the environment ++ # directly since an inconsistently reproducible issue comes up where ++ # the environment variable is not set even though the value were passed ++ # into configure and stored in the Makefile (issue found on OS X 10.3). ++ for env_var, arg_name, dir_list in ( ++ ('LDFLAGS', '-L', self.compiler.library_dirs), ++ ('CPPFLAGS', '-I', self.compiler.include_dirs)): ++ env_val = sysconfig.get_config_var(env_var) ++ if env_val: ++ # To prevent optparse from raising an exception about any ++ # options in env_val that is doesn't know about we strip out ++ # all double dashes and any dashes followed by a character ++ # that is not for the option we are dealing with. ++ # ++ # Please note that order of the regex is important! We must ++ # strip out double-dashes first so that we don't end up with ++ # substituting "--Long" to "-Long" and thus lead to "ong" being ++ # used for a library directory. ++ env_val = re.sub(r'(^|\s+)-(-|(?!%s))' % arg_name[1], ++ ' ', env_val) ++ parser = optparse.OptionParser() ++ # Make sure that allowing args interspersed with options is ++ # allowed ++ parser.allow_interspersed_args = True ++ parser.error = lambda msg: None ++ parser.add_option(arg_name, dest="dirs", action="append") ++ options = parser.parse_args(env_val.split())[0] ++ if options.dirs: ++ for directory in reversed(options.dirs): ++ add_dir_to_list(dir_list, directory) ++ + # Add paths to popular package managers on OS X/darwin + if sys.platform == "darwin": + # Fink installs into /sw by default