#!/usr/bin/make -f DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk include /usr/share/dpkg/architecture.mk DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':')) DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') 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') FENICS_RELEASE_VERSION=$(DEB_STRIPPED_UPSTREAM_VERSION) FENICS_MAJOR_VERSION=$(shell echo $(FENICS_RELEASE_VERSION) | sed "s/^\([^.]*\)\..*$$/\1/") FENICS_MINOR_VERSION=$(shell echo $(FENICS_RELEASE_VERSION) | sed "s/^\([^.]*\)\.\([^.]*\)\..*$$/\2/") FENICS_VERSION=$(FENICS_MAJOR_VERSION).$(FENICS_MINOR_VERSION) FENICS_NEXT_VERSION=$(FENICS_MAJOR_VERSION).$(shell echo $$(( $(FENICS_MINOR_VERSION) + 1 )) ) # dolfinx depends on the pybind11 version it was built against, # if pybind11.h will be used in C++ code fragments in python scripts. # But pybind11 follows semantic versioning, so should have backwards compatibility # with minor and patch version updates. # Extract pybind11 version from pybind11-dev PYBIND11_DEB_VERSION=$(shell dpkg -s pybind11-dev | awk '/Version:/ {print $$2}') # extract the current pybind11 version X.Y.Z (drop epoch and debian package version) PYBIND11_UPSTREAM_VERSION=$(shell echo $(PYBIND11_DEB_VERSION) | sed "s/^.[^:]*://; s/-[^-]*$$//") PYBIND11_X_VERSION=$(shell echo $(PYBIND11_UPSTREAM_VERSION) | sed "s/^\([^.]*\).*/\1/") PYBIND11_X_Y_VERSION=$(shell echo $(PYBIND11_UPSTREAM_VERSION) | sed "s/^\(.*\)\.\([^.]*\)$$/\1/") PYBIND11_VERSION=$(PYBIND11_X_Y_VERSION) PYBIND11_NEXT_VERSION=$(shell echo $$(( $(PYBIND11_X_VERSION) + 1 )) ) # Allow test programs that use OpenMPI to run export OMPI_MCA_plm_rsh_agent=/bin/false export OMPI_MCA_btl_base_warn_component_unused=0 include /usr/share/mpi-default-dev/debian_defaults ENABLE_MPI=ON ifeq ($(findstring $(DEB_BUILD_ARCH),$(OPENMPI_ARCHITECTURES)),) MPIEXEC_PARAMS= else MPIEXEC_PARAMS=--oversubscribe endif DOLFINX_HOME = $(CURDIR)/$(DEB_SRCDIR) USCAN_DESTDIR := $(CURDIR) PY3VERS := $(shell py3versions --requested debian/control | tac -s' ') PYVERS = $(PY3VERS) BUILDDIR_REAL = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)-real BUILDDIR_COMPLEX = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)-complex NPROC := $(shell nproc) PARALLEL = $(subst parallel=,,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) N_CPU = $(or $(PARALLEL),$(NPROC),1) # MPI tests are set up to run on 3 processes. Spread them leanly over the available processors (don't have more than 2 tests using one processor). # e.g. run 1 MPI test at a time over 1-3 processors, or 2 tests at a time over 4-6 processors, or 3 tests over 7-9 processors, etc. N_MPI := 3 N_MPI_TESTS = $(shell echo $$(( ($(N_CPU)+$(N_MPI)-1)/$(N_MPI) )) ) ifeq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) RUNTEST=no endif # hyperelasticity fails (diverges) on all arches (pivot factors too large, not enough memory assigned) # elastodynamics passes with dpkg-buildpackage but fails with pdebuild (on amd64). Unreliable, so skip. ARCH_ALL_SKIP_MPI_TEST = demo_hyperelasticity_mpi demo_elastodynamics_mpi # Some arches fail the same MPI tests # e.g. cahn-hilliard, navier-stokes, elasticity, fails or exceeds allowed time # So skip these tests on the failing arches ARCH_SKIP_MPI_TEST_LIST = i386 ppc64el ia64 ARCH_SKIP_MPI_TEST = demo_cahn-hilliard_mpi demo_navier-stokes_mpi demo_elasticity_mpi # skip more MPI tests for some specific arches ifeq (arm64, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_MPI_TEST = demo_navier-stokes_mpi else ifeq (mips, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_MPI_TEST = demo_cahn-hilliard_mpi demo_stokes-iterative_mpi demo_ale_mpi demo_poisson-disc_mpi else ifeq (mipsel, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_MPI_TEST = demo_cahn-hilliard_mpi demo_stokes-iterative_mpi demo_ale_mpi demo_poisson-disc_mpi else ifeq (ppc64el, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_MPI_TEST = demo_poisson_mpi demo_singular-poisson_mpi demo_sym-dirichlet-bc_mpi else ifeq (ia64, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_MPI_TEST = demo_bcs_mpi demo_biharmonic_mpi demo_built-in-meshes_mpi demo_eigenvalue_mpi else ARCH_SPECIFIC_SKIP_MPI_TEST = endif # m68k and mips need some help to pass serial tests ifeq (m68k, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_SERIAL_TEST = demo_auto-adaptive-poisson_serial demo_elasticity_serial else ifeq (mips, $(DEB_HOST_ARCH)) ARCH_SPECIFIC_SKIP_SERIAL_TEST = demo_cahn-hilliard_serial demo_hyperelasticity_serial else ARCH_SPECIFIC_SKIP_SERIAL_TEST = endif # skip slow tests (> 500-1000 sec to complete) ifeq (armel, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_stokes-iterative_serial demo_auto-adaptive-navier-stokes_serial demo_hyperelasticity_serial demo_cahn-hilliard_serial else ifeq (mips, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_eigenvalue_serial demo_navier-stokes_serial demo_auto-adaptive-poisson_serial demo_stokes-taylor-hood_serial demo_auto-adaptive-navier-stokes_serial demo_curl-curl_serial demo_elasticity_serial demo_stokes-iterative_serial demo_eval_serial demo_sym-dirichlet-bc_serial demo_elastodynamics_serial demo_eigenvalue_mpi demo_navier-stokes_mpi demo_curl-curl_mpi demo_elasticity_mpi demo_elastodynamics_mpi demo_sym-dirichlet-bc_mpi else ifeq (mipsel, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_cahn-hilliard_serial demo_hyperelasticity_serial else ifeq (hppa, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_cahn-hilliard_serial demo_hyperelasticity_serial else ifeq (m68k, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_cahn-hilliard_serial demo_hyperelasticity_serial else ifeq (riscv64, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_cahn-hilliard_serial demo_hyperelasticity_serial demo_cahn-hilliard_mpi demo_elastodynamics_mpi else ifeq (sparc64, $(DEB_HOST_ARCH)) ARCH_SKIP_SLOW_TEST = demo_cahn-hilliard_serial demo_hyperelasticity_serial demo_stokes-iterative_serial demo_cahn-hilliard_mpi demo_elastodynamics_mpi else ARCH_SKIP_SLOW_TEST = endif # other arches fail or time out on too many tests, so skip all their MPI tests ARCH_SKIP_ALL_MPI_TESTS_LIST=armel armhf i386 hppa m68k powerpc # some arches just aren't keeping up at all, and fail non-MPI tests ARCH_SKIP_ALL_TESTS_LIST = mips64el hurd-i386 m68k sh4 # extract PETSc version from petsc-dev PETSC_DEB_VERSION=$(shell dpkg -s petsc-dev | awk '/Version:/ {print $2}') # extract the current PETSc version PETSC_UPSTREAM_VERSION=$(shell pkg-config --modversion PETSc) # "Major" version is the first number in the upstream version (major.minor.release) PETSC_MAJOR_VERSION=$(shell echo $(PETSC_UPSTREAM_VERSION) | sed "s/^\([^.]*\)\..*$$/\1/") # "Minor" version is the second number in the upstream version (major.minor.release) PETSC_MINOR_VERSION=$(shell echo $(PETSC_UPSTREAM_VERSION) | sed "s/^\([^.]*\)\.\([^.]*\)\..*$$/\2/") PETSC_VERSION=$(PETSC_MAJOR_VERSION).$(PETSC_MINOR_VERSION) PETSC_VERSION_NEXT=$(shell echo $(PETSC_MAJOR_VERSION).$$(($(PETSC_MINOR_VERSION)+1))) SLEPC_UPSTREAM_VERSION=$(shell pkg-config --modversion SLEPc) # SLEPc version must match PETSc SLEPC_VERSION=$(PETSC_VERSION) SLEPC_VERSION_NEXT=$(PETSC_VERSION_NEXT) PETSC_DIR_BASE=/usr/lib/petscdir/petsc$(PETSC_VERSION)/$(DEB_HOST_MULTIARCH) SLEPC_DIR_BASE=/usr/lib/slepcdir/slepc$(SLEPC_VERSION)/$(DEB_HOST_MULTIARCH) export PETSC_DIR_REAL=$(PETSC_DIR_BASE)-real SLEPC_DIR_REAL=$(SLEPC_DIR_BASE)-real export PETSC_DIR_COMPLEX=$(PETSC_DIR_BASE)-complex SLEPC_DIR_COMPLEX=$(SLEPC_DIR_BASE)-complex DEB_CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) CMAKE_OPTS := \ -D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo \ -D BUILD_SHARED_LIBS:BOOL=ON \ -D CMAKE_SKIP_RPATH:BOOL=ON \ -D CMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=OFF \ -D DOLFINX_ENABLE_TRILINOS:BOOL=OFF \ -D DOLFINX_ENABLE_HDF5:BOOL=ON \ -D HDF5_C_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5pcc \ -D DOLFINX_ENABLE_PARMETIS:BOOL=OFF \ -D DOLFINX_ENABLE_SCOTCH:BOOL=ON \ -D DOLFINX_ENABLE_DOCS:BOOL=OFF \ -D DOLFINX_ENABLE_MPI:BOOL=$(ENABLE_MPI) \ -D MPIEXEC_PARAMS:STRING="$(MPIEXEC_PARAMS)" \ -D CMAKE_CXX_FLAGS:STRING="-fpermissive" \ -D DOLFINX_EXTRA_CXX_FLAGS:STRING="$(DEB_CXXFLAGS)" %: dh $@ --buildsystem=cmake --with python3,sphinxdoc override_dh_compress: dh_compress -X.py -X.cpp -X.h -X.pdf -X.ufl override_dh_auto_clean: dh_auto_clean --builddir=$(BUILDDIR_REAL) dh_auto_clean --builddir=$(BUILDDIR_COMPLEX) rm -f cpp/dolfinx/common/version.h \ cpp/demo/hyperelasticity/CMakeLists.txt \ cpp/demo/poisson/CMakeLists.txt override_dh_auto_configure: PETSC_DIR=$(PETSC_DIR_REAL) SLEPC_DIR=$(SLEPC_DIR_REAL) dh_auto_configure --builddir=$(BUILDDIR_REAL) -- $(CMAKE_OPTS) $(CURDIR)/cpp PETSC_DIR=$(PETSC_DIR_COMPLEX) SLEPC_DIR=$(SLEPC_DIR_COMPLEX) dh_auto_configure --builddir=$(BUILDDIR_COMPLEX) -- $(CMAKE_OPTS) $(CURDIR)/cpp override_dh_auto_build: PETSC_DIR=$(PETSC_DIR_REAL) SLEPC_DIR=$(SLEPC_DIR_REAL) dh_auto_build --builddir=$(BUILDDIR_REAL) PETSC_DIR=$(PETSC_DIR_COMPLEX) SLEPC_DIR=$(SLEPC_DIR_COMPLEX) dh_auto_build --builddir=$(BUILDDIR_COMPLEX) override_dh_auto_test-arch: echo "Tests must be run after installation" override_dh_auto_test-indep: override_dh_auto_install-real: dh_auto_install --builddir=$(BUILDDIR_REAL) --destdir=debian/tmp-real for build in real; do \ for v in $(PYVERS); do \ cd python; \ PATH=$(CURDIR)/debian/tmp-$${build}/usr/bin:$$PATH \ PETSC_DIR=$(PETSC_DIR_BASE)-$${build} SLEPC_DIR=$(SLEPC_DIR_BASE)-$${build} \ CXXFLAGS="$(DEB_CXXFLAGS) -isystem $(CURDIR)/debian/tmp-$${build}/usr/include" \ VERBOSE=1 \ $$v setup.py build --build-base=build-$${build} install --root=$(CURDIR)/debian/tmp-$${build} --install-layout=deb; \ cd ..; \ done; \ done override_dh_auto_install-indep: override_dh_auto_install-real dh_auto_install -i --builddir=$(BUILDDIR_COMPLEX) --destdir=debian/tmp-complex (cd cpp/doc; doxygen) (cd python/doc; \ python3 ../demo/generate-demo-files.py; \ mkdir -p build/pkgconfig; \ cp $(CURDIR)/debian/tmp-real/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/dolfinx_real.pc build/pkgconfig; \ sed "s|prefix=/usr|prefix=$(CURDIR)/debian/tmp-real/usr|" -i build/pkgconfig/dolfinx_real.pc; \ PYTHONPATH=$(CURDIR)/debian/tmp-real/usr/lib/python3/dist-packages \ PKG_CONFIG_PATH=`pwd`/build/pkgconfig:$${PKG_CONFIG_PATH} \ LD_LIBRARY_PATH=$(CURDIR)/debian/tmp-real/usr/lib/$(DEB_HOST_MULTIARCH)/:$${LD_LIBRARY_PATH} \ RDMAV_FORK_SAFE=1 \ make html; \ find ../demo/ -name *.py.rst | xargs rm) dh_numpy3 -i override_dh_auto_install-arch: override_dh_auto_install-real dh_auto_install -a --builddir=$(BUILDDIR_COMPLEX) --destdir=debian/tmp-complex dh_numpy3 -a for build in complex; do \ for v in $(PYVERS); do \ cd python; \ PATH=$(CURDIR)/debian/tmp-$${build}/usr/bin:$$PATH \ PETSC_DIR=$(PETSC_DIR_BASE)-$${build} SLEPC_DIR=$(SLEPC_DIR_BASE)-$${build} \ CXXFLAGS="$(DEB_CXXFLAGS) -isystem $(CURDIR)/debian/tmp-$${build}/usr/include" \ VERBOSE=1 \ $$v setup.py build --build-base=build-$${build} install --root=$(CURDIR)/debian/tmp-$${build} --install-layout=deb; \ cd ..; \ done; \ done chrpath -d $(CURDIR)/debian/tmp*/usr/lib/python*/dist-packages/dolfinx/*.so sed -i "s/-D_FORTIFY_SOURCE=2//g" $(CURDIR)/debian/tmp*/usr/lib/$(DEB_BUILD_MULTIARCH)/pkgconfig/dolfinx*.pc sed -i "s|-DNDEBUG||g" $(CURDIR)/debian/tmp*/usr/lib/$(DEB_BUILD_MULTIARCH)/pkgconfig/dolfinx*.pc if [ "x$(RUNTEST)" != "xno" ]; then \ case " $(ARCH_SKIP_ALL_TESTS_LIST) " in \ *\ $(DEB_HOST_ARCH)\ *) echo "ALL tests have been disabled on $(DEB_HOST_ARCH)";; \ *) set -e; \ export CTEST_OUTPUT_ON_FAILURE=1; \ for build in real complex; do \ echo "== testing $$build number build =="; \ builddir=$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)-$${build}; \ for mytest in test/unit demo; do \ echo "running tests from $$mytest for $$build build"; \ test_srcdir=$${builddir}/$${mytest}; \ testdir=$${builddir}/runtests-`basename $$mytest`-$${build}; \ rm -rf $$testdir; mkdir $$testdir; \ cd $$testdir; \ PETSC_DIR=$(PETSC_DIR_BASE)-$${build} SLEPC_DIR=$(SLEPC_DIR_BASE)-$${build} cmake -DCMAKE_MODULE_PATH=$(CURDIR)/debian/tmp-$${build}/usr/lib/$(DEB_BUILD_MULTIARCH)/cmake/dolfinx \ -DDOLFINX_DIR=$(CURDIR)/debian/tmp-$${build}/usr/lib/$(DEB_BUILD_MULTIARCH)/cmake/dolfinx \ -DMPIEXEC_PARAMS:STRING="$(MPIEXEC_PARAMS)" \ $${test_srcdir} ; \ make all VERBOSE=1; \ OMPI_ALLOW_RUN_AS_ROOT=1 OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 make test VERBOSE=1; \ done; \ cd $(CURDIR); \ done; \ esac; \ fi override_dh_install-indep: dh_install -i sed "s|/usr/lib/$(DEB_HOST_MULTIARCH)/cmake/dolfinx|/usr/share/dolfinx/cmake|g" \ -i debian/libdolfinx-dev/usr/share/dolfinx/cmake/DOLFINXConfig.cmake debian/libdolfinx-dev/usr/share/dolfinx/cmake/DOLFINXTargets.cmake sed "0,/^get_filename_component(_IMPORT_PREFIX \"\$${_IMPORT_PREFIX}\" PATH)/{/^get_filename_component(_IMPORT_PREFIX \"\$${_IMPORT_PREFIX}\" PATH)/d}" \ -i debian/libdolfinx-dev/usr/share/dolfinx/cmake/DOLFINXTargets.cmake sed "s/set(CMAKE_IMPORT_FILE_VERSION 1)/set(CMAKE_IMPORT_FILE_VERSION 1)\n\nif(PETSC_SCALAR_COMPLEX)\n set(LIB_NAME_EXT \"_complex\")\nelse()\n set(LIB_NAME_EXT \"_real\")\nendif()/; \ s/libdolfinx_real.so/libdolfinx\$${LIB_NAME_EXT}.so/g; s/$(DEB_HOST_MULTIARCH)/\$${CMAKE_LIBRARY_ARCHITECTURE}/g" \ -i debian/libdolfinx-dev/usr/share/dolfinx/cmake/DOLFINXTargets-relwithdebinfo.cmake sed "s/$(DEB_HOST_MULTIARCH)/\$${CMAKE_LIBRARY_ARCHITECTURE}/g" \ -i debian/libdolfinx-dev/usr/share/dolfinx/cmake/DOLFINXTargets.cmake sed "/^# if the installed project requested no architecture check, don't perform the check/ { n; s/if(\"FALSE\")/if(\"TRUE\")/ }" \ -i debian/libdolfinx-dev/usr/share/dolfinx/cmake/DOLFINXConfigVersion.cmake override_dh_python3-arch: dh_python3 -a dh_numpy3 -a mkdir -p debian/python3-dolfinx-real/$(PETSC_DIR_REAL)/lib mv debian/python3-dolfinx-real/usr/lib/python3 debian/python3-dolfinx-real/$(PETSC_DIR_REAL)/lib rm -rf debian/python3-dolfinx-real/$(PETSC_DIR_REAL)/lib/python3/dist-packages/dolfinx_utils mkdir -p debian/python3-dolfinx-complex/$(PETSC_DIR_COMPLEX)/lib mv debian/python3-dolfinx-complex/usr/lib/python3 debian/python3-dolfinx-complex/$(PETSC_DIR_COMPLEX)/lib rm -rf debian/python3-dolfinx-complex/$(PETSC_DIR_COMPLEX)/lib/python3/dist-packages/dolfinx_utils # set petsc:Depends to something like "libpetsc-real3.8-dev, libslepc-real3.8-dev, python-petsc4py (>= 3.8), python-petsc4py (<< 3.9), python-slepc4py (>= 3.8), python-slepc4py (<< 3.9)" PETSC_DEV_DEPENDS="libpetsc-real$(PETSC_VERSION)-dev, libslepc-real$(SLEPC_VERSION)-dev" PETSC_COMPLEX_DEV_DEPENDS="libpetsc-complex$(PETSC_VERSION)-dev, libslepc-complex$(SLEPC_VERSION)-dev" # slepc4py version must match petsc4py (using the PETSc minor version, not the patch release) PETSC4PY_DEPENDS_PY3=python3-petsc4py, python3-slepc4py, python3-petsc4py-real (>= $(PETSC_VERSION)), python3-petsc4py-real (<< $(PETSC_VERSION_NEXT)), python3-slepc4py-real (>= $(SLEPC_VERSION)), python3-slepc4py-real (<< $(SLEPC_VERSION_NEXT)) PETSC4PY_COMPLEX_DEPENDS_PY3=python3-petsc4py, python3-slepc4py, python3-petsc4py-complex (>= $(PETSC_VERSION)), python3-petsc4py-complex (<< $(PETSC_VERSION_NEXT)), python3-slepc4py-complex (>= $(SLEPC_VERSION)), python3-slepc4py-complex (<< $(SLEPC_VERSION_NEXT)) override_dh_gencontrol: echo "python3-petsc4py-real:Depends=$(PETSC4PY_DEPENDS_PY3)" >> debian/python3-dolfinx-real.substvars echo "python3-petsc4py-complex:Depends=$(PETSC4PY_COMPLEX_DEPENDS_PY3)" >> debian/python3-dolfinx-complex.substvars echo "python-petsc4py-alt:Depends=$(PETSC4PY_DEPENDS_PY3)" >> debian/libdolfinx-dev.substvars dh_gencontrol -- -Vpetsc:Depends=$(PETSC_DEV_DEPENDS) -Vpetsc-complex:Depends=$(PETSC_COMPLEX_DEV_DEPENDS) -Vfenics:Upstream-Version=$(FENICS_VERSION).0~git20210116 -Vfenics:Next-Upstream-Version=$(FENICS_NEXT_VERSION)~ \ -Vpybind11:Upstream-Version=$(PYBIND11_VERSION) -Vpybind11:Next-Upstream-Version=$(PYBIND11_NEXT_VERSION) # dbgsym-migration was introduced for dolfin 2017.2 (don't update the version to a later version) override_dh_strip: dh_strip --package=libdolfinx-real$(FENICS_VERSION) -Xcomplex -Xpython dh_strip --package=libdolfinx-complex$(FENICS_VERSION) -Xreal -Xpython dh_strip --package=python3-dolfinx-real override_dh_sphinxdoc-indep: dh_sphinxdoc -i grep "https://cdn.mathjax.org/mathjax/latest/MathJax.js" debian/dolfinx-doc/usr/share/doc/dolfinx-doc/* -r --files-with-matches | xargs sed "s|src=\"https://cdn.mathjax.org/mathjax/latest/MathJax.js|src=\"file:///usr/share/javascript/mathjax/MathJax.js|g" -i grep "https://cdnjs.cloudflare.com/ajax/libs/mathjax/.*/latest.js" debian/dolfinx-doc/usr/share/doc/dolfinx-doc/* -r --files-with-matches | xargs sed "s|src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/.*/latest.js|src=\"file:///usr/share/javascript/mathjax/unpacked/latest.js|g" -i # python module so files are already stripped by setup.py (setuptools) override_dh_dwz: dh_dwz -Xcpp.cpython # https://stackoverflow.com/a/18793112/353337 override_dh_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info .PHONY: get-orig-source override_dh_strip get-orig-source: uscan --force-download --verbose --destdir $(USCAN_DESTDIR)