File: rules

package info (click to toggle)
petsc4py 3.24.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,592 kB
  • sloc: python: 13,451; ansic: 1,768; makefile: 345; f90: 313; sh: 14
file content (112 lines) | stat: -rwxr-xr-x 6,049 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1

# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk

export PETSC4PY_VERSION=$(DEB_VERSION_UPSTREAM)

# use only major.minor as PETSc version (not major.minor.patch)
PETSC_VERSION=$(shell echo $(DEB_VERSION_UPSTREAM) | awk 'BEGIN { FS="."}; {print $$1"."$$2 }')$(PETSC_EXT)
export PETSC_DIR_REAL=/usr/lib/petscdir/petsc$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-real
export PETSC_DIR_COMPLEX=/usr/lib/petscdir/petsc$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-complex
export PETSC64_DIR_REAL=/usr/lib/petscdir/petsc64-$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-real
export PETSC64_DIR_COMPLEX=/usr/lib/petscdir/petsc64-$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH)-complex

PY3VER_DEFAULT := $(shell py3versions -dv)
DOC_PYTHONPATH=$(shell PYBUILD_NAME=petsc4py_real$(PETSC_VERSION) pybuild --print {build_dir} --pyver $(PY3VER_DEFAULT))

# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

# The sh4 build is running out of memory
# so build with reduced optimisations
ifeq ($(DEB_HOST_ARCH),sh4)
export DEB_CFLAGS_MAINT_APPEND  = -O1
export DEB_LDFLAGS_MAINT_APPEND = -O1 -Wl,-O1
endif

# main packaging script based on dh7 syntax
%:
	dh $@ --with python3,sphinxdoc --buildsystem=pybuild

execute_after_dh_clean:
	rm -rf .eggs
	rm -f src/petsc4py/PETSc.c src/petsc4py/PETSc.h src/petsc4py/PETSc_api.h
	rm -rf docs/source/reference docs/source/demo

override_dh_auto_configure-arch:
	PYBUILD_NAME=petsc4py_real$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_configure -ppython3-petsc4py-real$(PETSC_VERSION)
	PYBUILD_NAME=petsc4py_complex$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_configure -ppython3-petsc4py-complex$(PETSC_VERSION)
	PYBUILD_NAME=petsc4py_64_real$(PETSC_VERSION) PETSC_DIR=$(PETSC64_DIR_REAL)  dh_auto_configure -ppython3-petsc4py-64-real$(PETSC_VERSION)
	PYBUILD_NAME=petsc4py_64_complex$(PETSC_VERSION) PETSC_DIR=$(PETSC64_DIR_COMPLEX)  dh_auto_configure -ppython3-petsc4py-64-complex$(PETSC_VERSION)

override_dh_auto_configure-indep:
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
	if ! [ -d $(DOC_PYTHONPATH) ]; then \
	  PYBUILD_NAME=petsc4py_real$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_REAL)  pybuild -p$(PY3VER_DEFAULT) --configure; \
	fi
endif

override_dh_auto_build-arch:
	PYBUILD_NAME=petsc4py_real$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_build -ppython3-petsc4py-real$(PETSC_VERSION)
	rm -rf build
	PYBUILD_NAME=petsc4py_complex$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_build -ppython3-petsc4py-complex$(PETSC_VERSION)
	rm -rf build
	PYBUILD_NAME=petsc4py_64_real$(PETSC_VERSION) PETSC_DIR=$(PETSC64_DIR_REAL)  dh_auto_build -ppython3-petsc4py-64-real$(PETSC_VERSION)
	rm -rf build
	PYBUILD_NAME=petsc4py_64_complex$(PETSC_VERSION) PETSC_DIR=$(PETSC64_DIR_COMPLEX)  dh_auto_build -ppython3-petsc4py-64-complex$(PETSC_VERSION)
	rm -rf build
	# petsc4py embeds the deep PETSC_DIR path as RPATH in its library.
	# Swap it out for a standard path, or else dh_shlibdeps gets confused
	chrpath -d .pybuild/*python*/build/petsc4py/lib/PETSc*.so

