File: rules

package info (click to toggle)
slepc4py 3.24.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,760 kB
  • sloc: python: 6,916; makefile: 129; ansic: 98; sh: 46
file content (153 lines) | stat: -rwxr-xr-x 9,800 bytes parent folder | download | duplicates (2)
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/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

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
DEB_VERSION := $(shell dpkg-parsechangelog -S Version)
DEB_NOEPOCH_VERSION := $(shell echo $(DEB_VERSION) | cut -d: -f2-)
DEB_UPSTREAM_VERSION := $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
DEB_STRIPPED_UPSTREAM_VERSION = $(shell echo $(DEB_UPSTREAM_VERSION) | sed -e 's/[\.\+]dfsg.*$$//p' )

# SLEPC4PY_VERSION is used for the package names, library sonames, and
# /usr/lib/petscdir subdirectory names.
export SLEPC4PY_VERSION=$(DEB_STRIPPED_UPSTREAM_VERSION)$(SLEPC_EXT)
# use only major.minor in general soname (rather than major.minor.patch.build)
export SLEPC_BASE_VERSION=$(shell echo $(SLEPC4PY_VERSION) | awk 'BEGIN { FS="."}; {print $$1"."$$2 }')

SLEPC_MAJOR_VERSION=$(shell echo $(SLEPC_BASE_VERSION) | sed "s/\..*//")
SLEPC_MINOR_VERSION=$(shell echo $(SLEPC_BASE_VERSION) | sed "s/.*\.//")
SLEPC_VERSION=$(SLEPC_MAJOR_VERSION).$(SLEPC_MINOR_VERSION)
SLEPC_NEXT_VERSION=$(shell echo $(SLEPC_MAJOR_VERSION).$$(( $(SLEPC_MINOR_VERSION) + 1 )) )

PETSC_DIR_REAL=/usr/lib/petscdir/petsc$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-real
SLEPC_DIR_REAL=/usr/lib/slepcdir/slepc$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-real
PETSC_DIR_COMPLEX=/usr/lib/petscdir/petsc$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-complex
SLEPC_DIR_COMPLEX=/usr/lib/slepcdir/slepc$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-complex

PETSC64_DIR_REAL=/usr/lib/petscdir/petsc64-$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-real
SLEPC64_DIR_REAL=/usr/lib/slepcdir/slepc64-$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-real
PETSC64_DIR_COMPLEX=/usr/lib/petscdir/petsc64-$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-complex
SLEPC64_DIR_COMPLEX=/usr/lib/slepcdir/slepc64-$(SLEPC_BASE_VERSION)/$(DEB_HOST_MULTIARCH)-complex

