#!/usr/bin/make -f

pybasever  := 3.10
pyshortver := 310

export PYBUILD_VERBOSE=1
export DH_VERBOSE=1

export LC_ALL=C.UTF-8
export PYBUILD_DISABLE_python2=1
export PYTHONWARNINGS=i
export NAME=alt-python$(pyshortver)-wheel

version              := 0.37.0
bootstrap            ?= 0
buildroot            := $(CURDIR)/debian/tmp
pypi_name            := wheel
_prefix              := /opt/alt/python$(pyshortver)
_bindir              := ${_prefix}/bin
__alt_pythonXY       := ${_bindir}/python3
_libdir              := ${_prefix}/lib
_datadir             := ${_prefix}/share
_mandir              := ${_datadir}/man
python_wheeldir      := ${_datadir}/python-wheels
python_wheelname     := ${pypi_name}-${version}-py2.py3-none-any.whl
alt_pythonXY_sitelib := $(shell $(__alt_pythonXY) -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))")
CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic'
LDFLAGS='-Wl,-z,relro '
export PYTHONPATH="${_bindir}:${_libdir}:${alt_pythonXY_sitelib}:${python_wheeldir}"

%:
	dh $@

override_dh_auto_configure:

override_dh_auto_build:
	patch -p1 < debian/patches/CVE-2022-40898.patch
	$(__alt_pythonXY) setup.py build --executable="$(__alt_pythonXY) -s"
ifeq ($(bootstrap),0)
	$(__alt_pythonXY) setup.py bdist_wheel
endif


override_dh_auto_install:
	$(__alt_pythonXY) setup.py install -O1 --skip-build --root $(buildroot)
	mv ${buildroot}${_bindir}/${pypi_name} ${buildroot}${_bindir}/${pypi_name}-$(pybasever)
	cd ${buildroot}${_bindir}; ln -s ${pypi_name}-$(pybasever) ${buildroot}${_bindir}/${pypi_name}-3
	cd ${buildroot}${_bindir}; ln -s ${pypi_name}-3 ${buildroot}${_bindir}/${pypi_name}
ifeq (${bootstrap},0)
	mkdir -p ${buildroot}/${python_wheeldir}
	install -p dist/${python_wheelname} -t ${buildroot}${python_wheeldir}
endif

	dh_movefiles -palt-python$(pyshortver)-$(pypi_name) \
		.$(_bindir)/* \
		.$(alt_pythonXY_sitelib)/$(pypi_name)-$(version)-py$(pybasever).egg-info \
		.$(alt_pythonXY_sitelib)/$(pypi_name)/

	dh_installdocs -palt-python$(pyshortver)-$(pypi_name) \
		LICENSE.txt \
		MANIFEST.in \
		PKG-INFO \
		README.rst

ifeq (${bootstrap},0)
	dh_movefiles -palt-python$(pyshortver)-$(pypi_name)-$(pypi_name) \
		.$(python_wheeldir)/$(python_wheelname)

	dh_installdocs -palt-python$(pyshortver)-$(pypi_name)-$(pypi_name) \
		LICENSE.txt
endif

override_dh_missing:
	dh_missing --fail-missing

override_dh_auto_clean:

# CVE-2022-40898: regression checks mirroring the test cases from upstream
# commit 4419390 (tests/test_wheelfile.py), runnable without pytest
override_dh_auto_test:
	$(__alt_pythonXY) -c "import sys; sys.path.insert(0, 'src'); from wheel.wheelfile import WHEEL_INFO_RE as R; \
	assert R.match('foo-2-py3-none-any.whl').group('namever') == 'foo-2'; \
	assert R.match('foo-2-py2.py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl').group('namever') == 'foo-2'; \
	assert all(R.match(f) is None for f in ('test.whl', 'test-1.0.whl', 'test-1.0-py2.whl', 'test-1.0-py2-none.whl', 'test-1.0-py2-none-any', 'test-1.0-py 2-none-any.whl')); \
	print('CVE-2022-40898 regression checks passed')"
