File: Makefile

package info (click to toggle)
python-lupa 2.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 14,492 kB
  • sloc: python: 3,001; makefile: 74; sh: 6
file content (77 lines) | stat: -rw-r--r-- 2,811 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
PYTHON?=python3
USE_BUNDLE?=true
VERSION?=$(shell sed -ne "s|^VERSION\s*=\s*'\([^']*\)'.*|\1|p" setup.py)
WITH_CYTHON?=$(shell $(PYTHON)  -c 'import Cython.Build.Dependencies' >/dev/null 2>/dev/null && echo " --with-cython" || true)
WITH_PARALLEL?=$(shell $(PYTHON)  -c 'import sys ; print("-j6" if sys.version_info[0] >= 3 else "")' || true)
WITH_LUA_DLOPEN?=true
PYTHON_BUILD_VERSION?=*

MANYLINUX_IMAGES= \
	manylinux1_x86_64 \
	manylinux1_i686 \
	manylinux_2_24_i686 \
	manylinux_2_28_x86_64 \
	manylinux2014_aarch64 \
	manylinux_2_24_aarch64 \
	manylinux_2_28_aarch64 \
	manylinux_2_24_ppc64le \
	manylinux_2_24_s390x \
	musllinux_1_1_x86_64 \
	musllinux_1_1_aarch64

.PHONY: all local sdist test clean realclean

all:  local

local:
	LUPA_WITH_LUA_DLOPEN=$(WITH_LUA_DLOPEN) ${PYTHON} setup.py build_ext --inplace $(WITH_PARALLEL) $(WITH_CYTHON)

sdist dist/lupa-$(VERSION).tar.gz:
	${PYTHON} setup.py sdist

test: local
	PYTHONPATH=. $(PYTHON) -m unittest -v lupa.tests.suite

clean:
	rm -fr build lupa/_lupa*.so lupa/lua*.pyx lupa/*.c
	@for dir in third-party/*/; do $(MAKE) -C $${dir} clean; done

realclean: clean
	rm -fr lupa/_lupa.c

wheel:
	LUPA_WITH_LUA_DLOPEN=$(WITH_LUA_DLOPEN) $(PYTHON) setup.py build_ext $(WITH_PARALLEL) bdist_wheel $(WITH_CYTHON)

qemu-user-static:
	docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

wheel_manylinux: $(addprefix wheel_,$(MANYLINUX_IMAGES))
$(addprefix wheel_,$(filter-out %_x86_64, $(filter-out %_i686, $(MANYLINUX_IMAGES)))): qemu-user-static

wheel_%: dist/lupa-$(VERSION).tar.gz
	@echo "Building $(subst wheel_,,$@) wheels for Lupa $(VERSION)"
	mkdir -p wheelhouse_$(subst wheel_,,$@)
	time docker run --rm -t \
		-v $(shell pwd):/io \
		-e CFLAGS="-O3 -g0 -mtune=generic -pipe -fPIC -flto" \
		-e LDFLAGS="$(LDFLAGS) -fPIC -flto" \
		-e LD=gcc-ld \
		-e AR=gcc-ar \
		-e NM=gcc-nm \
		-e RANLIB=gcc-ranlib \
		-e LUPA_USE_BUNDLE=$(USE_BUNDLE) \
		-e LUPA_WITH_LUA_DLOPEN=$(WITH_LUA_DLOPEN) \
		-e WHEELHOUSE=wheelhouse_$(subst wheel_,,$@) \
		quay.io/pypa/$(subst wheel_,,$@) \
		bash -c 'echo "Python versions: $$(ls /opt/python/ | xargs -n 100 echo)" ; \
			for PYBIN in /opt/python/$(PYTHON_BUILD_VERSION)/bin; do \
				$$PYBIN/python -V; \
				{ time $$PYBIN/pip wheel -v -w /io/$$WHEELHOUSE /io/$< & } ; \
			done; wait; \
			for whl in /io/$$WHEELHOUSE/lupa-$(VERSION)-*-linux_*.whl; do auditwheel repair $$whl -w /io/$$WHEELHOUSE; done; \
			for whl in /io/$$WHEELHOUSE/lupa-$(VERSION)-*-m*linux*.whl; do \
				pyver=$${whl#*/lupa-$(VERSION)-}; pyver=$${pyver%%-m*}; \
				echo "Installing in $${pyver}: $${whl}"; \
				/opt/python/$${pyver}/bin/python -m pip install -U $${whl} && /opt/python/$${pyver}/bin/python -c "import lupa" || exit 1; \
				/opt/python/$${pyver}/bin/python -m pip uninstall -y lupa; \
			done; true'