#!/usr/bin/make -f export DH_VERBOSE=1 # The magic debhelper rule: %: dh $@ --buildsystem cmake --with python2,python3 include /usr/share/mpi-default-dev/debian_defaults MPI:=$(ARCH_DEFAULT_MPI_IMPL) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) TMPDIR=$(CURDIR)/debian/tmp LIBDIR=/usr/lib/${DEB_HOST_MULTIARCH} PY2:=$(shell pyversions -d) PY3:=$(shell py3versions -d)m CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) -fPIC BUILD_DIRS:= debian/build-mpi-py2 debian/build-serial-py2 debian/build-mpi-py3 debian/build-serial-py3 CMAKE_FLAGS:= -DXDMF_SYSTEM_ZLIB=ON -DXDMF_SYSTEM_LIBXML2=ON -DXDMF_USE_BZIP2=ON -DXDMF_USE_GZIP=ON \ -DXDMF_SYSTEM_HDF5=ON \ -DXDMF_USE_RPATH=OFF \ -DXDMF_BUILD_UTILS=ON \ -DCMAKE_INSTALL_PREFIX=/usr \ -DXDMF_WRAP_PYTHON=ON \ -DXDMF_REGENERATE_WRAPPERS=ON \ -DGZSTREAM_LIBRARY=$(LIBDIR)/libgzstream.so \ -DBUILD_SHARED_LIBS=TRUE override_dh_auto_configure: mkdir -p $(BUILD_DIRS) (cd debian/build-serial-py2 && \ HDF5_ROOT=$(LIBDIR)/hdf5/serial cmake ../.. \ $(CMAKE_FLAGS) \ -DPYTHON_INCLUDE_PATH=/usr/include/$(PY2) \ -DPYTHON_LIBRARY=$(LIBDIR)/lib$(PY2).so \ -DXDMF_BUILD_MPI=OFF -DXDMF_SYSTEM_HDF5_IS_PARALLEL=OFF \ -DHDF5_ROOT=$(LIBDIR)/hdf5/serial ) (cd debian/build-serial-py3 && \ HDF5_ROOT=$(LIBDIR)/hdf5/serial cmake ../.. \ $(CMAKE_FLAGS) \ -DPYTHON_INCLUDE_PATH=/usr/include/$(PY3) \ -DPYTHON_LIBRARY=$(LIBDIR)/lib$(PY3).so \ -DXDMF_BUILD_MPI=OFF -DXDMF_SYSTEM_HDF5_IS_PARALLEL=OFF \ -DHDF5_ROOT=$(LIBDIR)/hdf5/serial ) (cd debian/build-mpi-py2 && \ HDF5_ROOT=$(LIBDIR)/hdf5/$(MPI) cmake ../.. \ $(CMAKE_FLAGS) \ -DPYTHON_INCLUDE_PATH=/usr/include/$(PY2) \ -DPYTHON_LIBRARY=$(LIBDIR)/lib$(PY2).so \ -DXDMF_BUILD_MPI=ON -DXDMF_SYSTEM_HDF5_IS_PARALLEL=ON \ -DHDF5_ROOT=$(LIBDIR)/hdf5/$(MPI) ) (cd debian/build-mpi-py3 && \ HDF5_ROOT=$(LIBDIR)/hdf5/$(MPI) cmake ../.. \ $(CMAKE_FLAGS) \ -DPYTHON_INCLUDE_PATH=/usr/include/$(PY3) \ -DPYTHON_LIBRARY=$(LIBDIR)/lib$(PY3).so \ -DXDMF_BUILD_MPI=ON -DXDMF_SYSTEM_HDF5_IS_PARALLEL=ON \ -DHDF5_ROOT=$(LIBDIR)/hdf5/$(MPI) ) override_dh_auto_build: for p in $(BUILD_DIRS) ; do \ $(MAKE) -C $$p ; done override_dh_auto_test: @echo "Ignore; no tests present" override_dh_auto_install: # should not be necessary; USE_RPATH=OFF not working ? for p in $(BUILD_DIRS) ; do \ find $$p -name '*.so' -exec chrpath -d {} \; ; done # Assemble something workable from the 4 install dirs. $(MAKE) -C debian/build-mpi-py3 install DESTDIR=$(TMPDIR) # Add the (non-default) serial cases into a NoMpi subdirectory mkdir -p $(TMPDIR)/usr/lib/$(PY3)/xdmf/NoMpi $(TMPDIR)/usr/lib/$(PY2)/xdmf/NoMpi # standard shared libs into {serial,$MPI} directories as elswehere mkdir -p $(TMPDIR)/$(LIBDIR)/xdmf/serial $(TMPDIR)/$(LIBDIR)/xdmf/$(MPI) mv $(TMPDIR)/usr/lib/lib* $(TMPDIR)/$(LIBDIR)/xdmf/$(MPI) cp debian/build-serial-py3/lib*.so debian/build-serial-py3/lib*.a $(TMPDIR)/$(LIBDIR)/xdmf/serial mv $(TMPDIR)/usr/lib/python/* $(TMPDIR)/usr/lib/$(PY3)/xdmf cp $(TMPDIR)/usr/lib/$(PY3)/xdmf/*.py $(TMPDIR)/usr/lib/$(PY2)/xdmf cp debian/build-mpi-py2/_*.so $(TMPDIR)/usr/lib/$(PY2)/xdmf cp debian/build-serial-py2/_*.so $(TMPDIR)/usr/lib/$(PY2)/xdmf/NoMpi cp debian/build-serial-py3/_*.so $(TMPDIR)/usr/lib/$(PY3)/xdmf/NoMpi #mv $(TMPDIR)/usr/lib/libXdmf.so.3 $(TMPDIR)/$(LIBDIR)/libXdmf.so.3.0 #mkdir -p $(TMPDIR)/$(LIBDIR)/cmake #mv $(TMPDIR)/usr/lib/XdmfCMake $(TMPDIR)/$(LIBDIR)/cmake #dh_link -p libxdmf-dev $(LIBDIR)/libXdmf.so.3.0 $(LIBDIR)/libXdmf.so #dh_link -p libxdmf2 $(LIBDIR)/libXdmf.so.3.0 $(LIBDIR)/libXdmf.so.3 ## https://bugs.launchpad.net/ubuntu/+source/xdmf/+bug/1154071 #sed -e 's%@ARCH@%$(DEB_HOST_MULTIARCH)%' < debian/cmake.patch.in > debian/cmake.patch #(cd $(TMPDIR)/$(LIBDIR)/cmake/XdmfCMake && patch < ../../../../../../cmake.patch ) mkdir -p $(TMPDIR)/usr/lib/$(PY2)/dist-packages $(TMPDIR)/usr/lib/$(PY3)/dist-packages mv $(TMPDIR)/usr/lib/$(PY2)/xdmf $(TMPDIR)/usr/lib/$(PY2)/dist-packages/xdmf mv $(TMPDIR)/usr/lib/$(PY3)/xdmf $(TMPDIR)/usr/lib/$(PY3)/dist-packages/xdmf touch $(TMPDIR)/usr/lib/$(PY2)/dist-packages/xdmf/__init__.py touch $(TMPDIR)/usr/lib/$(PY3)/dist-packages/xdmf/__init__.py override_dh_auto_fixperms: dh_auto_fixperms find debian/libxdmf-dev -type f -exec chmod 644 {} \; override_dh_auto_clean: dh_auto_clean rm -f debian/cmake.patch libsrc/gzstream -find $(CURDIR) -name CVS -exec rm -rf {} \; rm -rf $(BUILD_DIRS)