#!/usr/bin/make -f

DH_VERBOSE=1

pybasever  := 2.7
pyshortver := 27

export SHELL = /bin/bash
export HOME=$(CURDIR)/build
export BUILD_DIR=$(shell pwd)
export PYBUILD_DISABLE_python2=1
export PYTHONWARNINGS=d
export ALTNAME=alt-python$(pyshortver)

vafilt					= $(subst $(2)=,,$(filter $(2)=%,$(1)))
DPKG_VARS				:= $(shell dpkg-architecture)
DEB_BUILD_MULTIARCH		?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH)
DEB_HOST_ARCH			?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
DEB_HOST_MULTIARCH		?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)

buildroot		:= $(CURDIR)/debian/tmp
_metainfodir	:= /usr/share/metainfo
version			:= $(pybasever).18
release			:= 1
_sourcedir		:= debian/source
_prefix			:= /opt/alt/python$(pyshortver)
_bindir			:= $(_prefix)/bin
_libdir			:= $(_prefix)/lib
_includedir		:= $(_prefix)/include
_datadir		:= $(_prefix)/share
_mandir			:= $(_datadir)/man
_metainfodir	:= $(_prefix)/share/metainfo
_tapsetdir		:= $(_prefix)/usr/share/systemtap/tapset
_pyconfig32_h	:= pyconfig-32.h
_pyconfig64_h	:= pyconfig-64.h
wordsize		:= 64
_pyconfig_h		:= pyconfig-$(wordsize).h
uname_m			:= $(shell uname -m)

pylibdir		:= $(_libdir)/python$(pybasever)
tools_dir		:= $(pylibdir)/Tools
demo_dir		:= $(pylibdir)/Demo
doc_tools_dir	:= $(pylibdir)/Doc/tools
sitelib			:= $(pylibdir)/site-packages
dynload_dir		:= $(pylibdir)/lib-dynload

bootstrap		?= 0

# How to build bootstrap
# 1) build alt-pythonXY, alt-pythonXY-setuptools, alt-pythonXY-wheel, alt-pythonXY-pip with bootstrap=1
# 2) build alt-pythonXY-setuptools, alt-pythonXY-wheel, alt-pythonXY

CFLAGS   = $(shell dpkg-buildflags --get CFLAGS)
CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS)

CFLAGS		+= -D_GNU_SOURCE -fPIC -fwrapv -I/opt/alt/sqlite/usr/include
CPPFLAGS	+= $(shell pkg-config --cflags-only-I libffi)
CXXFLAGS	+= -D_GNU_SOURCE -fPIC -fwrapv
LDFLAGS		= $(CFLAGS) -L/opt/alt/sqlite/usr/lib/$(DEB_BUILD_MULTIARCH) -Wl,-rpath=$(_libdir),-rpath=/opt/alt/sqlite/usr/lib/$(DEB_BUILD_MULTIARCH) -L/usr/lib/
LINKCC		:= gcc

PKG_CONFIG_PATH += :/opt/alt/sqlite/usr/lib/$(DEB_BUILD_MULTIARCH)/pkgconfig
ifeq ($(shell pkg-config openssl && echo 1),1)
CFLAGS += $(shell pkg-config --cflags openssl)
LDFLAGS += $(shell pkg-config --libs-only-L openssl)
endif
ifeq ($(shell pkg-config libtirpc && echo 1),1)
CFLAGS += $(shell pkg-config --cflags libtirpc)
endif
ifeq ($(shell pkg-config tcl && echo 1),1)
CFLAGS += $(shell pkg-config --cflags tcl)
endif
CFLAGS += -I/usr/include/tcl8.6
# Force CC
CC := gcc
OPT			:= $(CFLAGS) -D_GNU_SOURCE -fPIC -fwrapv

export CFLAGS
export CPPFLAGS
export CXXFLAGS
export LDFLAGS
export OPT
export PKG_CONFIG_PATH

LDVERSION_optimized	:= $(pybasever)
LDVERSION_debug		:= $(pybasever)d

SOABI_optimized		:= cpython-$(pyshortver)
SOABI_debug			:= cpython-$(pyshortver)d
ifeq ($(DEB_HOST_ARCH),amd64)
  SOABI_optimized	:= cpython-$(pyshortver)-$(DEB_HOST_MULTIARCH)
  SOABI_debug		:= cpython-$(pyshortver)d-$(DEB_HOST_MULTIARCH)
endif

bytecode_suffixes	:= .cpython-$(pyshortver)*.py?

py_SOVERSION			:= 1.0
py_INSTSONAME_optimized	:= libpython$(LDVERSION_optimized).so.$(py_SOVERSION)
py_INSTSONAME_debug		:= libpython$(LDVERSION_debug).so.$(py_SOVERSION)