override_dh_auto_build-indep:
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
	if ! [ -d $(DOC_PYTHONPATH)/petsc4py ]; then \
	  PYBUILD_NAME=petsc4py_real$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_REAL)  pybuild -p$(PY3VER_DEFAULT) --build; \
	fi
	cp debian/pylit.py $(DOC_PYTHONPATH)
	PYTHONPATH=$(DOC_PYTHONPATH) LOC=/usr/share/doc/petsc$(PETSC_VERSION)-doc/docs http_proxy='127.0.0.1:9' sphinx-build -N -bhtml       docs/source build/html # HTML generator
	PYTHONPATH=$(DOC_PYTHONPATH) LOC=/usr/share/doc/petsc$(PETSC_VERSION)-doc/docs http_proxy='127.0.0.1:9' sphinx-build -N -bman        docs/source build/man # Manpage generator
	rm -f $(DOC_PYTHONPATH)/pylit.py
endif

override_dh_auto_install-arch:
	PYBUILD_NAME=petsc4py_real$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_install -ppython3-petsc4py-real$(PETSC_VERSION)
	PYBUILD_NAME=petsc4py_complex$(PETSC_VERSION) PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_install -ppython3-petsc4py-complex$(PETSC_VERSION)
	PYBUILD_NAME=petsc4py_64_real$(PETSC_VERSION) PETSC_DIR=$(PETSC64_DIR_REAL)  dh_auto_install -ppython3-petsc4py-64-real$(PETSC_VERSION)
	PYBUILD_NAME=petsc4py_64_complex$(PETSC_VERSION) PETSC_DIR=$(PETSC64_DIR_COMPLEX)  dh_auto_install -ppython3-petsc4py-64-complex$(PETSC_VERSION)

# no need to auto-install anything for arch-indep packages (doc, dummy package)
override_dh_auto_install-indep: ;

override_dh_sphinxdoc:
	dh_sphinxdoc -Xpoisson2d

execute_after_dh_python3-indep:
	dh_numpy3 -i

execute_after_dh_python3-arch:
	dh_numpy3 -a
	mkdir -p debian/python3-petsc4py-real$(PETSC_VERSION)/$(PETSC_DIR_REAL)/lib debian/python3-petsc4py-complex$(PETSC_VERSION)/$(PETSC_DIR_COMPLEX)/lib
	mv debian/python3-petsc4py-real$(PETSC_VERSION)/usr/lib/python* debian/python3-petsc4py-real$(PETSC_VERSION)/$(PETSC_DIR_REAL)/lib
	mv debian/python3-petsc4py-complex$(PETSC_VERSION)/usr/lib/python* debian/python3-petsc4py-complex$(PETSC_VERSION)/$(PETSC_DIR_COMPLEX)/lib
	mkdir -p debian/python3-petsc4py-64-real$(PETSC_VERSION)/$(PETSC64_DIR_REAL)/lib debian/python3-petsc4py-64-complex$(PETSC_VERSION)/$(PETSC64_DIR_COMPLEX)/lib
	mv debian/python3-petsc4py-64-real$(PETSC_VERSION)/usr/lib/python* debian/python3-petsc4py-64-real$(PETSC_VERSION)/$(PETSC64_DIR_REAL)/lib
	mv debian/python3-petsc4py-64-complex$(PETSC_VERSION)/usr/lib/python* debian/python3-petsc4py-64-complex$(PETSC_VERSION)/$(PETSC64_DIR_COMPLEX)/lib

override_dh_compress:
	dh_compress -Xpdf

execute_after_dh_installdeb:
	grep __PETSC4PY_VERSION__ -ls debian/*/DEBIAN/* | xargs -r  sed -i -e 's/__PETSC4PY_VERSION__/$(PETSC4PY_VERSION)/'