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
|
#!/usr/bin/make -f
export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/buildopts.mk
include /usr/share/dpkg/pkg-info.mk
ifeq ($(DEB_HOST_GNU_CPU),mipsel)
# Drop the debug symbols all together on mipsel to avoid OOM causing FTBFS
export DEB_CFLAGS_MAINT_STRIP=-g
export DEB_CXXFLAGS_MAINT_STRIP=-g
endif
# Define CFLAGS and friends to harden the build -- must come any addtion to these variables
DPKG_EXPORT_BUILDFLAGS = 1
ifeq ($(DEB_HOST_GNU_CPU),mipsel)
# Further reduce the memory consumption on mipsel
LDFLAGS += -Wl,--reduce-memory-overheads -Wl,--no-keep-memory
endif
TOPDIR=$(CURDIR)
PYBINDGENV_DIR=$(shell ls -d pybindgen-*)
# Build in parallel, unless there is less than 3GiB
MEMORY=$(shell awk '/MemTotal:/{print $$2}' /proc/meminfo)
BUILD_OPTION=$(shell if [ $(MEMORY) -lt 3090252 ]; then echo "-j1"; else echo "$(DEB_BUILD_OPTION_PARALLEL:%=-j%)"; fi)
# Reproducible Build wants us to use always the same date when building the documentation
SPHINXOPTS := -D today=\"$(SOURCE_DATE_EPOCH)\"
SPHINXOPTS += -D html_last_updated_fmt=\"$(SOURCE_DATE_EPOCH)\"
# Include version information
VERSION=$(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\+dfsg.*//' | sed -e 's/\+ds.*//')
MAJOR_VERSION=$(word 1,$(subst ., ,$(VERSION)))
MINOR_VERSION=$(word 2,$(subst ., ,$(VERSION)))
PATCH_VERSION=$(word 3,$(subst ., ,$(VERSION).0)) # Add an extra .0 just in case there is no patch level
BUILD_PROFILE=release
%:
dh $@ --with python3 --buildsystem=cmake
# Set up version cache to allow generating version module. The double 0 is due to a CMake peculiarity.
execute_before_dh_auto_configure:
sed -e "s/@NS3_VERSION_CLOSEST_TAG@/NONEXISTENT_TAG__PACKAGE_BUILT_FROM_DEBIAN_SOURCE/" \
-e "s/@NS3_VERSION_COMMIT_HASH@//" \
-e "s/@NS3_VERSION_DIRTY_FLAG@/1/" \
-e "s/@NS3_VERSION_MAJOR@/$(MAJOR_VERSION)/" \
-e "s/@NS3_VERSION_MINOR@/$(MINOR_VERSION)/" \
-e "s/@NS3_VERSION_PATCH@/$(PATCH_VERSION)/" \
-e "s/@NS3_VERSION_RELEASE_CANDIDATE@//" \
-e "s/@NS3_VERSION_TAG@/NONEXISTENT_TAG__PACKAGE_BUILT_FROM_DEBIAN_SOURCE/" \
-e "s/@NS3_VERSION_TAG_DISTANCE@/00/" \
-e "s/@NS3_VERSION_BUILD_PROFILE@/$(BUILD_PROFILE)/" \
build-support/version.cache.in > src/core/model/version.cache
# Use the ns3 wrapper over cmake because I fail to get it work otherwise,
# but pass the parameters that cmake needs to build a proper Debian package (copied from the simgrid build logs)
override_dh_auto_configure:
./ns3 configure --verbose \
--build-profile=$(BUILD_PROFILE) --enable-python-bindings --enable-logs --enable-examples --enable-tests --disable-mpi --enable-build-version \
--prefix=/usr -- \
-DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON \
-DCMAKE_INSTALL_RUNSTATEDIR=/run -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) -DCMAKE_INSTALL_PREFIX=/usr
override_dh_auto_build-arch:
./ns3 build --verbose
# override_dh_auto_build-indep:
# ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
# echo "XXXX run: SPHINXOPTS='$(SPHINXOPTS)' ./ns3 docs -v sphinx"
# export SPHINXOPTS="$(SPHINXOPTS)"; ./ns3 docs -v sphinx
# echo "XXXX done: ./ns3 docs sphinx"
# echo "XXXX run: SPHINXOPTS='$(SPHINXOPTS)' ./ns3 docs -v html"
# export SPHINXOPTS="$(SPHINXOPTS)"; ./ns3 docs -v html
# echo "XXXX done: ./ns3 docs -v html"
# rm -f doc/*/build/*/_static/jquery.js
# rm -f doc/*/build/*/_static/underscore.js
# else
# for d in manual models tutorial ; do mkdir -p doc/$$d/build/html ; touch doc/$$d/build/html/index.html ; done
# endif
# touch $@
override_dh_auto_install:
DESTDIR=$$(pwd)/debian/tmp AM_UPDATE_INFO_DIR=no INSTALL="install --strip-program=true" ./ns3 install
mkdir -p debian/tmp/usr/bin
# cp netanim-*/NetAnim debian/tmp/usr/bin
# Install my own little script as a compiler
set -e ;\
all_libs=$$(find debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/ -name 'libns3*.so' | sed -e "s|debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/||" -e 's/.so$$//' | sort) ;\
sed -e "s/@ALL_LIBS@/$$(echo $$all_libs)/g" debian/ns3++.in > debian/tmp/usr/bin/ns3++
chmod +x debian/tmp/usr/bin/ns3++
# Install the upstream changelog as NEWS, as requested by the policy
cp RELEASE_NOTES.md NEWS.md
override_dh_auto_test:
-./test.py -v
override_dh_installchangelogs:
dh_installchangelogs CHANGES.md
# override_dh_link:
# dh_link
# if test -e debian/ns3-doc/usr/share/doc; then \
# jdupes -rl debian/ns3-doc/usr/share/doc; \
# fi
#
# override_dh_install:
# dh_install
#
# ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
# # The doc is not built when building only for a given arch (it's built in 'arch:all')
# if [ -e debian/ns3-doc/usr/share/doc/ns3/manual/html/_static ] ; then \
# for where in manual models tutorial ; do \
# for what in doctools.js language_data.js searchtools.js ; do \
# rm debian/ns3-doc/usr/share/doc/ns3/$${where}/html/_static/$${what}; \
# ln -s /usr/share/javascript/sphinxdoc/1.0/$${what} debian/ns3-doc/usr/share/doc/ns3/$${where}/html/_static/$${what}; \
# done ; \
# done ; \
# fi
# endif
override_dh_auto_clean:
#-sh ./debian/clean-tree.sh
rm -f src/core/model/version.cache
dh_auto_clean
# ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
# override_dh_compress:
# dh_compress -Xusr/share/doc/ns3/examples/ -Xusr/share/doc/ns3/manual/ -Xusr/share/doc/ns3/models/ -Xusr/share/doc/ns3/tutorial/
# endif
# Note to self: Download the new version by using 'uscan'
|