with_valgrind		:= 1
with_gdbm		:= 1
with_debug_build	:= 1
with_testing		?= 1

NJOBS := -j$(shell getconf _NPROCESSORS_ONLN)

DPKG_CFLAGS = $(CFLAGS)
DPKG_CFLAGS += -fno-semantic-interposition

CONF_EXTRA_OPT =
ifeq ($(with_valgrind),1)
  CONF_EXTRA_OPT += --with-valgrind
endif

ifeq ($(bootstrap),0)
  CONF_EXTRA_OPT += --with-lto -with-dtrace
endif

$(eval LIBTIX = $(shell ls -1 /usr/lib/libTix*so | sed 's@.*/lib@-l@;s@\.so$$@@'))

define BuildPython
mkdir -p build/$(1); \
cd build/$(1); \
$(BUILD_DIR)/configure \
	--prefix=$(_prefix) \
	--libdir=$(_libdir) \
	--enable-ipv6 \
	--enable-shared \
	--enable-unicode=ucs4 \
	--with-dbmliborder=gdbm:ndbm:bdb \
	--with-system-ffi \
	--with-valgrind \
	$(4);

sed -i 's@-ltix@$(LIBTIX)@' build/$(1)/Makefile
sed -i '/-DWITH_TIX -ltix/s@^\#@@;s@-ltix[0-9\.]*@$(LIBTIX)@' Modules/Setup.dist

cd $(BUILD_DIR); \
LD_LIBRARY_PATH=$(BUILD_DIR)/build/$(1) $(MAKE) -C build/$(1) EXTRA_CFLAGS="$(CFLAGS)" $(NJOBS)

if $(5); then \
	cd $(BUILD_DIR)/build/$(1); \
	LD_LIBRARY_PATH=$(BUILD_DIR)/build/$(1) ./$(2) \
		$(BUILD_DIR)/Tools/scripts/pathfix.py \
		-i "/usr/bin/env $(2)" \
		$(BUILD_DIR); \
fi

cd $(BUILD_DIR) && ln -s $(2) $(3)
LD_LIBRARY_PATH=$(BUILD_DIR)/build/$(1) PATH=${PATH}:$(BUILD_DIR)/build/$(1) make -C build/$(1) -s EXTRA_CFLAGS="$(CFLAGS)" $(NJOBS)
endef

# Use a common function to do an install for all our configurations:
define InstallPython
cd $(BUILD_DIR); \
$(MAKE) -C $(BUILD_DIR)/build/$(1) install DESTDIR=$(buildroot)
endef


%:
	dh $@

override_dh_auto_configure:
	find -name '*.exe' -print -delete
	for SUBDIR in darwin libffi libffi_arm_wince libffi_msvc libffi_osx ; do \
		rm -r Modules/_ctypes/$$SUBDIR || exit 1 ;\
	done
	rm -r Modules/zlib || exit 1
	patch -p1 < debian/patches/python-2.7.1-config.patch
	patch -p1 < debian/patches/00001-pydocnogui.patch
	patch -p1 < debian/patches/python-2.5-cflags.patch
	patch -p1 < debian/patches/python-2.5.1-plural-fix.patch
	patch -p1 < debian/patches/python-2.5.1-sqlite-encoding.patch
	patch -p1 < debian/patches/python-2.7-lib64-sysconfig.patch
	patch -p1 < debian/patches/00104-lib64-fix-for-test_install.patch
	patch -p1 < debian/patches/python-2.7rc1-socketmodule-constants.patch
	patch -p1 < debian/patches/python-2.7rc1-socketmodule-constants2.patch
	patch -p1 < debian/patches/python-2.6-rpath.patch
	patch -p1 < debian/patches/python-2.6.4-distutils-rpath.patch
	patch -p1 < debian/patches/00111-no-static-lib.patch
	patch -p1 < debian/patches/00112-2.7.12-debug-build.patch
	patch -p1 < debian/patches/00113-more-configuration-flags.patch
	patch -p1 < debian/patches/00114-statvfs-f_flag-constants.patch
	patch -p1 < debian/patches/00121-add-Modules-to-build-path.patch
	patch -p1 < debian/patches/python-2.7.1-fix_test_abc_with_COUNT_ALLOCS.patch
	patch -p1 < debian/patches/python-2.7.2-add-extension-suffix-to-python-config.patch
	patch -p1 < debian/patches/00132-add-rpmbuild-hooks-to-unittest.patch
	patch -p1 < debian/patches/00133-skip-test_dl.patch
	patch -p1 < debian/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
	patch -p1 < debian/patches/00135-skip-test-within-test_weakref-in-debug-build.patch
	patch -p1 < debian/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch
	patch -p1 < debian/patches/00137-skip-distutils-tests-that-fail-in-rpmbuild.patch
	patch -p1 < debian/patches/00138-fix-distutils-tests-in-debug-build.patch
	patch -p1 < debian/patches/00141-fix-test_gc_with_COUNT_ALLOCS.patch
	patch -p1 < debian/patches/00142-skip-failing-pty-tests-in-rpmbuild.patch
	patch -p1 < debian/patches/00143-tsc-on-ppc.patch
