aboutsummaryrefslogtreecommitdiff
path: root/examples/python2.7/patches/debug-build.diff
diff options
context:
space:
mode:
Diffstat (limited to 'examples/python2.7/patches/debug-build.diff')
-rw-r--r--examples/python2.7/patches/debug-build.diff228
1 files changed, 228 insertions, 0 deletions
diff --git a/examples/python2.7/patches/debug-build.diff b/examples/python2.7/patches/debug-build.diff
new file mode 100644
index 0000000..25d6e29
--- /dev/null
+++ b/examples/python2.7/patches/debug-build.diff
@@ -0,0 +1,228 @@
+# DP: Change the interpreter to build and install python extensions
+# DP: built with the python-dbg interpreter with a different name into
+# DP: the same path (by appending `_d' to the extension name).
+
+--- a/Lib/distutils/command/build.py
++++ b/Lib/distutils/command/build.py
+@@ -91,7 +91,8 @@
+ # 'lib.<plat>' under the base build directory. We only use one of
+ # them for a given distribution, though --
+ if self.build_purelib is None:
+- self.build_purelib = os.path.join(self.build_base, 'lib')
++ self.build_purelib = os.path.join(self.build_base,
++ 'lib' + plat_specifier)
+ if self.build_platlib is None:
+ self.build_platlib = os.path.join(self.build_base,
+ 'lib' + plat_specifier)
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -85,7 +85,7 @@
+ # Include is located in the srcdir
+ inc_dir = os.path.join(srcdir, "Include")
+ return inc_dir
+- return os.path.join(prefix, "include", "python" + get_python_version())
++ return os.path.join(prefix, "include", "python" + get_python_version())+(sys.pydebug and "_d" or "")
+ elif os.name == "nt":
+ return os.path.join(prefix, "include")
+ elif os.name == "os2":
+@@ -216,7 +216,7 @@
+ if python_build:
+ return os.path.join(os.path.dirname(sys.executable), "Makefile")
+ lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
+- return os.path.join(lib_dir, "config", "Makefile")
++ return os.path.join(lib_dir, "config"+(sys.pydebug and "_d" or ""), "Makefile")
+
+
+ def parse_config_h(fp, g=None):
+--- a/Lib/sysconfig.py
++++ b/Lib/sysconfig.py
+@@ -299,7 +299,7 @@
+ def _get_makefile_filename():
+ if _PYTHON_BUILD:
+ return os.path.join(_PROJECT_BASE, "Makefile")
+- return os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), "config", "Makefile")
++ return os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), "config" + (sys.pydebug and "_d" or ""), "Makefile")
+
+
+ def _init_posix(vars):
+@@ -384,7 +384,7 @@
+ else:
+ inc_dir = _PROJECT_BASE
+ else:
+- inc_dir = get_path('platinclude').replace("/usr/local","/usr",1)
++ inc_dir = get_path('platinclude').replace("/usr/local","/usr",1)+(sys.pydebug and "_d" or "")
+ return os.path.join(inc_dir, 'pyconfig.h')
+
+ def get_scheme_names():
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -108,8 +108,8 @@
+ # Detailed destination directories
+ BINLIBDEST= $(LIBDIR)/python$(VERSION)
+ LIBDEST= $(SCRIPTDIR)/python$(VERSION)
+-INCLUDEPY= $(INCLUDEDIR)/python$(VERSION)
+-CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION)
++INCLUDEPY= $(INCLUDEDIR)/python$(VERSION)$(DEBUG_EXT)
++CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION)$(DEBUG_EXT)
+ LIBP= $(LIBDIR)/python$(VERSION)
+
+ # Symbols used for using shared libraries
+@@ -123,6 +123,8 @@
+ EXE= @EXEEXT@
+ BUILDEXE= @BUILDEXEEXT@
+
++DEBUG_EXT= @DEBUG_EXT@
++
+ # Short name and location for Mac OS X Python framework
+ UNIVERSALSDK=@UNIVERSALSDK@
+ PYTHONFRAMEWORK= @PYTHONFRAMEWORK@
+@@ -429,7 +431,7 @@
+ $(AR) $(ARFLAGS) $@ $(MODOBJS)
+ $(RANLIB) $@
+
+-libpython$(VERSION).so: $(LIBRARY_OBJS)
++libpython$(VERSION)$(DEBUG_EXT).so: $(LIBRARY_OBJS)
+ if test $(INSTSONAME) != $(LDLIBRARY); then \
+ $(BLDSHARED) $(PY_LDFLAGS) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
+ $(LN) -f $(INSTSONAME) $@; \
+@@ -990,8 +992,8 @@
+ $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+ # Install the library and miscellaneous stuff needed for extending/embedding
+-# This goes into $(exec_prefix)
+-LIBPL= $(LIBP)/config
++# This goes into $(exec_prefix)$(DEBUG_EXT)
++LIBPL= $(LIBP)/config$(DEBUG_EXT)
+
+ # pkgconfig directory
+ LIBPC= $(LIBDIR)/pkgconfig
+--- a/Misc/python-config.in
++++ b/Misc/python-config.in
+@@ -45,7 +45,7 @@
+
+ elif opt in ('--libs', '--ldflags'):
+ libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
+- libs.append('-lpython'+pyver)
++ libs.append('-lpython' + pyver + (sys.pydebug and "_d" or ""))
+ # add the prefix/lib/pythonX.Y/config dir, but only if there is no
+ # shared library in prefix/lib/.
+ if opt == '--ldflags':
+--- a/Python/dynload_shlib.c
++++ b/Python/dynload_shlib.c
+@@ -46,6 +46,10 @@
+ {"module.exe", "rb", C_EXTENSION},
+ {"MODULE.EXE", "rb", C_EXTENSION},
+ #else
++#ifdef Py_DEBUG
++ {"_d.so", "rb", C_EXTENSION},
++ {"module_d.so", "rb", C_EXTENSION},
++#endif
+ {".so", "rb", C_EXTENSION},
+ {"module.so", "rb", C_EXTENSION},
+ #endif
+--- a/Python/sysmodule.c
++++ b/Python/sysmodule.c
+@@ -1504,6 +1504,12 @@
+ PyString_FromString("legacy"));
+ #endif
+
++#ifdef Py_DEBUG
++ PyDict_SetItemString(sysdict, "pydebug", Py_True);
++#else
++ PyDict_SetItemString(sysdict, "pydebug", Py_False);
++#endif
++
+ #undef SET_SYS_FROM_STRING
+ if (PyErr_Occurred())
+ return NULL;
+--- a/configure.ac
++++ b/configure.ac
+@@ -634,7 +634,7 @@
+ AC_MSG_CHECKING(LIBRARY)
+ if test -z "$LIBRARY"
+ then
+- LIBRARY='libpython$(VERSION).a'
++ LIBRARY='libpython$(VERSION)$(DEBUG_EXT).a'
+ fi
+ AC_MSG_RESULT($LIBRARY)
+
+@@ -779,8 +779,8 @@
+ INSTSONAME="$LDLIBRARY".$SOVERSION
+ ;;
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
+- LDLIBRARY='libpython$(VERSION).so'
+- BLDLIBRARY='-L. -lpython$(VERSION)'
++ LDLIBRARY='libpython$(VERSION)$(DEBUG_EXT).so'
++ BLDLIBRARY='-L. -lpython$(VERSION)$(DEBUG_EXT)'
+ RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
+ case $ac_sys_system in
+ FreeBSD*)
+@@ -904,6 +904,12 @@
+ fi],
+ [AC_MSG_RESULT(no)])
+
++if test "$Py_DEBUG" = 'true'
++then
++ DEBUG_EXT=_d
++fi
++AC_SUBST(DEBUG_EXT)
++
+ # XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
+ # merged with this chunk of code?
+
+@@ -1759,7 +1765,7 @@
+ esac
+ ;;
+ CYGWIN*) SO=.dll;;
+- *) SO=.so;;
++ *) SO=$DEBUG_EXT.so;;
+ esac
+ else
+ # this might also be a termcap variable, see #610332
+--- a/Lib/distutils/tests/test_build_ext.py
++++ b/Lib/distutils/tests/test_build_ext.py
+@@ -287,8 +287,8 @@
+ finally:
+ os.chdir(old_wd)
+ self.assertTrue(os.path.exists(so_file))
+- self.assertEqual(os.path.splitext(so_file)[-1],
+- sysconfig.get_config_var('SO'))
++ so_ext = sysconfig.get_config_var('SO')
++ self.assertEqual(so_file[len(so_file)-len(so_ext):], so_ext)
+ so_dir = os.path.dirname(so_file)
+ self.assertEqual(so_dir, other_tmp_dir)
+ cmd.compiler = None
+@@ -296,8 +296,7 @@
+ cmd.run()
+ so_file = cmd.get_outputs()[0]
+ self.assertTrue(os.path.exists(so_file))
+- self.assertEqual(os.path.splitext(so_file)[-1],
+- sysconfig.get_config_var('SO'))
++ self.assertEqual(so_file[len(so_file)-len(so_ext):], so_ext)
+ so_dir = os.path.dirname(so_file)
+ self.assertEqual(so_dir, cmd.build_lib)
+
+--- a/Lib/distutils/tests/test_build.py
++++ b/Lib/distutils/tests/test_build.py
+@@ -20,10 +20,6 @@
+ # if not specified, plat_name gets the current platform
+ self.assertEqual(cmd.plat_name, get_platform())
+
+- # build_purelib is build + lib
+- wanted = os.path.join(cmd.build_base, 'lib')
+- self.assertEqual(cmd.build_purelib, wanted)
+-
+ # build_platlib is 'build/lib.platform-x.x[-pydebug]'
+ # examples:
+ # build/lib.macosx-10.3-i386-2.7
+@@ -34,6 +30,10 @@
+ wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
+ self.assertEqual(cmd.build_platlib, wanted)
+
++ # build_purelib is build + lib
++ wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
++ self.assertEqual(cmd.build_purelib, wanted)
++
+ # by default, build_lib = build_purelib
+ self.assertEqual(cmd.build_lib, cmd.build_purelib)
+