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 220 221 222 223 224 225 226 227 228 229 230 231 232
|
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
DEB_BUILD_ARCH_OS ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
# Disabled because this FTBFS with multiple jobs (bug 620973)
#ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
# NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
# MAKEFLAGS += -j$(NUMJOBS)
#endif
# Add here any variable or target overrides you need.
# where sources are
DEB_SRCDIR = $(CURDIR)/src
# no check for this software
#DEB_MAKE_CHECK_TARGET :=
CCP=mpicc
export CFLAGS_COMMON = -O3 -fPIC -I. -I/usr/include/mpi \
-Drestrict=__restrict \
-DCOMMON_FILE_COMPRESS_GZ \
-DCOMMON_FILE_COMPRESS_BZ2 \
-DCOMMON_FILE_COMPRESS_LZMA \
-DCOMMON_PTHREAD \
-DSCOTCH_PTHREAD_NUMBER=2 \
-DCOMMON_RANDOM_FIXED_SEED \
-DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER
export LDFLAGS_COMMON = -pthread -lz -lbz2 -llzma -lm -lrt
# hurd does not have POSIX time and therefore needs sys/time.h to define struct timeval
# hurd does not support pthread_setaffinity_np (-DSCOTCH_PTHREAD_AFFINITY_LINUX)
ifeq ($(DEB_BUILD_ARCH_OS),hurd)
CFLAGS_COMMON += -DHAVE_SYS_TIME_H
else
CFLAGS_COMMON += -DCOMMON_PTHREAD_AFFINITY_LINUX
endif
# By default, halt on test (check) failures. But,
# - hurd times out on buildd during build-time checks
# - m68k segfaults inside the qemu emulator used for builds
# - powerpcspe segfaults on test_scotch_graph_order in INTSIZE64
# so don't halt on test failures on these arches.
# In fact don't run tests at all on hurd.
ifeq ($(DEB_HOST_ARCH_OS),hurd)
HALT_ON_TEST_ERROR = no
SKIP_TESTS = yes
else ifeq ($(DEB_HOST_ARCH),m68k)
HALT_ON_TEST_ERROR = no
else ifeq ($(DEB_HOST_ARCH),powerpcspe)
HALT_ON_TEST_ERROR = no
else
HALT_ON_TEST_ERROR = yes
endif
DEB_DBG_PACKAGE_scotch = scotch-dbg
DEB_DBG_PACKAGE_ptscotch = ptscotch-dbg
DEB_DBG_PACKAGE_libscotch-6.0 = libscotch-dbg
DEB_DBG_PACKAGE_libptscotch-6.0 = libptscotch-dbg
DEB_STRIPPED_UPSTREAM_VERSION = $(shell echo $(DEB_UPSTREAM_VERSION) | sed -n -e 's/\.dfsg.*$$//p')
SCOTCH_VERSION=$(DEB_STRIPPED_UPSTREAM_VERSION)
INTSIZE_VERS := $(shell echo "int int32 int64 long")
export OMPI_MCA_plm_rsh_agent=/bin/false #workaround to start MPI-applications in chroot
patch-stamp:
QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2
touch $@
build: build-arch
build-arch: build-arch-stamp
build-arch-stamp: patch-stamp
dh_testdir
dh_prep
for v in $(INTSIZE_VERS); do \
mkdir -p $(CURDIR)/$$v; \
mkdir -p $(CURDIR)/$$v/bin; \
mkdir -p $(CURDIR)/$$v/lib; \
mkdir -p $(CURDIR)/$$v/include; \
mkdir -p $(CURDIR)/$$v/share/man/man1; \
done
# Do no run test in //
#(cd src && $(MAKE) ptcheck prefix=$(CURDIR)/$$v)
set -e; \
for v in $(INTSIZE_VERS); do \
echo "compiling for $$v"; \
cp debian/Makefile_$$v.inc src/Makefile.inc; \
(cd src && $(MAKE) realclean prefix=$(CURDIR)/$$v); \
(cd src && $(MAKE) scotch ptscotch prefix=$(CURDIR)/$$v); \
(cd src && $(MAKE) esmumps ptesmumps prefix=$(CURDIR)/$$v); \
echo "check for $$v"; \
if [ "x$(SKIP_TESTS)" != "xyes" ]; then \
if [ "x$(HALT_ON_TEST_ERROR)" = "xno" ]; then \
(cd src && LD_LIBRARY_PATH=$(CURDIR)/src/check/../../lib:$(LD_LIBRARY_PATH) $(MAKE) check prefix=$(CURDIR)/$$v) || /bin/true; \
else \
(cd src && LD_LIBRARY_PATH=$(CURDIR)/src/check/../../lib:$(LD_LIBRARY_PATH) $(MAKE) check prefix=$(CURDIR)/$$v); \
fi; \
fi; \
echo "install for $$v"; \
(cd src && $(MAKE) install prefix=$(CURDIR)/$$v); \
mv $$v/bin/gbase $$v/bin/scotch_gbase; \
mv $$v/bin/gmap $$v/bin/scotch_gmap; \
mv $$v/bin/gpart $$v/bin/scotch_gpart; \
rm -rf lib; \
rm -f src/Makefile.inc; \
done
touch $@
build-indep:
install: build
# find . -name libscotch.so | xargs ls -l; \
# Install [par]metis-compatibility symlinks
for v in $(INTSIZE_VERS); do \
(cd $$v/lib && ln -s libscotchmetis.a libmetis.a); \
(cd $$v/lib && ln -s libscotchmetis.so libmetis.so); \
(cd $$v/lib && ln -s libptscotchparmetis.a libparmetis.a); \
(cd $$v/lib && ln -s libptscotchparmetis.so libparmetis.so); \
done
# add suffix to {int32,int64,long}/bin/*
for file in $(shell ls int32/bin); do \
(cd int32/bin && mv $$file $$file-int32); \
done
for file in $(shell ls int64/bin); do \
(cd int64/bin && mv $$file $$file-int64); \
done
for file in $(shell ls long/bin); do \
(cd long/bin && mv $$file $$file-long); \
done
# Fix lintian warnings for undefined macro in man pages
perl -pi -e 's|\.\"|\.\\\"|' int/share/man/man1/*.1
## mv int/share/man/man1/gbase.1 int/share/man/man1/scotch_gbase.1
# Rename gmap to avoid clash with package gmap
mv int/share/man/man1/gmap.1 int/share/man/man1/scotch_gmap.1
mv int/share/man/man1/gpart.1 int/share/man/man1/scotch_gpart.1
# Fix lintian missing man pages
cp debian/scotch_binaries.1 int/share/man/man1
cp debian/ptscotch_esmumps.1 int/share/man/man1
cp debian/dgscat.1 int/share/man/man1
cp debian/dgscat.1 int/share/man/man1/gscat.1
# Fix lintian warnings
find int/share/man/man1/ -name *.1 | xargs -r gzip -n9
for file in scotch_esmumps scotch_gbase acpl amk_grf mcv; do \
(cd int/share/man/man1 && ln -sf scotch_binaries.1.gz $$file.1.gz); \
done
cd int/share/man/man1 && ln -sf dgscat.1.gz dggath.1.gz
for file in $(shell ls int/bin); do \
(cd int/share/man/man1 && ln -sf $$file.1.gz $$file-int32.1.gz); \
(cd int/share/man/man1 && ln -sf $$file.1.gz $$file-int64.1.gz); \
(cd int/share/man/man1 && ln -sf $$file.1.gz $$file-long.1.gz); \
done
#
# Add "#include <cstdio>" to main [pt]scotch.h
find . -name \*scotch.h | xargs perl -pi -e "s|\/\*\+ Version flags|\#ifdef \_\_cplusplus\n\#include \<cstdio\>\n\#else\n\#include \<stdio.h\>\n\#endif\n\n\/\*\+ Version flags|"
clean:
dh_testdir
dh_clean
for v in $(INTSIZE_VERS); do \
(if [ -d $$v ]; then rm -rf $$v; fi); \
done
for file in scotch_binaries.1 ptscotch_esmumps.1 gscat.1; do \
rm -f int/share/man/man1/$file; \
done
cp debian/Makefile.inc src/
make -C src/check realclean
make -C src realclean
rm -f src/Makefile.inc
QUILT_PATCHES=debian/patches quilt pop -a -R || test $$? = 2
rm -f patch-stamp
rm -f build-arch-stamp
rm -rf .pc lib bin include
find src -name \*.so | xargs -r rm
find src -name \*.a | xargs -r rm
binary-indep: install
dh_testdir -i
dh_testroot -i
dh_installdirs -i
dh_install -i
dh_installdocs -i
dh_installchangelogs -i
dh_lintian -i
dh_link -i
dh_compress -i -XMakefile -Xcc -Xinp
dh_fixperms -i
dh_installdeb -i
dh_gencontrol -i
dh_md5sums -i
dh_builddeb -i
binary-arch: install
dh_testdir -a
dh_testroot -a
dh_installdirs -a
dh_install -a
dh_installdocs -a
dh_installchangelogs -a
dh_lintian -a
dh_link -a
dh_strip -pscotch --dbgsym-migration='scotch-dbg (<< 6.0.4.dfsg1-8~)'
dh_strip -pptscotch --dbgsym-migration='ptscotch-dbg (<< 6.0.4.dfsg1-8~)'
dh_strip -plibscotch-6.0 --dbgsym-migration='libscotch-dbg (<< 6.0.4.dfsg1-8~)'
dh_strip -plibptscotch-6.0 --dbgsym-migration='libptscotch-dbg (<< 6.0.4.dfsg1-8~)'
dh_makeshlibs -a
dh_compress -a -X.pdf
dh_fixperms -a
dh_installdeb -a
dh_shlibdeps -a
dh_gencontrol -a
dh_md5sums -a
dh_builddeb -a
binary: binary-indep binary-arch
.PHONY: binary binary-arch binary-indep clean
|