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
  
     | 
    
      #!/usr/bin/make -f
# Enable hardening build flags, except:
#  pie: causes build failure
export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH)
INCDIR:=/usr/include
UPSTREAM_VERSION = $(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\+.*//')
SO_VERSION:= 22
PNETCDF_ARCHS:= amd64 arm64 mips64el ppc64el s390x alpha sparc64 ppc64 riscv64 loong64
include /usr/share/mpi-default-dev/debian_defaults
MPI:=$(ARCH_DEFAULT_MPI_IMPL)
include /usr/share/dpkg/pkg-info.mk
# Verbose test output
export VERBOSE=1
export DH_VERBOSE=1
CFLAGS:= $(shell dpkg-buildflags --get CFLAGS)
%:
	dh $@ --buildsystem=cmake
CMAKE_FLAGS:=   -DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_SKIP_RPATH:BOOL=ON \
		-DNETCDF_ENABLE_TESTS:BOOL=ON \
		-DNETCDF_ENABLE_LOGGING:BOOL=ON \
		-DNETCDF_ENABLE_DOXYGEN:BOOL=ON \
		-DNETCDF_ENABLE_MMAP=ON \
		-DNETCDF_ENABLE_NCZARR_ZIP=On \
		-DUSE_SZIP=ON 
override_dh_auto_configure:
ifneq ($(filter $(PNETCDF_ARCHS),$(DEB_HOST_ARCH)),)
	dh_auto_configure --builddirectory=build-pnetcdf -- \
		$(CMAKE_FLAGS) \
		-DHDF5_INCLUDE_PATH=$(INCDIR)/hdf5/$(MPI) \
		-DHDF5_LIBRARY_PATH=$(LIBDIR)//hdf5/$(MPI) \
		-DNETCDF_ENABLE_PNETCDF=ON \
		-DPNETCDF_INCLUDE_DIR=/usr/include \
		-DLIBLIB_VERSION_SCRIPT=-Wl,--version-script,$(CURDIR)/debian/netcdf-pnetcdf.ver \
		-DCMAKE_C_COMPILER=mpicc  \
		-DNETCDF_LIB_NAME=netcdf_pnetcdf 
endif
	dh_auto_configure --builddirectory=build-mpi --  \
		$(CMAKE_FLAGS) \
		-DENABLE_PARALLEL_TESTS:BOOL=OFF \
		-DUSE_HDF5=ON \
		-DENABLE_PARALLEL4=ON \
	        -DHDF5_INCLUDE_PATH=$(INCDIR)/hdf5/$(MPI) \
		-DHDF5_LIBRARY_PATH=$(LIBDIR)/hdf5/$(MPI) \
		-DHDF5_C_LIBRARIES=$(LIBDIR)/hdf5/$(MPI)/libhdf5.so \
		-DHDF5_HL_LIBRARIES=$(LIBDIR)/hdf5/$(MPI)/libhdf5_hl.so \
		-DCMAKE_C_FLAGS="${CFLAGS} -DHDF5_PARALLEL" \
		-DLIBLIB_VERSION_SCRIPT=-Wl,--version-script,$(CURDIR)/debian/netcdf-mpi.ver \
		-DCMAKE_C_COMPILER=mpicc  \
		-DNETCDF_LIB_NAME=netcdf_mpi
override_dh_auto_build:
ifneq ($(filter $(PNETCDF_ARCHS),$(DEB_HOST_ARCH)),)
	$(MAKE) -C build-pnetcdf
endif
	$(MAKE) -C build-mpi
override_dh_auto_clean:
	rm -rf build-* debian/tmp* debian/*.postinst
override_dh_auto_install:
	$(MAKE) -C build-mpi install DESTDIR=$(CURDIR)/debian/tmp-mpi
	mkdir -p debian/tmp/$(LIBDIR)/netcdf/mpi/cmake debian/tmp/$(LIBDIR)/cmake debian/tmp/$(LIBDIR)/pkgconfig
	cp debian/tmp-mpi/$(LIBDIR)/libnetcdf.settings debian/tmp/$(LIBDIR)/netcdf/mpi/libnetcdf.settings
	mkdir -p debian/tmp/$(LIBDIR)/netcdf/mpi/include
	cp debian/tmp-mpi/usr/include/*	debian/tmp/$(LIBDIR)/netcdf/mpi/include
	cp -a debian/tmp-mpi/$(LIBDIR)/cmake/netCDF	debian/tmp/$(LIBDIR)/cmake/netCDF_mpi
	cp -a debian/tmp-mpi/$(LIBDIR)/libnetcdf_*.so* debian/tmp/$(LIBDIR)
	dh_link -p libnetcdf-mpi-dev  $(LIBDIR)/cmake/netCDF_mpi $(LIBDIR)/netcdf/mpi/cmake/netCDF
	cp debian/tmp-mpi/$(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) debian/tmp/$(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION)
	# sed -e 's%@MULTIARCH@%$(DEB_HOST_MULTIARCH)%g' < debian/libnetcdf-mpi-dev.postinst.in \
	# > debian/libnetcdf-mpi-dev.postinst
	echo "prefix=$(LIBDIR)/netcdf/mpi" > debian/tmp/$(LIBDIR)/pkgconfig/netcdf-mpi.pc
	sed -e 's/-lnetcdf/-lnetcdf_mpi/' < debian/tmp-mpi/$(LIBDIR)/pkgconfig/netcdf.pc \
		| grep -v "prefix=" \
		>> debian/tmp/$(LIBDIR)/pkgconfig/netcdf-mpi.pc
	dh_link -p libnetcdf-mpi-dev $(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) $(LIBDIR)/netcdf/mpi/libnetcdf.so
	dh_link -p libnetcdf-mpi-dev $(LIBDIR)/libnetcdf_mpi.so.$(SO_VERSION) $(LIBDIR)/libnetcdf_mpi.so
	dh_link -p libnetcdf-mpi-dev $(LIBDIR)/netcdf/mpi  $(LIBDIR)/netcdf/mpi/lib
	dh_link -p libnetcdf-mpi-dev  $(LIBDIR)/pkgconfig/netcdf-mpi.pc $(LIBDIR)/netcdf/mpi/pkgconfig/netcdf.pc
ifneq ($(filter $(PNETCDF_ARCHS),$(DEB_HOST_ARCH)),)
	$(MAKE) -C build-pnetcdf install DESTDIR=$(CURDIR)/debian/tmp-pnetcdf 
	mkdir -p debian/tmp/$(LIBDIR)/netcdf/pnetcdf/cmake debian/tmp/$(LIBDIR)/cmake debian/tmp/$(LIBDIR)/pkgconfig 
	cp debian/tmp-pnetcdf/$(LIBDIR)/libnetcdf.settings debian/tmp/$(LIBDIR)/netcdf/pnetcdf/libnetcdf.settings 
	mkdir -p debian/tmp/$(LIBDIR)/netcdf/pnetcdf/include 
	cp debian/tmp-pnetcdf/usr/include/*	debian/tmp/$(LIBDIR)/netcdf/pnetcdf/include 
	cp -a debian/tmp-pnetcdf/$(LIBDIR)/cmake/netCDF	debian/tmp/$(LIBDIR)/cmake/netCDF_pnetcdf 
	cp -a debian/tmp-pnetcdf/$(LIBDIR)/libnetcdf_*.so* debian/tmp/$(LIBDIR) 
	dh_link -p libnetcdf-pnetcdf-dev  $(LIBDIR)/cmake/netCDF_pnetcdf $(LIBDIR)/netcdf/pnetcdf/cmake/netCDF 
	cp debian/tmp-pnetcdf/$(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) debian/tmp/$(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) 
	# sed -e 's%@MULTIARCH@%$(DEB_HOST_MULTIARCH)%g' < debian/libnetcdf-pnetcdf-dev.postinst.in \
 	#		> debian/libnetcdf-pnetcdf-dev.postinst 
	echo "prefix=$(LIBDIR)/netcdf/pnetcdf" > debian/tmp/$(LIBDIR)/pkgconfig/netcdf-pnetcdf.pc 
	sed -e 's/-lnetcdf/-lnetcdf_pnetcdf/' < debian/tmp-pnetcdf/$(LIBDIR)/pkgconfig/netcdf.pc \
		| grep -v "prefix=" \
		>> debian/tmp/$(LIBDIR)/pkgconfig/netcdf-pnetcdf.pc 
	dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) $(LIBDIR)/netcdf/pnetcdf/libnetcdf.so 
	dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/libnetcdf_pnetcdf.so.$(SO_VERSION) $(LIBDIR)/libnetcdf_pnetcdf.so
	dh_link -p libnetcdf-pnetcdf-dev $(LIBDIR)/netcdf/pnetcdf  $(LIBDIR)/netcdf/pnetcdf/lib
	dh_link -p libnetcdf-pnetcdf-dev  $(LIBDIR)/pkgconfig/netcdf-pnetcdf.pc $(LIBDIR)/netcdf/pnetcdf/pkgconfig/netcdf.pc
endif
	# Strip RPATH
	-find $(CURDIR)/debian/tmp/usr/bin -type f -not -name nc-config -exec chrpath --delete {} \;
	-find $(CURDIR)/debian/tmp/usr/lib -type f -name "*.so*" -exec chrpath --delete {} \;
	cp include/netcdf_par.h debian/tmp/$(LIBDIR)/netcdf/mpi/include 
	find $(CURDIR)/debian/tmp/usr/lib -type f \( -name "*.settings" -or -name "*.cmake" \) -print0 | \
		xargs -0r sed -i -e 's@ [^ ]*-f\(file\|debug\)-prefix-map=[^ ]*@@g'
override_dh_auto_test:
	ARGS="--output-on-failure" dh_auto_test --max-parallel=1 || echo "Ignoring test failures"
	# Disable tests for pnetcdf. Multiple failures in nc_test where char conversions give:
	# test_put.c: NetCDF: Numeric conversion not representablea
	# This for 1.7.0pre1
	# LD_LIBRARY_PATH=$(CURDIR)/build-pnetcdf/liblib    $(MAKE) -C build-pnetcdf test
override_dh_installchangelogs:
	dh_installchangelogs RELEASE_NOTES.md
override_dh_strip:
	dh_strip --dbgsym-migration='netcdf-dbg (<< 1:4.5.0-2~)'
override_dh_makeshlibs:
	dh_makeshlibs -- -v$(UPSTREAM_VERSION)
 
     |