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
|
#!/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
ELPA_VERSION := $(shell emacs --batch \
--eval '(require (quote package))' \
--eval '(princ (package-version-join (version-to-list "$(VERSION)")))' \
2> /dev/null)
EMACSDIR := \
\$${prefix}/share/emacs/site-lisp/elpa-src/macaulay2-$(ELPA_VERSION)
export ELPA_NAME = M2
WITH_PYTHON := $(if $(filter nopython, $(DEB_BUILD_PROFILES)), --without-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-libs \
LIBS="$(LIBS)" \
$(WITH_PYTHON) \
$(DISABLE_DOCUMENTATION) \
--with-fplll \
--disable-download
ifeq ($(DISABLE_DOCUMENTATION),)
dh_auto_configure --buildsystem=nodejs
mv node_modules M2/Macaulay2/editors/prism
endif
# prevent html-check-links from failing to find KaTeX files before
# they get added by dh_linktree
KATEX_DIR := $(CURDIR)/M2/Macaulay2/packages/Style/katex
KATEX_FILES := $(patsubst %, $(KATEX_DIR)/%, \
katex.min.css katex.min.js contrib/auto-render.min.js \
contrib/copy-tex.min.js contrib/render-a11y-string.min.js)
$(KATEX_DIR):
mkdir -p $@/contrib
$(KATEX_DIR)/%: $(KATEX_DIR)
touch $@
# 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: $(KATEX_FILES) $(EXAMPLE_DEST)
touch M2/Macaulay2/packages/Style/prism.js
# 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" \
TLIMIT=unlimited
# 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
$(MAKE) -C M2/Macaulay2/editors prism/prism.js
cp M2/Macaulay2/editors/prism/prism.js \
debian/tmp/usr/share/Macaulay2/Style
# https://github.com/Macaulay2/M2/issues/1144
execute_before_dh_link-indep:
jdupes -rl debian/macaulay2-common/usr/share/doc/Macaulay2
override_dh_linktree-indep:
dh_linktree -X.uuid
# 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/M2-pkg.el
debian/M2-pkg.el: debian/M2-pkg.el.in
sed -e 's|@VERSION@|$(ELPA_VERSION)|g' $< > $@
# prevent dh_missing from failing when only building arch-dependent packages
execute_before_dh_missing:
if [ ! -f debian/M2-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)
|