ifeq ($(with_gdbm),0)
	patch -p1 < debian/patches/00144-no-gdbm.patch
endif
	patch -p1 < debian/patches/00147-add-debug-malloc-stats.patch
	patch -p1 < debian/patches/00155-avoid-ctypes-thunks.patch
	patch -p1 < debian/patches/00156-gdb-autoload-safepath.patch
	patch -p1 < debian/patches/00165-crypt-module-salt-backport.patch
	mv Modules/cryptmodule.c Modules/_cryptmodule.c
	patch -p1 < debian/patches/00167-disable-stack-navigation-tests-when-optimized-in-test_gdb.patch
	patch -p1 < debian/patches/00169-avoid-implicit-usage-of-md5-in-multiprocessing.patch
	patch -p1 < debian/patches/00170-gc-assertions.patch
	patch -p1 < debian/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
	patch -p1 < debian/patches/00174-fix-for-usr-move.patch
	patch -p1 < debian/patches/00181-allow-arbitrary-timeout-in-condition-wait.patch
	patch -p1 < debian/patches/00185-urllib2-honors-noproxy-for-ftp.patch
	patch -p1 < debian/patches/00189-gdb-py-bt-dont-raise-exception-from-eval.patch
	patch -p1 < debian/patches/00191-disable-NOOP.patch
	patch -p1 < debian/patches/00193-enable-loading-sqlite-extensions.patch
	patch -p1 < debian/patches/06000-replacement_sqlite_on_alt-sqlite.patch
ifeq ($(bootstrap),0)
	patch -p1 < debian/patches/00198-add-rewheel-module.patch
