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
|
#!/usr/bin/make -f
include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/pkg-info.mk # for SOURCE_DATE_EPOCH
export DEB_BUILD_MAINT_OPTIONS=hardening=+all optimize=-lto
ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
export VERBOSE=1
endif
# needed for reproducible-version.patch
export CURDIR
VERSION := $(shell cat M2/VERSION)
%:
dh $@ --sourcedirectory=M2 --with linktree
# use exec_prefix instead of prefix in libdir, as that's what's needed
# to properly substitute paths in Layout#2
LIBDIR := \$${exec_prefix}/lib/$(DEB_HOST_MULTIARCH)
# set emacs lisp file installation directory so that the documentation
# matches where dh_elpa installs them
EMACSDIR := \
\$${prefix}/share/emacs/site-lisp/elpa/macaulay2-$(VERSION)
# fix TBB linking issue on armel (https://github.com/Macaulay2/M2/pull/2528)
ifeq ($(DEB_HOST_ARCH),armel)
LIBS = -latomic
endif
WITH_PYTHON := $(if $(filter nopython, $(DEB_BUILD_PROFILES)),, --with-python)
ifneq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
DISABLE_DOCUMENTATION = --disable-documentation
else
DISABLE_DOCUMENTATION := $(if $(shell dh_listpackages -i),,\
--disable-documentation)
endif
override_dh_auto_configure:
dh_auto_configure -- \
--libdir=$(LIBDIR) \
--with-emacsdir=$(EMACSDIR) \
--with-system-memtailor \
--with-system-mathic \
--with-system-mathicgb \
--with-system-gc \
LIBS="$(LIBS)" \
$(WITH_PYTHON) \
$(DISABLE_DOCUMENTATION) \
$(if $(DISABLE_DOCUMENTATION),,--enable-syntax-highlighting)
ifeq ($(DISABLE_DOCUMENTATION),)
dh_auto_configure --buildsystem=nodejs
mv node_modules M2/Macaulay2/editors/highlightjs
endif
# copy cached example output files (for examples known to fail on
# various architectures) to source directory
# see generateExamples in debian/scripts/Debian.m2
EXAMPLE_SRC := $(wildcard $(CURDIR)/debian/examples/*)
EXAMPLE_DEST := $(patsubst $(CURDIR)/debian/examples/%, \
$(CURDIR)/M2/Macaulay2/packages/%/examples, $(EXAMPLE_SRC))
$(CURDIR)/M2/Macaulay2/packages/%/examples: $(CURDIR)/debian/examples/%
mkdir -p $@
cp -v $</*.out $@
execute_before_dh_auto_build: $(EXAMPLE_DEST)
mkdir -p M2/Macaulay2/packages/Style/katex
# since a "test" target exists, dh_auto_test defaults to using that, but
# it just prints the values of some variables. we want the "check" target
# instead to run the test suite
# related: https://bugs.debian.org/924052
override_dh_auto_test-arch:
$(MAKE) -C M2 check ArgumentMode="defaultMode - SetUlimit" LIMIT=
ifeq ($(DISABLE_DOCUMENTATION),)
override_dh_auto_test-indep:
$(MAKE) -C M2 validate-html
endif
# create dumps of package documentation databases to ship with macaulay2-common
# and then load during postinst
PKGLIBDIR := debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/Macaulay2
PKGDOCDIR := debian/tmp/usr/share/doc/Macaulay2
DB_FILENAME := rawdocumentation-$(if \
$(filter little, $(DEB_HOST_ARCH_ENDIAN)),dcba,abcd)-$(if \
$(filter 64, $(DEB_HOST_ARCH_BITS)),8,4).db
DB_FILES = $(wildcard $(PKGLIBDIR)/*/cache/$(DB_FILENAME))
DUMP_FILES = $(DB_FILES:$(PKGLIBDIR)/%/cache/$(DB_FILENAME)=\
$(PKGDOCDIR)/%/dump/rawdocumentation.dump)
$(PKGDOCDIR)/%/dump/rawdocumentation.dump: $(PKGLIBDIR)/%/cache/$(DB_FILENAME)
mkdir -p $(dir $@)
# gdbm_load records the path of the database file and the timestamp in the
# dump file, so use a relative path and faketime for reproducibility
cd $(dir $<) && \
faketime '@$(SOURCE_DATE_EPOCH)' \
gdbm_dump $(notdir $<) $(CURDIR)/$@
execute_after_dh_auto_install-indep: $(DUMP_FILES)
rm -rf $(EXAMPLE_DEST)
for DIR in $(subst /examples,,$(EXAMPLE_DEST)); \
do if [ -z "$$(ls -A $$DIR)" ]; then rm -rf $$DIR; fi; \
done
rm -rf $(PKGLIBDIR) # remove package documentation database files
# https://github.com/Macaulay2/M2/issues/1144
execute_before_dh_link-indep:
jdupes -rl debian/macaulay2-common/usr/share/doc/Macaulay2
# example output, package test files, and database dumps must be plain text
override_dh_compress:
dh_compress -Xexample-output -X.m2 -X.dump
execute_before_dh_elpa: debian/macaulay2-pkg.el
debian/macaulay2-pkg.el: debian/macaulay2-pkg.el.in
sed -e 's|@VERSION@|$(VERSION)|g' $< > $@
# prevent dh_missing from failing when only building arch-dependent packages
execute_before_dh_missing:
if [ ! -f debian/macaulay2-pkg.el ]; \
then \
rm -rf debian/tmp/usr/share/emacs; \
fi
override_dh_installdeb:
dh_installdeb --define DEB_HOST_MULTIARCH=$(DEB_HOST_MULTIARCH) \
--define DB_FILENAME=$(DB_FILENAME)
# we use uscan to check for the most recent version, but to create an
# orig tarball, we also need the contents of the M2-emacs submodule,
# so use this target instead of uscan directly
get-orig-source:
debian/scripts/m2-get-orig-source.sh
|