Package: python3.6
Version: 3.6.5-3
Severity: wishlist
Tags: patch
Dear Maintainers,
Shipping the -dbg Python packages without using pymalloc and with
-DPy_USING_MEMORY_DEBUGGER helped me in finding memory allocation
issues easier in Python modules and I'm sure that would help others as
well. I'm aware of the negative impact on the speed, but IMO for the
-dbg packages slower execution would be acceptable.
I'm attaching the patch I used with python3.6, but the first not
disruptive opportunity for introducing this change would probably be
the switch to python3.8 which is expected to ship new shared libraries
anyway.
Thanks,
Balint
--
Balint Reczey
Ubuntu & Debian Developer
diff -Nru python3.6-3.6.5/debian/rules python3.6-3.6.5/debian/rules
--- python3.6-3.6.5/debian/rules 2018-04-01 05:46:30.000000000 +0000
+++ python3.6-3.6.5/debian/rules 2018-04-04 15:12:23.000000000 +0000
@@ -164,6 +164,9 @@
DPKG_LDFLAGS := $(shell DEB_BUILD_MAINT_OPTIONS=hardening=-pie dpkg-buildflags --get LDFLAGS)
OPT_CFLAGS := $(filter-out -O%,$(DPKG_CFLAGS)) # default is -O3
DEBUG_CFLAGS := $(patsubst -O%,-Og,$(DPKG_CFLAGS))
+DEBUG_CPPFLAGS:= $(shell dpkg-buildflags --get CPPFLAGS) -DPy_USING_MEMORY_DEBUGGER
+
+DEBUG_ABIFLAGS = d
# on alpha, use -O2 only, use -mieee
ifeq ($(DEB_HOST_ARCH),alpha)
@@ -406,11 +409,12 @@
mkdir -p $(buildd_debug)
cd $(buildd_debug) && \
CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" CFLAGS="$(DEBUG_CFLAGS)" \
- CPPFLAGS="$(DPKG_CPPFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
+ CPPFLAGS="$(DEBUG_CPPFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
$(config_site) \
../configure \
$(common_configure_args) \
- --with-pydebug
+ --with-pydebug \
+ --without-pymalloc
$(call __post_configure,$(buildd_debug))
touch $@
@@ -420,11 +424,12 @@
mkdir -p $(buildd_shdebug)
cd $(buildd_shdebug) && \
CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" CFLAGS="$(DEBUG_CFLAGS)" \
- CPPFLAGS="$(DPKG_CPPFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
+ CPPFLAGS="$(DEBUG_CPPFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
$(config_site) \
../configure \
$(common_configure_args) \
--enable-shared \
+ --without-pymalloc \
--with-pydebug
$(call __post_configure,$(buildd_shdebug))
@@ -1203,20 +1208,20 @@
-e 's,^RUNSHARED *=.*,RUNSHARED=,' \
-e '/BLDLIBRARY/s/-L\. //' \
$(buildd_shdebug)/Makefile \
- > $(d)-dbg/$(scriptdir)/config-$(VER)dm-$(DEB_HOST_MULTIARCH)/Makefile
+ > $(d)-dbg/$(scriptdir)/config-$(VER)$(DEBUG_ABIFLAGS)-$(DEB_HOST_MULTIARCH)/Makefile
sed -e 's,^RUNSHARED *=.*,RUNSHARED=,' \
-e '/BLDLIBRARY/s/-L\. //' \
- $(buildd_shdebug)/$(shell cat $(buildd_shdebug)/pybuilddir.txt)/_sysconfigdata_dm_$(PLAT)_$(DEB_HOST_MULTIARCH).py \
- > $(d)-dbg/$(scriptdir)/_sysconfigdata_dm_$(PLAT)_$(DEB_HOST_MULTIARCH).py
+ $(buildd_shdebug)/$(shell cat $(buildd_shdebug)/pybuilddir.txt)/_sysconfigdata_$(DEBUG_ABIFLAGS)_$(PLAT)_$(DEB_HOST_MULTIARCH).py \
+ > $(d)-dbg/$(scriptdir)/_sysconfigdata_$(DEBUG_ABIFLAGS)_$(PLAT)_$(DEB_HOST_MULTIARCH).py
sed -i 's/ -O3 / -O2 /g;s/$(LTO_CFLAGS)//g;s/-fprofile-use *-fprofile-correction//g' \
- $(d)-dbg/$(scriptdir)/_sysconfigdata_dm_$(PLAT)_$(DEB_HOST_MULTIARCH).py
+ $(d)-dbg/$(scriptdir)/_sysconfigdata_$(DEBUG_ABIFLAGS)_$(PLAT)_$(DEB_HOST_MULTIARCH).py
mv $(d)-dbg/usr/lib/libpython*.a $(d)-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/
for i in $(d)-dbg/$(scriptdir)/lib-dynload/*.so; do \
case "$$i" in *$(DEB_HOST_MULTIARCH)*) continue; esac; \
- b=$$(basename $$i .cpython-$(EXT_VER)dm.so); \
- d=$${b}.cpython-$(EXT_VER)dm-$(DEB_HOST_MULTIARCH).so; \
+ b=$$(basename $$i .cpython-$(EXT_VER)$(DEBUG_ABIFLAGS).so); \
+ d=$${b}.cpython-$(EXT_VER)$(DEBUG_ABIFLAGS)-$(DEB_HOST_MULTIARCH).so; \
mv $$i $(d)-dbg/$(scriptdir)/lib-dynload/$$d; \
done
@@ -1224,24 +1229,24 @@
usr/bin \
usr/share/man/man1 \
$(scriptdir)/lib-dynload \
- usr/include/$(PVER)dm \
- usr/include/$(DEB_HOST_MULTIARCH)/$(PVER)dm \
+ usr/include/$(PVER)$(DEBUG_ABIFLAGS) \
+ usr/include/$(DEB_HOST_MULTIARCH)/$(PVER)$(DEBUG_ABIFLAGS) \
usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig
cp -p $(d)-dbg/$(scriptdir)/lib-dynload/*.so \
$(d_ldbg)/$(scriptdir)/lib-dynload/
- cp -p $(d)-dbg/$(scriptdir)/_sysconfigdata_dm_$(PLAT)_$(DEB_HOST_MULTIARCH).py \
+ cp -p $(d)-dbg/$(scriptdir)/_sysconfigdata_$(DEBUG_ABIFLAGS)_$(PLAT)_$(DEB_HOST_MULTIARCH).py \
$(d_ldbg)/$(scriptdir)/
- cp -p $(buildd_shdebug)/libpython$(VER)dm.so.1.0 \
+ cp -p $(buildd_shdebug)/libpython$(VER)$(DEBUG_ABIFLAGS).so.1.0 \
$(d_ldbg)/usr/lib/$(DEB_HOST_MULTIARCH)/
dh_link -p$(p_ldbg) \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so.1.0 \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so.1 \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so.1 \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so
- cp $(d)-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python-$(VER)dm.pc \
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so.1.0 \
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so.1 \
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so.1 \
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so
+ cp $(d)-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python-$(VER)$(DEBUG_ABIFLAGS).pc \
$(d_ldbg)/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/.
- ln -s python-$(VER)dm.pc \
+ ln -s python-$(VER)$(DEBUG_ABIFLAGS).pc \
$(d_ldbg)/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python-$(VER)-dbg.pc
dh_installdirs -p$(p_dbg) \
@@ -1251,8 +1256,8 @@
cp -p Misc/SpecialBuilds.txt $(d_dbg)/usr/share/doc/$(p_base)/
cp -p debian/$(PVER)-dbg.README.Debian \
$(d_dbg)/usr/share/doc/$(p_base)/README.debug
- cp -p $(buildd_debug)/python $(d_dbg)/usr/bin/$(PVER)dm
- ln -sf python$(VER)dm $(d_dbg)/usr/bin/$(PVER)-dbg
+ cp -p $(buildd_debug)/python $(d_dbg)/usr/bin/$(PVER)$(DEBUG_ABIFLAGS)
+ ln -sf python$(VER)$(DEBUG_ABIFLAGS) $(d_dbg)/usr/bin/$(PVER)-dbg
ifneq ($(with_tk),yes)
rm -f $(d_ldbg)/$(scriptdir)/lib-dynload/_tkinter*.so
@@ -1263,56 +1268,56 @@
rm -f $(d_ldbg)/usr/lib/debug/$(scriptdir)/lib-dynload/_gdbm*.so
endif
- cp -a $(d)-dbg/$(scriptdir)/config-$(VER)dm-$(DEB_HOST_MULTIARCH) \
+ cp -a $(d)-dbg/$(scriptdir)/config-$(VER)$(DEBUG_ABIFLAGS)-$(DEB_HOST_MULTIARCH) \
$(d_ldbg)/$(scriptdir)/
dh_link -p$(p_ldbg) \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so \
- /$(scriptdir)/config-$(VER)dm-$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.so \
- /$(scriptdir)/config-$(VER)dm-$(DEB_HOST_MULTIARCH)/libpython$(VER).so \
- /$(scriptdir)/config-$(VER)dm-$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.a \
- /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)dm.a
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so \
+ /$(scriptdir)/config-$(VER)$(DEBUG_ABIFLAGS)-$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so \
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).so \
+ /$(scriptdir)/config-$(VER)$(DEBUG_ABIFLAGS)-$(DEB_HOST_MULTIARCH)/libpython$(VER).so \
+ /$(scriptdir)/config-$(VER)$(DEBUG_ABIFLAGS)-$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).a \
+ /usr/lib/$(DEB_HOST_MULTIARCH)/libpython$(VER)$(DEBUG_ABIFLAGS).a
for i in $(d_ldev)/usr/include/$(PVER)m/*; do \
i=$$(basename $$i); \
case $$i in pyconfig.h) continue; esac; \
- ln -sf ../$(PVER)m/$$i $(d_ldbg)/usr/include/$(PVER)dm/$$i; \
+ ln -sf ../$(PVER)m/$$i $(d_ldbg)/usr/include/$(PVER)$(DEBUG_ABIFLAGS)/$$i; \
done
- cp -p $(buildd_debug)/pyconfig.h $(d_ldbg)/usr/include/$(DEB_HOST_MULTIARCH)/$(PVER)dm/
- sed 's/@subdir@/$(PVER)dm/;s/@header@/pyconfig.h/' \
- debian/multiarch.h.in > $(d_ldbg)/usr/include/$(PVER)dm/pyconfig.h
+ cp -p $(buildd_debug)/pyconfig.h $(d_ldbg)/usr/include/$(DEB_HOST_MULTIARCH)/$(PVER)$(DEBUG_ABIFLAGS)/
+ sed 's/@subdir@/$(PVER)$(DEBUG_ABIFLAGS)/;s/@header@/pyconfig.h/' \
+ debian/multiarch.h.in > $(d_ldbg)/usr/include/$(PVER)$(DEBUG_ABIFLAGS)/pyconfig.h
ln -sf $(PVER).1.gz $(d_dbg)/usr/share/man/man1/$(PVER)-dbg.1.gz
: # in $(p_ldbg), prefix python-config with triplets
- cp $(d)-dbg/usr/bin/$(PVER)dm-config \
- $(d_ldbg)/usr/bin/$(DEB_HOST_MULTIARCH)-$(PVER)dm-config
- ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)dm-config \
+ cp $(d)-dbg/usr/bin/$(PVER)$(DEBUG_ABIFLAGS)-config \
+ $(d_ldbg)/usr/bin/$(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config
+ ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config \
$(d_ldbg)/usr/bin/$(DEB_HOST_MULTIARCH)-$(PVER)-dbg-config
ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)m-config.1.gz \
- $(d_ldbg)/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-$(PVER)dm-config.1.gz
+ $(d_ldbg)/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config.1.gz
ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)m-config.1.gz \
$(d_ldbg)/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-$(PVER)-dbg-config.1.gz
ifneq ($(DEB_HOST_MULTIARCH),$(DEB_HOST_GNU_TYPE))
- ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)dm-config \
- $(d_ldbg)/usr/bin/$(DEB_HOST_GNU_TYPE)-$(PVER)dm-config
+ ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config \
+ $(d_ldbg)/usr/bin/$(DEB_HOST_GNU_TYPE)-$(PVER)$(DEBUG_ABIFLAGS)-config
ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)-config.1.gz \
- $(d_ldbg)/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-$(PVER)dm-config.1.gz
- ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)dm-config \
+ $(d_ldbg)/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-$(PVER)$(DEBUG_ABIFLAGS)-config.1.gz
+ ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config \
$(d_ldbg)/usr/bin/$(DEB_HOST_GNU_TYPE)-$(PVER)-dbg-config
- ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)dm-config.1.gz \
+ ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config.1.gz \
$(d_ldbg)/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-$(PVER)-dbg-config.1.gz
endif
- ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)dm-config $(d_dbg)/usr/bin/$(PVER)dm-config
- ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)dm-config.1.gz $(d_dbg)/usr/share/man/man1/$(PVER)dm-config.1.gz
+ ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config $(d_dbg)/usr/bin/$(PVER)$(DEBUG_ABIFLAGS)-config
+ ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)$(DEBUG_ABIFLAGS)-config.1.gz $(d_dbg)/usr/share/man/man1/$(PVER)$(DEBUG_ABIFLAGS)-config.1.gz
ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)-dbg-config $(d_dbg)/usr/bin/$(PVER)-dbg-config
ln -sf $(DEB_HOST_MULTIARCH)-$(PVER)-dbg-config.1.gz $(d_dbg)/usr/share/man/man1/$(PVER)-dbg-config.1.gz
: # symlinks for the "old" include / config directory names
ln -sf $(PVER)-config.1.gz $(d_dbg)/usr/share/man/man1/$(PVER)-dbg-config.1.gz
- ln -sf $(PVER).1.gz $(d_dbg)/usr/share/man/man1/$(PVER)dm.1.gz
- ln -sf $(PVER)-config.1.gz $(d_dbg)/usr/share/man/man1/$(PVER)dm-config.1.gz
+ ln -sf $(PVER).1.gz $(d_dbg)/usr/share/man/man1/$(PVER)$(DEBUG_ABIFLAGS).1.gz
+ ln -sf $(PVER)-config.1.gz $(d_dbg)/usr/share/man/man1/$(PVER)$(DEBUG_ABIFLAGS)-config.1.gz
ifeq ($(with_udeb),yes)
: # Copy the most important files from $(p_min) into $(p_udeb).
@@ -1441,13 +1446,13 @@
mkdir -p $(d_dbg)/usr/share/gdb/auto-load/usr/bin
cp Tools/gdb/libpython.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)m-gdb.py
ln -sf $(PVER)m-gdb.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)-gdb.py
- ln -sf $(PVER)m-gdb.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)dm-gdb.py
+ ln -sf $(PVER)m-gdb.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)$(DEBUG_ABIFLAGS)-gdb.py
ln -sf $(PVER)m-gdb.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)-dbg-gdb.py
mkdir -p $(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)
ln -sf ../../bin/$(PVER)m-gdb.py \
$(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)/lib$(PVER)m.so.1.0-gdb.py
ln -sf ../../bin/$(PVER)m-gdb.py \
- $(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)/lib$(PVER)dm.so.1.0-gdb.py
+ $(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)/lib$(PVER)$(DEBUG_ABIFLAGS).so.1.0-gdb.py
dh_link -a
dh_compress -a -X.py
dh_fixperms -a