summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorFedora Python maintainers <python-devel@lists.fedoraproject.org>2020-07-15 13:19:56 (GMT)
committerPetr Viktorin <pviktori@redhat.com>2020-09-29 13:59:05 (GMT)
commitc44c76028d28dcfe4a4cc70cd692c3df6a0951f7 (patch)
tree4c3ad27c8145ee7f5caf4168b277f28fb6a4e7bb /Modules
parent16a5ec7d9dce422935163f5b901def310d7d4dc9 (diff)
downloadcpython-c44c76028d28dcfe4a4cc70cd692c3df6a0951f7.zip
cpython-c44c76028d28dcfe4a4cc70cd692c3df6a0951f7.tar.gz
cpython-c44c76028d28dcfe4a4cc70cd692c3df6a0951f7.tar.bz2
00112-2.7.13-debug-build.patch
00112 # Patch to support building both optimized vs debug stacks DSO ABIs, sharing the same .py and .pyc files, using "_d.so" to signify a debug build of an extension module. Based on Debian's patch for the same, http://patch-tracker.debian.org/patch/series/view/python2.6/2.6.5-2/debug-build.dpatch (which was itself based on the upstream Windows build), but with some changes: * Debian's patch to dynload_shlib.c looks for module_d.so, then module.so, but this can potentially find a module built against the wrong DSO ABI. We instead search for just module_d.so in a debug build * We remove this change from configure.in's build of the Makefile: SO=$DEBUG_EXT.so so that sysconfig.py:customize_compiler stays with shared_lib_extension='.so' on debug builds, so that UnixCCompiler.find_library_file can find system libraries (otherwise "make sharedlibs" fails to find system libraries, erroneously looking e.g. for "libffi_d.so" rather than "libffi.so") * We change Lib/distutils/command/build_ext.py:build_ext.get_ext_filename to add the _d there, when building an extension. This way, "make sharedlibs" can build ctypes, by finding the sysmtem libffi.so (rather than failing to find "libffi_d.so"), and builds the module as _ctypes_d.so * Similarly, update build_ext:get_libraries handling of Py_ENABLE_SHARED by appending "_d" to the python library's name for the debug configuration * We modify Modules/makesetup to add the "_d" to the generated Makefile rules for the various Modules/*.so targets This may introduce issues when building an extension that links directly against another extension (e.g. users of NumPy?), but seems more robust when searching for external libraries * We don't change Lib/distutils/command/build.py: build.build_purelib to embed plat_specifier, leaving it as is, as pure python builds should be unaffected by these differences (we'll be sharing the .py and .pyc files) * We introduce DEBUG_SUFFIX as well as DEBUG_EXT: - DEBUG_EXT is used by ELF files (names and SONAMEs); it will be "_d" for a debug build - DEBUG_SUFFIX is used by filesystem paths; it will be "-debug" for a debug build Both will be empty in an optimized build. "_d" contains characters that are valid ELF metadata, but this leads to various ugly filesystem paths (such as the include path), and DEBUG_SUFFIX allows these paths to have more natural names. Changing this requires changes elsewhere in the distutils code. * We add DEBUG_SUFFIX to PYTHON in the Makefile, so that the two configurations build parallel-installable binaries with different names ("python-debug" vs "python"). * Similarly, we add DEBUG_SUFFIX within python-config and python$(VERSION)-config, so that the two configuration get different paths for these. See also patch 130 below
Diffstat (limited to 'Modules')
-rwxr-xr-xModules/makesetup2
1 files changed, 1 insertions, 1 deletions
diff --git a/Modules/makesetup b/Modules/makesetup
index db5c47e..e6ddaba6 100755
--- a/Modules/makesetup
+++ b/Modules/makesetup
@@ -233,7 +233,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
*$mod.o*) base=$mod;;
*) base=${mod}module;;
esac
- file="$srcdir/$base\$(SO)"
+ file="$srcdir/$base\$(DEBUG_EXT)\$(SO)"
case $doconfig in
no) SHAREDMODS="$SHAREDMODS $file";;
esac