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 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
|
#!/usr/bin/make -f
# define default MPI (ARCH_DEFAULT_MPI_IMPL)
include /usr/share/mpi-default-dev/debian_defaults
export DPKG_EXPORT_BUILDFLAGS = 1
export DEB_BUILD_HARDENING = 1
export DEB_BUILD_MAINT_OPTIONS := hardening=+all
export DEB_FFLAGS_MAINT_APPEND = $(shell dpkg-buildflags --get CPPFLAGS)
include /usr/share/dpkg/default.mk
DEB_NOEPOCH_VERSION := $(shell echo $(DEB_VERSION) | cut -d: -f2-)
DEB_UPSTREAM_VERSION := $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
ADIOS2_UPSTREAM_VERSION=$(DEB_UPSTREAM_VERSION)
ADIOS2_MAJOR_VERSION=$(shell echo $(ADIOS2_UPSTREAM_VERSION) | cut -d . -f 1)
ADIOS2_MINOR_VERSION=$(shell echo $(ADIOS2_UPSTREAM_VERSION) | cut -d . -f 2)
export ADIOS2_SOVERSION=$(ADIOS2_MAJOR_VERSION).$(ADIOS2_MINOR_VERSION)
PYVERS := $(shell py3versions -vs)
PYVERS_LIST := $(shell echo $(PYVERS) | tr " " ";")
get-orig-source:
wget -O ../adios2_$(DEBIAN_VERSION).orig.tar.gz --no-clobber https://github.com/ornladios/ADIOS2/archive/$(GIT_VERSION).tar.gz
mkdir tmp
tar -C tmp --strip-components=1 -xf ../adios2_$(DEBIAN_VERSION).orig.tar.gz
cd tmp && rm -r \
thirdparty/atl \
thirdparty/dill \
thirdparty/enet \
thirdparty/EVPath \
thirdparty/ffs \
thirdparty/GTest \
thirdparty/mingw-w64 \
thirdparty/nlohmann_json \
thirdparty/pugixml \
thirdparty/pybind11 \
thirdparty/yaml-cpp
tar --owner=root --group=root --transform="s/^tmp/adios2_$(DEBIAN_VERSION)+dfsg1/" -cJf ../adios2_$(DEBIAN_VERSION)+dfsg1.orig.tar.xz tmp
rm -r tmp
flavors := serial mpi
%:
dh $@ --buildsystem=cmake+ninja
configure_flags_common := \
-DADIOS2_USE_EXTERNAL_DEPENDENCIES:BOOL=ON \
-DADIOS2_USE_EXTERNAL_ENET:BOOL=ON \
-DADIOS2_USE_BZip2:BOOL=ON \
-DADIOS2_USE_Fortran:BOOL=ON \
-DADIOS2_USE_HDF5:BOOL=ON \
-DADIOS2_USE_PNG:BOOL=ON \
-DADIOS2_USE_ZeroMQ:BOOL=ON \
-DADIOS2_USE_Python:BOOL=ON \
-DADIOS2_USE_ZFP:BOOL=ON \
-DADIOS2_Python_Version="$(PYVERS_LIST)" \
-DEVPATH_TRANSPORT_MODULES=ON \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON
ifeq ($(DEB_HOST_ARCH_ENDIAN),big)
configure_flags_common += -DADIOS2_USE_Endian_Reverse=ON -DADIOS2_USE_Blosc2:BOOL=OFF
EXTRA_CTEST_FLAGS += -E Install.CMake.EncryptionOperator
else
configure_flags_common += -DADIOS2_USE_Blosc2:BOOL=ON
endif
configure_flags_serial := $(configure_flags_common) \
-DCMAKE_INSTALL_CMAKEDIR:STRING=lib/$(DEB_HOST_GNU_TYPE)/cmake/adios2/serial \
-DADIOS2_LIBRARY_FLAVOR:STRING=serial \
-DADIOS2_LIBRARY_SUFFIX:STRING=_serial \
-DADIOS2_EXECUTABLE_SUFFIX:STRING=.serial \
-DADIOS2_USE_MPI:BOOL=OFF \
-DHDF5_C_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5cc
configure_flags_mpi_common := $(configure_flags_common) \
-DADIOS2_USE_MPI:BOOL=ON \
-DADIOS2_USE_SSC:BOOL=ON
configure_flags_mpi := $(configure_flags_mpi_common) \
-DCMAKE_INSTALL_CMAKEDIR:STRING=lib/$(DEB_HOST_GNU_TYPE)/cmake/adios2/mpi \
-DADIOS2_LIBRARY_FLAVOR:STRING=mpi \
-DADIOS2_LIBRARY_SUFFIX:STRING=_mpi \
-DADIOS2_EXECUTABLE_SUFFIX:STRING=.mpi \
-DMPI_C_COMPILER:FILEPATH=/usr/bin/mpicc.$(ARCH_DEFAULT_MPI_IMPL) \
-DMPI_CXX_COMPILER:FILEPATH=/usr/bin/mpic++.$(ARCH_DEFAULT_MPI_IMPL) \
-DMPI_Fortran_COMPILER:FILEPATH=/usr/bin/mpifort.$(ARCH_DEFAULT_MPI_IMPL) \
-DHDF5_C_COMPILER_EXECUTABLE:FILEPATH=/usr/bin/h5pcc.$(ARCH_DEFAULT_MPI_IMPL)
override_dh_auto_clean:
dh_clean $(foreach flavor,$(flavors),build-$(flavor)/ install-$(flavor)/)
start_%: flavor = $(patsubst start_%,%,$@)
start_%:
dh_ctest_start --ctest-testing-dir=build-$(flavor) --builddirectory=build-$(flavor) --ctest-build-suffix=-$(flavor)
override_dh_ctest_start: $(foreach flavor,$(flavors),start_$(flavor))
update_%: flavor = $(patsubst update_%,%,$@)
update_%:
dh_ctest_update --ctest-testing-dir=build-$(flavor) --builddirectory=build-$(flavor) --ctest-build-suffix=-$(flavor)
override_dh_ctest_update: $(foreach flavor,$(flavors),update_$(flavor))
configure_%: flavor = $(patsubst configure_%,%,$@)
configure_%:
dh_ctest_configure -O--ctest-testing-dir=build-$(flavor) --builddirectory=build-$(flavor) -O--ctest-build-suffix=-$(flavor) -O--buildsystem=cmake+ninja -- $(configure_flags_$(flavor))
override_dh_ctest_configure: $(foreach flavor,$(flavors),configure_$(flavor))
build_%: flavor = $(patsubst build_%,%,$@)
build_%:
dh_ctest_build -O--ctest-testing-dir=build-$(flavor) --builddirectory=build-$(flavor) -O--ctest-build-suffix=-$(flavor) -O--buildsystem=cmake+ninja
override_dh_ctest_build: $(foreach flavor,$(flavors),build_$(flavor))
test_%: flavor = $(patsubst test_%,%,$@)
test_%:
dh_ctest_test --ctest-testing-dir=build-$(flavor) --builddirectory=build-$(flavor) --ctest-build-suffix=-$(flavor) -- -R '^Install\.' $(EXTRA_CTEST_FLAGS)
override_dh_ctest_test: $(foreach flavor,$(flavors),test_$(flavor))
submit_%: flavor = $(patsubst submit_%,%,$@)
submit_%:
dh_ctest_submit --ctest-testing-dir=build-$(flavor) --builddirectory=build-$(flavor) --ctest-build-suffix=-$(flavor)
override_dh_ctest_submit: $(foreach flavor,$(flavors),submit_$(flavor))
install_%: flavor = $(patsubst install_%,%,$@)
install_%:
EXTRA_CMAKE_ARGS="-DCMAKE_PREFIX_PATH=$(CMAKE_PREFIX_PATH);$(CURDIR)/install-$(flavor)/usr/lib/$(DEB_HOST_GNU_TYPE)/cmake/adios2/$(flavor)" dh_auto_install --buildsystem=cmake+ninja --builddirectory=build-$(flavor) --destdir=install-$(flavor)
dh_install --sourcedir=install-$(flavor) --package libadios2-$(flavor)-core-dev usr/bin/adios2-config.$(flavor)
override_dh_auto_install: $(foreach flavor,$(flavors),install_$(flavor))
cmake_install_%: flavor = $(patsubst cmake_install_%,%,$@)
cmake_install_%: cmdbase = dh_cmake_install --builddirectory=build-$(flavor) --sourcedir=install-$(flavor)
cmake_install_%:
$(cmdbase) --package adios2-$(flavor)-bin --component adios2_tools-runtime
$(cmdbase) --package libadios2-$(flavor)-core-$(ADIOS2_SOVERSION) --component adios2_core-libraries
rm -r debian/libadios2-$(flavor)-core-*/usr/lib/*/adios2/$(flavor)
dh_install --package libadios2-$(flavor)-plugins --sourcedir=install-$(flavor) usr/lib/$(DEB_HOST_GNU_TYPE)/adios2/$(flavor)/ usr/lib/$(DEB_HOST_GNU_TYPE)/adios2/
$(cmdbase) --package libadios2-$(flavor)-core-dev --component adios2_core-development
$(cmdbase) --package libadios2-$(flavor)-c-$(ADIOS2_SOVERSION) --component adios2_c-libraries
$(cmdbase) --package libadios2-$(flavor)-c-dev --component adios2_c-development
$(cmdbase) --package libadios2-$(flavor)-c++11-$(ADIOS2_SOVERSION) --component adios2_cxx11-libraries
$(cmdbase) --package libadios2-$(flavor)-c++11-dev --component adios2_cxx11-development
$(cmdbase) --package libadios2-$(flavor)-fortran-$(ADIOS2_SOVERSION) --component adios2_fortran-libraries
$(cmdbase) --package libadios2-$(flavor)-fortran-dev --component adios2_fortran-development
cmake_install_serial_extra: cmdbase = dh_cmake_install --builddirectory=build-serial --sourcedir=install-serial
cmake_install_serial_extra:
$(cmdbase) --package python3-adios2 --component adios2_python-python
rm -f debian/python3-adios2/usr/lib/python3/dist-packages/adios2/bindings/adios2_bindings_serial*.so
for pyver in $(PYVERS); do \
$(cmdbase) --package python3-adios2-serial --component adios2_python-python$$pyver; \
done
cmake_install_mpi_extra: cmdbase = dh_cmake_install --builddirectory=build-mpi --sourcedir=install-mpi
cmake_install_mpi_extra:
$(cmdbase) --package python3-adios2 --component adios2_python-python
rm -f debian/python3-adios2/usr/lib/python3/dist-packages/adios2/bindings/adios2_bindings_mpi*.so
for pyver in $(PYVERS); do \
$(cmdbase) --package python3-adios2-mpi --component adios2_python-python$$pyver; \
done
$(cmdbase) --package adios2-data --component adios2_tools-data
override_dh_cmake_install: cmdbase = dh_cmake_install --builddirectory=build-serial --sourcedir=install-serial
override_dh_cmake_install: $(foreach flavor,$(flavors),cmake_install_$(flavor) cmake_install_$(flavor)_extra)
$(cmdbase) --package adios2-scripts --component adios2_scripts-runtime
dh_install --sourcedir=debian/adios2 --package libadios2-common-core-dev \
adios2-config.cmake usr/lib/$(DEB_HOST_GNU_TYPE)/cmake/adios2
dh_install --sourcedir=install-serial --package libadios2-common-core-dev \
usr/lib/$(DEB_HOST_GNU_TYPE)/cmake/adios2/serial/adios2-config-version.cmake usr/lib/$(DEB_HOST_GNU_TYPE)/cmake/adios2
execute_after_dh_install:
for dev_serial_package in libadios2-serial-core-dev libadios2-serial-c-dev libadios2-serial-c++11-dev; do \
dev_common_package=`echo $${dev_serial_package} | sed "s/serial/common/"`; \
if [ -d debian/$${dev_serial_package}/usr/include ]; then \
for file_inc_serial in `find debian/$${dev_serial_package}/usr/include -type f ! -name ADIOSConfig.h`; do \
file_inc_mpi=`echo $$file_inc_serial | sed "s/adios2-serial/adios2-mpi/"`; \
if diff $$file_inc_serial $$file_inc_mpi >/dev/null ; then \
file_inc=`echo $$file_inc_serial | sed "s|debian/$${dev_serial_package}/||"`; \
mkdir -p debian/$${dev_common_package}; \
dh_install -p $${dev_common_package} --sourcedir=debian/$${dev_serial_package} $$file_inc; \
rm $$file_inc_serial $$file_inc_mpi; \
fi; \
done; \
dev_mpi_package=`echo $${dev_serial_package} | sed "s/serial/mpi/"`; \
find debian/$${dev_serial_package}/usr/include -type d -empty -delete; \
find debian/$${dev_mpi_package}/usr/include -type d -empty -delete; \
fi; \
done
execute_before_dh_fixperms-arch:
for flavor in serial mpi; do \
sed "s|^#\!/bin/bash$$|#\!/bin/bash\nDEB_HOST_MULTIARCH=\$$(dpkg-architecture -qDEB_HOST_MULTIARCH)|; \
s|$(DEB_HOST_MULTIARCH)|\$${DEB_HOST_MULTIARCH}|g;" \
-i debian/libadios2-$${flavor}-core-dev/usr/bin/adios2-config.$${flavor}; \
done
override_dh_missing-arch:
dh_missing --sourcedir=install-serial
# common scripts installed to adios2-scripts are taken from the serial build
dh_missing --sourcedir=install-mpi \
-Xusr/bin/adios2_campaign_manager \
-Xusr/bin/adios2_deactivate_bp \
-Xusr/bin/adios2_json_pp \
-Xusr/bin/bp4dbg \
-Xusr/bin/bp5dbg \
-Xusr/lib/python3/dist-packages/adios2/bp4dbg \
-Xusr/lib/python3/dist-packages/adios2/bp5dbg
execute_after_dh_installdocs:
for p in libadios2-serial-core-dev libadios2-mpi-core-dev python3-adios2; do \
dh_installdocs -p $$p debian/README.Debian; \
done
|