else
	rm Lib/ensurepip/_bundled/*.whl
endif
	patch -p1 < debian/patches/05000-autotool-intermediates.patch

	# Applying TuxCare ELS Patches
	# ELS: Please keep the patch order in sync with rpm spec.
	patch -p1 < debian/patches/CVE-2019-20907.patch
	patch -p1 < debian/patches/CVE-2022-48565.patch
	patch -p1 < debian/patches/CVE-2024-7592.patch
	patch -p1 < debian/patches/CVE-2024-6232.patch
	patch -p1 < debian/patches/CVE-2022-48560.patch
	patch -p1 < debian/patches/CVE-2022-48560-2.patch
	patch -p1 < debian/patches/CVE-2022-0391.patch
	patch -p1 < debian/patches/CVE-2023-24329.patch
	patch -p1 < debian/patches/CVE-2023-24329-2.patch
	patch -p1 < debian/patches/CVE-2022-45061.patch
	patch -p1 < debian/patches/CVE-2019-9674.patch
	patch -p1 < debian/patches/CVE-2021-3737.patch
	patch -p1 < debian/patches/CVE-2022-48566.patch
	patch -p1 < debian/patches/CVE-2023-40217.patch
	patch -p1 < debian/patches/CVE-2023-27043.patch
	patch -p1 < debian/patches/CVE-2023-27043-bugfix.patch
	patch -p1 < debian/patches/CVE-2020-8492.patch
	patch -p1 < debian/patches/CVE-2021-3733.patch
	patch -p1 < debian/patches/CVE-2021-23336.patch
	patch -p1 < debian/patches/CVE-2020-26116.patch
	patch -p1 < debian/patches/CVE-2015-20107.patch
	patch -p1 < debian/patches/CVE-2025-12084.patch
	patch -p1 < debian/patches/CVE-2025-8194.patch
	patch -p1 < debian/patches/CVE-2025-6075.patch
	patch -p1 < debian/patches/CVE-2026-4519.patch
	patch -p1 < debian/patches/CVE-2021-3177.patch
	patch -p1 < debian/patches/CVE-2021-4189.patch
	patch -p1 < debian/patches/CVE-2024-0450.patch
	patch -p1 < debian/patches/CVE-2020-27619.patch
	patch -p1 < debian/patches/CVE-2026-6100.patch
	patch -p1 < debian/patches/CVE-2026-1299.patch
	patch -p1 < debian/patches/CVE-2024-6923.patch
	patch -p1 < debian/patches/CVE-2024-0397.patch
	patch -p1 < debian/patches/CVE-2021-28861.patch
	patch -p1 < debian/patches/CVE-2026-3446.patch
	patch -p1 < debian/patches/CVE-2026-4224.patch
	patch -p1 < debian/patches/CVE-2026-0672-CVE-2026-3644.patch
	patch -p1 < debian/patches/CVE-2026-7210.patch
	patch -p1 < debian/patches/CVE-2026-41080.patch
	patch -p1 < debian/patches/CVE-2025-15366-CVE-2025-15367.patch
	patch -p1 < debian/patches/CVE-2024-11168.patch
	patch -p1 < debian/patches/CVE-2024-50602.patch
	patch -p1 < debian/patches/CVE-2025-0938.patch
	patch -p1 < debian/patches/CVE-2025-6069.patch
	patch -p1 < debian/patches/CVE-2025-8291.patch
	patch -p1 < debian/patches/CVE-2025-13462.patch
	patch -p1 < debian/patches/CVE-2013-0340.patch
	patch -p1 < debian/patches/CVE-2026-0865.patch
	patch -p1 < debian/patches/CVE-2026-1502.patch
	patch -p1 < debian/patches/CVE-2026-6019.patch
	patch -p1 < debian/patches/CVE-2026-9669.patch

DEBUG_CONFIGURE_FLAGS = --without-ensurepip --with-pydebug --with-count-allocs --with-call-profile
ifneq ($(filter $(DEB_HOST_ARCH),amd64 i386 powerpc ppc64 ppc64el),)
  DEBUG_CONFIGURE_FLAGS += --with-tsc
endif

override_dh_auto_build:
# Call the above to build each configuration.
ifeq ($(with_debug_build),1)
	$(call BuildPython,debug,python-debug,python$(pybasever)-debug,$(DEBUG_CONFIGURE_FLAGS),false)
endif # with_debug_build
	$(call BuildPython,optimized,python,python$(pybasever),--without-ensurepip,true)

# ======================================================
# Installing the built code:
# ======================================================

override_dh_auto_install:
ifeq ($(with_debug_build),1)
	$(call InstallPython,debug,python$(pybasever)-debug)
endif
	$(call InstallPython,optimized,python$(pybasever))

# Fix the interpreter path in binaries installed by distutils
# (which changes them by itself)
# Make sure we preserve the file permissions
	for fixed in $(buildroot)$(_bindir)/pydoc; do \
		sed 's@#!.*/python$$@#!/usr/bin/env python$(pybasever)@' $$fixed > $$fixed- && cat $$fixed- > $$fixed && rm -f $$fixed-; \
	done

# Junk, no point in putting in -test sub-pkg
	rm -f $(buildroot)/$(pylibdir)/idlelib/testcode.py*

	mv $(buildroot)$(_bindir)/python $(buildroot)$(_bindir)/python$(pyshortver)
ifeq ($(with_debug_build),1)
	mv $(buildroot)$(_bindir)/python-debug $(buildroot)$(_bindir)/python$(pyshortver)-debug
endif # with_debug_build
	#mv $(buildroot)/$(_mandir)/man1/python.1 $(buildroot)/$(_mandir)/man1/python$(pybasever).1

# tools
# Fix bug #143667: python should own /usr/lib/python2.x on 64-bit machines
	install -d $(buildroot)$(sitelib)