PY3VER_DEFAULT := $(shell py3versions -dv)
DOC_PYTHONPATH=$(shell PYBUILD_NAME=slepc4py_real 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


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

override_dh_clean:
	dh_clean
	rm -rf .eggs

# nothing to build for arch-indep (docs, dummy package)
override_dh_auto_configure-indep: ;
override_dh_auto_install-indep: ;

override_dh_auto_configure-arch:
	PYBUILD_NAME=slepc4py_real SLEPC_DIR=$(SLEPC_DIR_REAL)  PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_configure -ppython3-slepc4py-real$(SLEPC_BASE_VERSION)
	PYBUILD_NAME=slepc4py_complex SLEPC_DIR=$(SLEPC_DIR_COMPLEX)  PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_configure -ppython3-slepc4py-complex$(SLEPC_BASE_VERSION)
	PYBUILD_NAME=slepc4py_64_real SLEPC_DIR=$(SLEPC64_DIR_REAL)  PETSC_DIR=$(PETSC64_DIR_REAL)  dh_auto_configure -ppython3-slepc4py-64-real$(SLEPC_BASE_VERSION)
	PYBUILD_NAME=slepc4py_64_complex SLEPC_DIR=$(SLEPC64_DIR_COMPLEX)  PETSC_DIR=$(PETSC64_DIR_COMPLEX)  dh_auto_configure -ppython3-slepc4py-64-complex$(SLEPC_BASE_VERSION)

override_dh_auto_build-arch:
	PYBUILD_NAME=slepc4py_real SLEPC_DIR=$(SLEPC_DIR_REAL)  PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_build -ppython3-slepc4py-real$(SLEPC_BASE_VERSION)
	rm -rf build
	PYBUILD_NAME=slepc4py_complex SLEPC_DIR=$(SLEPC_DIR_COMPLEX)  PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_build -ppython3-slepc4py-complex$(SLEPC_BASE_VERSION)
	rm -rf build
	PYBUILD_NAME=slepc4py_64_real SLEPC_DIR=$(SLEPC64_DIR_REAL)  PETSC_DIR=$(PETSC64_DIR_REAL)  dh_auto_build -ppython3-slepc4py-64-real$(SLEPC_BASE_VERSION)
	rm -rf build
	PYBUILD_NAME=slepc4py_64_complex SLEPC_DIR=$(SLEPC64_DIR_COMPLEX)  PETSC_DIR=$(PETSC64_DIR_COMPLEX)  dh_auto_build -ppython3-slepc4py-64-complex$(SLEPC_BASE_VERSION)
	rm -rf build
	# slepc4py 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/slepc4py*/lib/SLEPc*.so

override_dh_auto_build-indep: export http_proxy=127.0.0.1:9
override_dh_auto_build-indep: export https_proxy=127.0.0.1:9
override_dh_auto_build-indep:
	if ! [ -d $(DOC_PYTHONPATH)/slepc4py ]; then \
	  PYBUILD_NAME=slepc4py_real SLEPC_DIR=$(SLEPC_DIR_REAL) SLEPC_DIR=$(SLEPC_DIR_REAL) PETSC_DIR=$(PETSC_DIR_REAL)  pybuild -p$(PY3VER_DEFAULT) --build; \
	fi
	cp debian/pylit.py $(DOC_PYTHONPATH)
	PYTHONPATH=$(DOC_PYTHONPATH) PETSC_DIR=/usr/lib/petsc SLEPC_DIR=/usr/lib/slepc PETSC_ARCH= \
	  LOC=/usr/share/doc/slepc$(SLEPC_VERSION)-doc/docs LOC_PETSC=/usr/share/doc/petsc$(SLEPC_VERSION)-doc/docs \
	  sphinx-build -M html docs/source .pybuild/docs
	PYTHONPATH=$(DOC_PYTHONPATH) PETSC_DIR=/usr/lib/petsc SLEPC_DIR=/usr/lib/slepc PETSC_ARCH= \
	  LOC=/usr/share/doc/slepc$(SLEPC_VERSION)-doc/docs LOC_PETSC=/usr/share/doc/petsc$(SLEPC_VERSION)-doc/docs \
	  sphinx-build -M man docs/source .pybuild/docs
	PYTHONPATH=$(DOC_PYTHONPATH) PETSC_DIR=/usr/lib/petsc SLEPC_DIR=/usr/lib/slepc PETSC_ARCH= \
	  LOC=/usr/share/doc/slepc$(SLEPC_VERSION)-doc/docs LOC_PETSC=/usr/share/doc/petsc$(SLEPC_VERSION)-doc/docs \
	  sphinx-build -M info docs/source .pybuild/docs || make MAKEINFO="makeinfo --no-split --force" -C .pybuild/docs/texinfo
	PYTHONPATH=$(DOC_PYTHONPATH) PETSC_DIR=/usr/lib/petsc SLEPC_DIR=/usr/lib/slepc PETSC_ARCH= \
	  LOC=/usr/share/doc/slepc$(SLEPC_VERSION)-doc/docs LOC_PETSC=/usr/share/doc/petsc$(SLEPC_VERSION)-doc/docs \
	  sphinx-build -M latexpdf docs/source .pybuild/docs
	rm -f $(DOC_PYTHONPATH)/pylit.py

override_dh_auto_install-arch:
	PYBUILD_NAME=slepc4py_real SLEPC_DIR=$(SLEPC_DIR_REAL)  PETSC_DIR=$(PETSC_DIR_REAL)  dh_auto_install -ppython3-slepc4py-real$(SLEPC_BASE_VERSION)
	PYBUILD_NAME=slepc4py_complex SLEPC_DIR=$(SLEPC_DIR_COMPLEX) PETSC_DIR=$(PETSC_DIR_COMPLEX)  dh_auto_install -ppython3-slepc4py-complex$(SLEPC_BASE_VERSION)
	PYBUILD_NAME=slepc4py_64_real SLEPC_DIR=$(SLEPC64_DIR_REAL)  PETSC_DIR=$(PETSC64_DIR_REAL)  dh_auto_install -ppython3-slepc4py-64-real$(SLEPC_BASE_VERSION)
	PYBUILD_NAME=slepc4py_64_complex SLEPC_DIR=$(SLEPC64_DIR_COMPLEX) PETSC_DIR=$(PETSC64_DIR_COMPLEX)  dh_auto_install -ppython3-slepc4py-64-complex$(SLEPC_BASE_VERSION)
	mkdir -p debian/python3-slepc4py-real$(SLEPC_BASE_VERSION)/usr debian/python3-slepc4py-complex$(SLEPC_BASE_VERSION)/usr
	mv debian/python3-slepc4py-real/usr/lib debian/python3-slepc4py-real$(SLEPC_BASE_VERSION)/usr
	mv debian/python3-slepc4py-complex/usr/lib debian/python3-slepc4py-complex$(SLEPC_BASE_VERSION)/usr
	mkdir -p debian/python3-slepc4py-64-real$(SLEPC_BASE_VERSION)/usr debian/python3-slepc4py-64-complex$(SLEPC_BASE_VERSION)/usr
	mv debian/python3-slepc4py-64-real/usr/lib debian/python3-slepc4py-64-real$(SLEPC_BASE_VERSION)/usr
	mv debian/python3-slepc4py-64-complex/usr/lib debian/python3-slepc4py-64-complex$(SLEPC_BASE_VERSION)/usr

override_dh_auto_test-arch:
	for PY3VER in `py3versions -sv`; do \
	    echo "... run tests for slepc4py_real on python$$PY3VER"; \
	    PYTHONPATH=`PYBUILD_NAME=slepc4py_real pybuild --print {build_dir} --pyver $$PY3VER` SLEPC_DIR=$(SLEPC_DIR_REAL)  PETSC_DIR=$(PETSC_DIR_REAL) python$$PY3VER test/runtests.py --verbose; \
	    echo "... run tests for slepc4py_complex on python$$PY3VER"; \
	    PYTHONPATH=`PYBUILD_NAME=slepc4py_complex pybuild --print {build_dir} --pyver $$PY3VER` SLEPC_DIR=$(SLEPC_DIR_COMPLEX) PETSC_DIR=$(PETSC_DIR_COMPLEX) python$$PY3VER test/runtests.py --verbose; \
	    echo "... run tests for slepc4py_64_real on python$$PY3VER"; \
	    PYTHONPATH=`PYBUILD_NAME=slepc4py_64_real pybuild --print {build_dir} --pyver $$PY3VER` SLEPC_DIR=$(SLEPC64_DIR_REAL)  PETSC_DIR=$(PETSC64_DIR_REAL) python$$PY3VER test/runtests.py --verbose; \
	    echo "... run tests for slepc4py_64_complex on python$$PY3VER"; \
	    PYTHONPATH=`PYBUILD_NAME=slepc4py_64_complex pybuild --print {build_dir} --pyver $$PY3VER` SLEPC_DIR=$(SLEPC64_DIR_COMPLEX) PETSC_DIR=$(PETSC64_DIR_COMPLEX) python$$PY3VER test/runtests.py --verbose; \
	done

override_dh_installdocs:
	dh_installdocs debian/README.Debian

override_dh_sphinxdoc:
	dh_sphinxdoc -Xcontents.rst.txt

execute_after_dh_python3-indep:
	dh_numpy3 -i

execute_after_dh_python3-arch:
	dh_numpy3 -a
	mkdir -p debian/python3-slepc4py-real$(SLEPC_BASE_VERSION)/$(SLEPC_DIR_REAL)/lib debian/python3-slepc4py-complex$(SLEPC_BASE_VERSION)/$(SLEPC_DIR_COMPLEX)/lib
	mv debian/python3-slepc4py-real$(SLEPC_BASE_VERSION)/usr/lib/python3 debian/python3-slepc4py-real$(SLEPC_BASE_VERSION)/$(SLEPC_DIR_REAL)/lib
	mv debian/python3-slepc4py-complex$(SLEPC_BASE_VERSION)/usr/lib/python3 debian/python3-slepc4py-complex$(SLEPC_BASE_VERSION)/$(SLEPC_DIR_COMPLEX)/lib
	mkdir -p debian/python3-slepc4py-64-real$(SLEPC_BASE_VERSION)/$(SLEPC64_DIR_REAL)/lib debian/python3-slepc4py-64-complex$(SLEPC_BASE_VERSION)/$(SLEPC64_DIR_COMPLEX)/lib
	mv debian/python3-slepc4py-64-real$(SLEPC_BASE_VERSION)/usr/lib/python3 debian/python3-slepc4py-64-real$(SLEPC_BASE_VERSION)/$(SLEPC64_DIR_REAL)/lib
	mv debian/python3-slepc4py-64-complex$(SLEPC_BASE_VERSION)/usr/lib/python3 debian/python3-slepc4py-64-complex$(SLEPC_BASE_VERSION)/$(SLEPC64_DIR_COMPLEX)/lib

override_dh_compress:
	dh_compress -Xpdf

execute_after_dh_installdeb:
	for pkg in $$(dh_listpackages -a); do \
	  sed -i -e 's/__SLEPC4PY_VERSION__/$(SLEPC4PY_VERSION)/' debian/$$pkg/DEBIAN/*; \
	done