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
|