#pynche
	install -p -m755 $(_sourcedir)/pynche $(buildroot)$(_bindir)/pynche
	chmod 755 $(buildroot)$(_bindir)/pynche
	rm -f Tools/pynche/*.pyw
	cp -rp Tools/pynche $(buildroot)$(sitelib)/
	mv Tools/pynche/README Tools/pynche/README.pynche

#gettext
	install -m755  Tools/i18n/pygettext.py $(buildroot)$(_bindir)/
	install -m755  Tools/i18n/msgfmt.py $(buildroot)$(_bindir)/

# Useful development tools
	install -m755 -d $(buildroot)$(tools_dir)/scripts
	install Tools/README $(buildroot)$(tools_dir)/
	install Tools/scripts/*py $(buildroot)$(tools_dir)/scripts/

# Documentation tools
	install -m755 -d $(buildroot)$(doc_tools_dir)

# Useful demo scripts
	install -m755 -d $(buildroot)$(demo_dir)
	cp -ar Demo/* $(buildroot)$(demo_dir)

# Get rid of crap
	find $(buildroot)/ -name "*~"|xargs rm -f
	find $(buildroot)/ -name ".cvsignore"|xargs rm -f
	find $(buildroot)/ -name "*.bat"|xargs rm -f
	find . -name "*~"|xargs rm -f
	find . -name ".cvsignore"|xargs rm -f
#zero length
	rm -f $(buildroot)$(pylibdir)/LICENSE.txt
	rm -f $(buildroot)$(sitelib)/README

# Fix for bug #136654
	rm -f $(buildroot)$(pylibdir)/email/test/data/audiotest.au $(buildroot)$(pylibdir)/test/audiotest.au

	ln -s $(_libdir)/libpython$(pybasever).so $(buildroot)$(pylibdir)/config/libpython$(pybasever).so


# Fix for bug 201434: make sure distutils looks at the right pyconfig.h file
# Similar for sysconfig: sysconfig.get_config_h_filename tries to locate
# pyconfig.h so it can be parsed, and needs to do this at runtime in site.py
# when python starts up.
#
# Split this out so it goes directly to the pyconfig-32.h/pyconfig-64.h
# variants:

# Install macros for rpm:
#mkdir -p $(buildroot)/etc/rpm/
#install -m 644 $(SOURCE6) $(buildroot)/etc/rpm

# Ensure that the curses module was linked against libncursesw.so, rather than
# libncurses.so (bug 539917)
	ldd $(buildroot)/$(dynload_dir)/_curses*.so \
		| grep libncurses.so && exit 1 || :

# Ensure that the debug modules are linked against the debug libpython, and
# likewise for the optimized modules and libpython:
	for Module in $(buildroot)/$(dynload_dir)/*.so ; do \
		case $$Module in \
		*_d.so) \
			echo "check $$Module linked against optimized $(py_INSTSONAME_optimized)"; \
			ldd $$Module | grep $(py_INSTSONAME_optimized) && exit 1 || :; \
			;; \
		*) \
			echo "check $$Module linked against optimized $(py_INSTSONAME_debug)"; \
			ldd $$Module | grep $(py_INSTSONAME_debug) && exit 1 || :; \
			;; \
		esac \
	done

# Make library-files user writable
	chmod 755 $(buildroot)$(dynload_dir)/*.so
	chmod 755 $(buildroot)$(_libdir)/libpython$(pybasever).so.1.0
ifeq ($(with_debug_build),1)
	chmod 755 $(buildroot)$(_libdir)/libpython$(pybasever)_d.so.1.0
endif

	mkdir -p $(buildroot)$(_prefix)/etc/
	echo "[python$(pybasever)]" > $(buildroot)$(_prefix)/etc/locked_extensions.ini

	for file in $(find $(buildroot) -type f); do \
		sed -i -e '1!b;s@/usr/bin/env python@$(_bindir)/python@' $$file; \
		sed -i -e '1!b;s@^#!/bin/python@#!$(_bindir)/python@' $$file; \
	done

ifeq ($(bootstrap),0)
	rm -rf $(buildroot)$(pylibdir)/ensurepip/_bundled/
endif

# Packaging
	dh_movefiles -palt-python$(pyshortver) \
	  .${_bindir}/pydoc* \
	  .${_bindir}/python${LDVERSION_optimized} \
	  .${_bindir}/python${pybasever} \
	  .${_bindir}/python${pyshortver} \
	  .${_bindir}/python2 \
	  .${_mandir}/* \
	  .${_prefix}/etc/locked_extensions.ini

	dh_link -palt-python$(pyshortver) \
	  .${_bindir}/python${pybasever} .${_bindir}/python

	dh_installdirs -palt-python$(pyshortver)-libs -A \
	  $(_libdir) \
	  $(dynload_dir) \
	  $(pylibdir) \
	  $(sitelib)/__pycache__ \
	  ${pylibdir}/lib2to3 \
	  ${pylibdir}/unittest

	dh_movefiles -palt-python$(pyshortver)-libs \
	  .${_includedir}/python${LDVERSION_optimized}/pyconfig.h \
	  .${_libdir}/libpython${LDVERSION_optimized}.so.1.0 \
	  .$(dynload_dir)/Python-$(version)-py$(pybasever).egg-info \
	  .$(dynload_dir)/_bisectmodule.so \
	  .$(dynload_dir)/_bsddb.so \
	  .$(dynload_dir)/_codecs_cn.so \
	  .$(dynload_dir)/_codecs_hk.so \
	  .$(dynload_dir)/_codecs_iso2022.so \
	  .$(dynload_dir)/_codecs_jp.so \
	  .$(dynload_dir)/_codecs_kr.so \
	  .$(dynload_dir)/_codecs_tw.so \
	  .$(dynload_dir)/_collectionsmodule.so \
	  .$(dynload_dir)/_cryptmodule.so \
	  .$(dynload_dir)/_csv.so \
	  .$(dynload_dir)/_ctypes.so \
	  .$(dynload_dir)/_curses.so \
	  .$(dynload_dir)/_curses_panel.so \
	  .$(dynload_dir)/_elementtree.so \
	  .$(dynload_dir)/_functoolsmodule.so \
	  .$(dynload_dir)/_hashlib.so \
	  .$(dynload_dir)/_heapq.so \
	  .$(dynload_dir)/_hotshot.so \
	  .$(dynload_dir)/_io.so \
	  .$(dynload_dir)/_json.so \
	  .$(dynload_dir)/_localemodule.so \
	  .$(dynload_dir)/_lsprof.so \
	  .$(dynload_dir)/_md5module.so \
	  .$(dynload_dir)/_multibytecodecmodule.so \
	  .$(dynload_dir)/_multiprocessing.so \
	  .$(dynload_dir)/_randommodule.so \
	  .$(dynload_dir)/_sha256module.so \
	  .$(dynload_dir)/_sha512module.so \
	  .$(dynload_dir)/_shamodule.so \
	  .$(dynload_dir)/_socketmodule.so \
	  .$(dynload_dir)/_sqlite3.so \
	  .$(dynload_dir)/_ssl.so \
	  .$(dynload_dir)/_struct.so \
	  .$(dynload_dir)/arraymodule.so \
	  .$(dynload_dir)/audioop.so \
	  .$(dynload_dir)/binascii.so \
	  .$(dynload_dir)/bz2.so \
	  .$(dynload_dir)/cPickle.so \
	  .$(dynload_dir)/cStringIO.so \
	  .$(dynload_dir)/cmathmodule.so \
	  .$(dynload_dir)/datetime.so \
	  .$(dynload_dir)/dbm.so \
	  .$(dynload_dir)/dlmodule.so \
	  .$(dynload_dir)/fcntlmodule.so \
	  .$(dynload_dir)/future_builtins.so \
	  .$(dynload_dir)/grpmodule.so \
	  .$(dynload_dir)/imageop.so \
	  .$(dynload_dir)/itertoolsmodule.so \
	  .$(dynload_dir)/linuxaudiodev.so \
	  .$(dynload_dir)/math.so \
	  .$(dynload_dir)/mmapmodule.so \
	  .$(dynload_dir)/nismodule.so \
	  .$(dynload_dir)/operator.so \
	  .$(dynload_dir)/ossaudiodev.so \
	  .$(dynload_dir)/parsermodule.so \
	  .$(dynload_dir)/pyexpat.so \
	  .$(dynload_dir)/readline.so \
	  .$(dynload_dir)/resource.so \
	  .$(dynload_dir)/selectmodule.so \
	  .$(dynload_dir)/spwdmodule.so \
	  .$(dynload_dir)/stropmodule.so \
	  .$(dynload_dir)/syslog.so \
	  .$(dynload_dir)/termios.so \
	  .$(dynload_dir)/timemodule.so \
	  .$(dynload_dir)/timingmodule.so \
	  .$(dynload_dir)/unicodedata.so \
	  .$(dynload_dir)/xxsubtype.so \
	  .$(dynload_dir)/zlibmodule.so \
	  .$(pylibdir)/*.doc \
	  .$(pylibdir)/*.py* \
	  .$(pylibdir)/bsddb/*.py* \
	  .$(pylibdir)/compiler \
	  .$(pylibdir)/ctypes/*.py* \
	  .$(pylibdir)/ctypes/macholib \
	  .$(pylibdir)/curses \
	  .$(pylibdir)/distutils/*.py* \
	  .$(pylibdir)/distutils/README \
	  .$(pylibdir)/distutils/command \
	  .$(pylibdir)/email/*.py* \
	  .$(pylibdir)/email/mime \
	  .$(pylibdir)/encodings \
	  .$(pylibdir)/ensurepip/* \
	  .$(pylibdir)/hotshot \
	  .$(pylibdir)/idlelib \
	  .$(pylibdir)/importlib \
	  .$(pylibdir)/json/*.py* \
	  .$(pylibdir)/lib2to3 \
	  .$(pylibdir)/logging \
	  .$(pylibdir)/multiprocessing \
	  .$(pylibdir)/plat-linux2 \
	  .$(pylibdir)/pydoc_data \
	  .$(pylibdir)/sqlite3/*.py* \
	  .$(pylibdir)/test/__init__.py* \
	  .$(pylibdir)/test/test_support.py* \
	  .$(pylibdir)/unittest \
	  .$(pylibdir)/wsgiref \
	  .$(pylibdir)/wsgiref.egg-info \
	  .$(pylibdir)/xml
ifeq ($(with_gdbm),1)
	dh_movefiles -palt-python$(pyshortver)-libs \
	  .$(dynload_dir)/gdbmmodule.so
endif

	dh_movefiles -palt-python$(pyshortver)-devel \
	  -X.${pylibdir}/config-${LDVERSION_optimized}-$(DEB_BUILD_MULTIARCH)/Makefile \
	  .${_bindir}/msgfmt.py \
	  .${_bindir}/pygettext.py \
	  .${_bindir}/python${LDVERSION_optimized}-*-config \
	  .${_bindir}/python${LDVERSION_optimized}-config \
	  .${_bindir}/python${pybasever}-config \
	  .${_bindir}/python-config \
	  .${_bindir}/python2-config \
	  .${_includedir}/python${LDVERSION_optimized}/*.h \
	  .${_libdir}/libpython${LDVERSION_optimized}.so \
	  .${_libdir}/pkgconfig/python-$(pybasever).pc \
	  .${_libdir}/pkgconfig/python.pc \
	  .${_libdir}/pkgconfig/python2.pc \
	  .${pylibdir}/config/

	dh_installdocs -palt-python$(pyshortver)-devel \
	  Misc/README.valgrind \
	  Misc/valgrind-python.supp

	dh_movefiles -palt-python$(pyshortver)-idle \
	  .${_bindir}/idle* \
	  .${_datadir}/icons/hicolor/*/apps/idle3.* \
	  .${pylibdir}/idlelib

	dh_movefiles -palt-python$(pyshortver)-tkinter \
	  -X.${pylibdir}/tkinter/test \
	  .${dynload_dir}/_tkinter.so \
	  .${pylibdir}/__pycache__/turtle*${bytecode_suffixes} \
	  .${pylibdir}/lib-tk \
	  .${pylibdir}/turtledemo/*.cfg \
	  .${pylibdir}/turtledemo/*.py \
	  .${pylibdir}/turtledemo/__pycache__/*${bytecode_suffixes}

	dh_movefiles -palt-python$(pyshortver)-test \
	  .${dynload_dir}/_ctypes_test.so \
	  .${dynload_dir}/_testcapimodule.so \
	  .${pylibdir}/bsddb/test \
	  .${pylibdir}/ctypes/test \
	  .${pylibdir}/distutils/tests \
	  .${pylibdir}/email/test \
	  .${pylibdir}/json/tests \
	  .${pylibdir}/lib2to3/tests \
	  .${pylibdir}/sqlite3/test \
	  .${pylibdir}/test/*

	dh_movefiles -palt-python$(pyshortver)-tools \
	  .$(sitelib)/pynche \
	  .${_bindir}/2to3 \
	  .${_bindir}/pynche \
	  .${_bindir}/smtpd.py \
	  .${pylibdir}/Demo \
	  .${pylibdir}/Tools

ifeq ($(with_debug_build),1)
	dh_movefiles -palt-python$(pyshortver)-debug \
	  .$(_includedir)/python$(pybasever)-debug/*.h \
	  .$(_libdir)/libpython$(pybasever)_d.so \
	  .$(_libdir)/libpython$(pybasever)_d.so.1.0 \
	  .${_bindir}/python$(pybasever)-debug \
	  .${_bindir}/python$(pyshortver)-debug \
	  .${_bindir}/python-debug-config \
	  .${_bindir}/python2-debug \
	  .${_bindir}/python2-debug-config \
	  .${_libdir}/pkgconfig/python-$(pybasever)-debug.pc \
	  .${_libdir}/pkgconfig/python-debug.pc \
	  .${_libdir}/pkgconfig/python2-debug.pc \
	  .${dynload_dir}/_bisectmodule_d.so \
	  .${dynload_dir}/_bsddb_d.so \
	  .${dynload_dir}/_codecs_cn_d.so \
	  .${dynload_dir}/_codecs_hk_d.so \
	  .${dynload_dir}/_codecs_iso2022_d.so \
	  .${dynload_dir}/_codecs_jp_d.so \
	  .${dynload_dir}/_codecs_kr_d.so \
	  .${dynload_dir}/_codecs_tw_d.so \
	  .${dynload_dir}/_collectionsmodule_d.so \
	  .${dynload_dir}/_cryptmodule_d.so \
	  .${dynload_dir}/_csv_d.so \
	  .${dynload_dir}/_ctypes_d.so \
	  .${dynload_dir}/_ctypes_test_d.so \
	  .${dynload_dir}/_curses_d.so \
	  .${dynload_dir}/_curses_panel_d.so \
	  .${dynload_dir}/_elementtree_d.so \
	  .${dynload_dir}/_functoolsmodule_d.so \
	  .${dynload_dir}/_hashlib_d.so \
	  .${dynload_dir}/_heapq_d.so \
	  .${dynload_dir}/_hotshot_d.so \
	  .${dynload_dir}/_io_d.so \
	  .${dynload_dir}/_json_d.so \
	  .${dynload_dir}/_localemodule_d.so \
	  .${dynload_dir}/_lsprof_d.so \
	  .${dynload_dir}/_md5module_d.so \
	  .${dynload_dir}/_multibytecodecmodule_d.so \
	  .${dynload_dir}/_multiprocessing_d.so \
	  .${dynload_dir}/_randommodule_d.so \
	  .${dynload_dir}/_sha256module_d.so \
	  .${dynload_dir}/_sha512module_d.so \
	  .${dynload_dir}/_shamodule_d.so \
	  .${dynload_dir}/_socketmodule_d.so \
	  .${dynload_dir}/_sqlite3_d.so \
	  .${dynload_dir}/_ssl_d.so \
	  .${dynload_dir}/_struct_d.so \
	  .${dynload_dir}/_testcapimodule_d.so \
	  .${dynload_dir}/_tkinter_d.so \
	  .${dynload_dir}/arraymodule_d.so \
	  .${dynload_dir}/audioop_d.so \
	  .${dynload_dir}/binascii_d.so \
	  .${dynload_dir}/bz2_d.so \
	  .${dynload_dir}/cPickle_d.so \
	  .${dynload_dir}/cStringIO_d.so \
	  .${dynload_dir}/cmathmodule_d.so \
	  .${dynload_dir}/datetime_d.so \
	  .${dynload_dir}/dbm_d.so \
	  .${dynload_dir}/dlmodule_d.so \
	  .${dynload_dir}/fcntlmodule_d.so \
	  .${dynload_dir}/future_builtins_d.so \
	  .${dynload_dir}/grpmodule_d.so \
	  .${dynload_dir}/imageop_d.so \
	  .${dynload_dir}/itertoolsmodule_d.so \
	  .${dynload_dir}/linuxaudiodev_d.so \
	  .${dynload_dir}/math_d.so \
	  .${dynload_dir}/mmapmodule_d.so \
	  .${dynload_dir}/nismodule_d.so \
	  .${dynload_dir}/operator_d.so \
	  .${dynload_dir}/ossaudiodev_d.so \
	  .${dynload_dir}/parsermodule_d.so \
	  .${dynload_dir}/pyexpat_d.so \
	  .${dynload_dir}/readline_d.so \
	  .${dynload_dir}/resource_d.so \
	  .${dynload_dir}/selectmodule_d.so \
	  .${dynload_dir}/spwdmodule_d.so \
	  .${dynload_dir}/stropmodule_d.so \
	  .${dynload_dir}/syslog_d.so \
	  .${dynload_dir}/termios_d.so \
	  .${dynload_dir}/timemodule_d.so \
	  .${dynload_dir}/timingmodule_d.so \
	  .${dynload_dir}/unicodedata_d.so \
	  .${dynload_dir}/xxsubtype_d.so \
	  .${dynload_dir}/zlibmodule_d.so \
	  .${pylibdir}/config-debug/*
ifeq ($(with_gdbm),1)
	dh_movefiles -palt-python$(pyshortver)-debug \
	  .${dynload_dir}/gdbmmodule_d.so
endif
endif # with_debug_build

override_dh_shlibdeps:
	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

override_dh_missing:
	dh_missing --fail-missing

# ELS: Exclude tests known to fail.
#
EXCLUDE_TESTS_DEBUG := -x test_distutils test_dl test_signal test_sys

EXCLUDE_TESTS_OPTIMIZED := -x test_distutils test_dl test_signal

override_dh_auto_test:
ifeq ($(with_testing),1)
ifeq ($(with_debug_build),1)
	echo STARTING: CHECKING OF PYTHON FOR CONFIGURATION: debug
	EXTRATESTOPTS="--verbose $(EXCLUDE_TESTS_DEBUG)" $(MAKE) -C $(BUILD_DIR)/build/debug test
	echo FINISHED: CHECKING OF PYTHON FOR CONFIGURATION: debug
endif # with_debug_build

	echo STARTING: CHECKING OF PYTHON FOR CONFIGURATION: optimized
	EXTRATESTOPTS="--verbose $(EXCLUDE_TESTS_OPTIMIZED)" LD_LIBRARY_PATH=$(BUILD_DIR)/build/$(1) $(MAKE) -C $(BUILD_DIR)/build/optimized test
	echo FINISHED: CHECKING OF PYTHON FOR CONFIGURATION: optimized
endif # with_testing

override_dh_auto_clean:
