#!/usr/bin/make -f export DH_VERBOSE=1 export DEB_LDFLAGS_MAINT_PREPEND := -Wl,-z,defs -Wl,--as-needed DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) BUILDDIR=$(CURDIR)/debian/build UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p' | sed -e 's/\+.*//; s/^[0-9]://') # For hardening CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) # -fPIC CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS) LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) PY3VERSM:=$(shell py3versions -s) export LDFLAGS CFLAGS CXXFLAGS # Force version for the transition export FC:=gfortran-8 # Don't test on mips. will time out most of the time on low-powered archs DO_TEST:=true ARCH:=$(shell dpkg --print-architecture) ifeq ($(ARCH), mips) DO_TEST:=false endif ifeq ($(ARCH),hppa) DO_TEST:=false endif BUILD_FLAGS = \ -DCMAKE_BUILD_TYPE=Release \ -DDISABLE_OS_CHECK=ON \ -DENABLE_PNG=ON -DENABLE_PYTHON=ON \ -DENABLE_AEC=ON \ -DENABLE_RPATHS=OFF \ -DENABLE_RELATIVE_RPATHS=OFF \ -DHAVE_BIT_REPRODUCIBLE=ON \ -DCFLAGS="${CFLAGS} ${LDFLAGS}" \ -DENABLE_ALIGN_MEMORY=ON -DENABLE_GRIB_TIMER=ON \ -DENABLE_GRIB_OMP_THREADS=ON %: dh $@ --buildsystem=cmake --with=python2,python3,fortran_mod --no-parallel override_dh_auto_configure: set -e && for i in $(PY3VERSM); do \ F77=$(FC) dh_auto_configure --builddirectory=debian/build-$$i -- \ -DPYTHON_EXECUTABLE=/usr/bin/$$i \ ${BUILD_FLAGS} ; \ ( cd debian/build-$$i/data ; tar axpf $(CURDIR)/../grib-api_$(UPSTREAM_VERSION).orig-data.tar.xz ) ; \ done F77=$(FC) dh_auto_configure --builddirectory=debian/build-py2 -- \ -DPYTHON_EXECUTABLE=/usr/bin/python2 \ ${BUILD_FLAGS} ( cd debian/build-py2/data ; tar axpf $(CURDIR)/../grib-api_$(UPSTREAM_VERSION).orig-data.tar.xz ) override_dh_auto_build: dh_auto_build --builddirectory=debian/build-py2 set -e && for i in $(PYVERS3M); do \ dh_auto_build --builddirectory=debian/build-$$i ; \ done override_dh_auto_install: dh_auto_install --builddirectory=debian/build-py2 set -e && for i in $(PY3VERSM); do \ dh_auto_install --builddirectory=debian/build-$$i ; \ done override_dh_auto_test: # We need python code properly installed in debian/tmp to separate python2, python3 extensions when testing (cd debian/build-py2 && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp AM_UPDATE_INFO_DIR=no) $(DO_TEST) && ( LD_LIBRARY_PATH=$(CURDIR)/debian/build-py2/lib ; PYTHONPATH=$(CURDIR)/debian/tmp/usr/lib/python2.7/site-packages \ dh_auto_test --builddirectory=debian/build-py2 ) || true set -e && for i in $(PY3VERSM); do \ (cd debian/build-$$i && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp AM_UPDATE_INFO_DIR=no) ; \ $(DO_TEST) && ( LD_LIBRARY_PATH=$(CURDIR)/debian/build-$$i/lib ; \ PYTHONPATH=$(CURDIR)/debian/tmp/usr/lib/$$i/site-packages \ dh_auto_test --builddirectory=debian/build-$$i ) || true ; \ done override_dh_install: for d in libgrib_api_f77.so libgrib_api_f90.so libgrib_api.so ; do \ cp debian/tmp/usr/lib/$$d.0 debian/tmp/usr/lib/$$d.0.0.0 ; \ chrpath -d debian/tmp/usr/lib/$$d.0.0.0 ; done chrpath -d ./debian/tmp/usr/lib/python*/site-packages/gribapi/_gribapi_swig.so for d in debian/tmp/usr/bin/* ; do \ ( chrpath -d $$d || echo "Ignoring chrpath error for non-ELF $d" ); \ done dh_numpy dh_numpy3 dh_install # # Setup cmake files for magics++, metview, etc. # mkdir -p debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api cp debian/tmp/usr/share/grib_api/cmake/* debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api cat debian/tmp/usr/share/grib_api//cmake/grib_api-targets-release.cmake | \ sed -e 's% *IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE.*% IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE ""%' \ -e 's%$${_IMPORT_PREFIX}%/usr%g' \ > debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/grib_api-targets-release.cmake cat debian/tmp/usr/share/grib_api//cmake/grib_api-config.cmake | \ sed -e 's%^set( grib_api_BASE_DIR.*%set ( grib_api_BASE_DIR /build/grib-api )%' | \ sed -e 's%^set( GRIB_API_TPLS.*%set( GRIB_API_TPLS "")%' | \ sed -e 's%^set( GRIB_API_TPL_LIBRARIES.*%set( GRIB_API_TPL_LIBRARIES "" )%' \ > debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/grib_api-config.cmake # For bit-reproducibility, sanitize the build paths for f in grib_api-import.cmake grib_api-config.cmake ; do \ sed -e 's%${CURDIR}%/build/grib_api%g' < debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/$$f \ > debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/x; \ mv debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/x debian/libgrib-api-dev/$(LIBDIR)/cmake/grib_api/$$f ; \ done # handle indep builds [ -e debian/libgrib-api-dev/usr/include/grib_api_ecbuild_config.h ] && ( \ sed -e 's%${CURDIR}%/build/grib_api%g' < debian/libgrib-api-dev/usr/include/grib_api_ecbuild_config.h > x ; \ mv x debian/libgrib-api-dev/usr/include/grib_api_ecbuild_config.h ) || true override_dh_auto_clean: dh_auto_clean rm -rf debian/build-* # Things that upstream leaves behind rm -f python/gribapi.pyc rm -f tests/bitmap.rules tests/out.grib1 tests/out.grib2 tests/out.gribidx \ tests/rules tests/simple_ieee_test.grib1.txt tests/statistics.filter \ tests/statistics.out tests/x.grib \ data/change_scanning_rotated_ll.filter examples/F90/index.idx override_dh_installexamples: dh_installexamples -X.pyc override_dh_fixperms-arch: dh_fixperms chmod 644 debian/libgrib-api-dev/usr/share/doc/libgrib-api-dev/examples/python/README