#!/usr/bin/make -f # New stable upstream release TODO: # s/A.B/C.D/go in debian/control. # Adjust debian/changelog. # Adjust "ver" variables below. # Adjust debian/guile-libs.lintian. # Adjust debian/.gitignore. # Fix deb_alt_priority below. .DELETE_ON_ERROR: include /usr/share/dpkg/architecture.mk include /usr/share/dpkg/buildopts.mk include /usr/share/dpkg/pkg-info.mk SHELL := /bin/bash # Make sure the build process doesn't touch the real HOME. export HOME := $(CURDIR)/debian/no-trespassing # Keep this in sync with guile-doc.install expected_info := guile.info $(foreach n,1 2 3 4 5 6 7 8 9 10 11,guile.info-$(n)) joblimit := $(or $(DEB_BUILD_OPTION_PARALLEL),1) # Uncomment this to turn on verbose mode. #export DH_VERBOSE := 1 # Get the version from GUILE-VERSION to handle any +really downgrades. upstream_ver != debian/upstream-version ifneq (0,$(.SHELLSTATUS)) $(error debian/upstream-version exit status $(.SHELLSTATUS)) endif deb_src_maj_ver := $(word 1,$(subst ., ,$(upstream_ver))) deb_src_min_ver := $(word 2,$(subst ., ,$(upstream_ver))) deb_src_mic_ver := $(word 3,$(subst ., ,$(upstream_ver))) deb_src_eff_ver := $(deb_src_maj_ver).$(deb_src_min_ver) deb_pkg_basename := guile-$(deb_src_eff_ver) deb_guile_bin_path := /usr/bin/guile-$(deb_src_eff_ver) $(shell x='$(deb_src_min_ver)'; [ "$${x}" -lt 1000 ]) ifneq (0,$(.SHELLSTATUS)) $(error ERROR: alternatives priority expects min version < 1000) endif # Up to and including some releases of 2.0.11, this was (incorrectly) # majminmic (i.e. 2011 for 2.0.11). As of 3.0, we switched to this, # i.e. 3.0 -> 3000, 3.1 -> 3001, 3.2 -> 3002, etc. deb_alt_priority := $(deb_src_maj_ver)$(shell printf "%03d" $(deb_src_min_ver)) ifneq ($(DEB_HOST_MULTIARCH),) march = $(DEB_HOST_MULTIARCH)/ else march = endif ifneq (,$(filter $(DEB_TARGET_ARCH),armel armhf x32)) deb_config_args += --enable-jit=no endif export DEB_CFLAGS_MAINT_APPEND := \ -DPACKAGE_PACKAGER='"Debian"' \ -DPACKAGE_PACKAGER_VERSION='"$(DEB_VERSION)"' \ -DPACKAGE_PACKAGER_BUG_REPORTS='"http://www.debian.org/Bugs/Reporting"' # https://debbugs.gnu.org/29464 export DEB_CFLAGS_MAINT_APPEND += -fno-stack-protector %: dh $@ .PHONY: check-vars check-vars: @echo " upstream_ver:" $(upstream_ver) @echo "deb_pkg_basename:" $(deb_pkg_basename) @echo " deb_src_eff_ver:" $(deb_src_eff_ver) @echo " deb_src_maj_ver:" $(deb_src_maj_ver) @echo " deb_src_min_ver:" $(deb_src_min_ver) @echo " deb_src_mic_ver:" $(deb_src_mic_ver) @echo "deb_alt_priority:" $(deb_alt_priority) @echo " march:" $(march) # For now, assumes there are no "|" characters in the expansions. debian/autogen.sed: debian/rules debian/changelog echo "s|@UPSTREAM_VER@|$(upstream_ver)|g" > $@ echo "s|@DEB_SRC_MAJ_VER@|$(deb_src_maj_ver)|g" >> $@ echo "s|@DEB_SRC_MIN_VER@|$(deb_src_min_ver)|g" >> $@ echo "s|@DEB_SRC_MIC_VER@|$(deb_src_mic_ver)|g" >> $@ echo "s|@DEB_SRC_EFF_VER@|$(deb_src_eff_ver)|g" >> $@ echo "s|@DEB_PKG_BASENAME@|$(deb_pkg_basename)|g" >> $@ echo "s|@DEB_ALT_PRIORITY@|$(deb_alt_priority)|g" >> $@ echo "s|@MARCH@|$(march)|g" >> $@ autogen_install_files := $(addprefix debian/, \ guile-$(deb_src_eff_ver).install \ guile-$(deb_src_eff_ver).links \ guile-$(deb_src_eff_ver).menu \ guile-$(deb_src_eff_ver).undocumented \ guile-$(deb_src_eff_ver)-dev.install \ guile-$(deb_src_eff_ver)-doc.README.Debian \ guile-$(deb_src_eff_ver)-doc.install \ guile-$(deb_src_eff_ver)-libs.install \ guile-$(deb_src_eff_ver)-libs.lintian-overrides) autogen_installdeb_files := $(addprefix debian/, \ guile-$(deb_src_eff_ver).postinst \ guile-$(deb_src_eff_ver).prerm \ guile-$(deb_src_eff_ver)-dev.postinst \ guile-$(deb_src_eff_ver)-dev.prerm \ guile-$(deb_src_eff_ver)-doc.postinst \ guile-$(deb_src_eff_ver)-doc.prerm \ guile-$(deb_src_eff_ver)-libs.postinst \ guile-$(deb_src_eff_ver)-libs.prerm \ guile-$(deb_src_eff_ver)-libs.triggers) debian/source/lintian-overrides: debian/source/lintian-overrides.in debian/autogen.sed sed -f debian/autogen.sed "$<" > $@ debian/guile-$(deb_src_eff_ver).%: debian/guile.% debian/autogen.sed sed -f debian/autogen.sed "$<" > $@ debian/guile-$(deb_src_eff_ver)-dev.%: debian/guile-dev.% debian/autogen.sed sed -f debian/autogen.sed "$<" > $@ debian/guile-$(deb_src_eff_ver)-doc.%: debian/guile-doc.% debian/autogen.sed sed -f debian/autogen.sed "$<" > $@ debian/guile-$(deb_src_eff_ver)-libs.%: debian/guile-libs.% debian/autogen.sed sed -f debian/autogen.sed "$<" > $@ debian/guile-$(deb_src_eff_ver)-doc.postinst: DEB_PKG_BASENAME="$(deb_pkg_basename)" \ DEB_INFO_SUBDIR="$(deb_pkg_basename)" \ DEB_ALT_PRIORITY="$(deb_alt_priority)" \ debian/guile-doc.postinst.gen $(addprefix doc/ref/,$(expected_info)) \ > $@ override_dh_testdir: debian/source/lintian-overrides ifneq ($(DEB_BUILD_ARCH),$(patsubst hurd-%,,$(DEB_BUILD_ARCH))) df -h # See what we have (relevant to tests like ports.test) endif dh_testdir debian/guile.postinst override_dh_autoreconf: echo '$(upstream_ver)' > .version cp -a .version .tarball-version dh_autoreconf ./autogen.sh override_dh_auto_configure: dh_auto_configure -- --disable-error-on-warning --disable-rpath \ --program-suffix "-$(deb_src_eff_ver)" $(deb_config_args) # Because some of the bootstrapping files compile for a very long time # with no output, the buildds don't have per-package limits, and we # don't want to raise the global limit that high for the slower # architectures. override_dh_auto_build: timeout 10h bash \ -c 'while true; do printf "still going %(%F %T)T\n" 1>&2; sleep 600; done' & \ trap "kill $$!" EXIT \ && $(MAKE) -j "$(joblimit)" override_dh_auto_clean: # If Makefile doesn't exist GNUmakefile will abort on distclean. if test -e Makefile; then make distclean; fi override_dh_clean: dh_clean $(autogen_install_files) $(autogen_installdeb_files) \ .tarball-version \ .version \ blarg-clean \ bootstrap/ice-9/ \ bootstrap/language/ \ bootstrap/srfi/ \ bootstrap/system/ \ debian/autogen.sed \ doc/r5rs/r5rs.info \ doc/ref/autoconf-macros.texi \ doc/ref/effective-version.texi \ doc/ref/guile.info \ doc/ref/guile.info-1 \ doc/ref/guile.info-10 \ doc/ref/guile.info-11 \ doc/ref/guile.info-2 \ doc/ref/guile.info-3 \ doc/ref/guile.info-4 \ doc/ref/guile.info-5 \ doc/ref/guile.info-6 \ doc/ref/guile.info-7 \ doc/ref/guile.info-8 \ doc/ref/guile.info-9 \ doc/ref/stamp-vti \ doc/ref/version.texi \ filesys-test-link.tmp \ guile-procedures.txt \ libguile/c-tokenize.c \ libguile/cpp-E.c \ libguile/cpp-SIG.c \ libguile/vm-operations.h # Info pages are installed to /usr/share/info/guile-X.Y/ via # guile-doc.install, and handled via update-alternatives. override_dh_installinfo: true override_dh_auto_install: $(autogen_install_files) make DESTDIR="$$(pwd)/debian/tmp" INSTALL='install -p' install rm -f debian/tmp/usr/lib/$(march)libguile*.la mkdir -p debian/tmp/usr/share/doc/$(deb_pkg_basename)-dev cp -a examples debian/tmp/usr/share/doc/$(deb_pkg_basename)-dev cd debian/tmp/usr/share/doc/$(deb_pkg_basename)-dev/examples \ && rm Makefile Makefile.in gdb_ext := \ debian/$(deb_pkg_basename)-libs/usr/lib/$(march)libguile-$(deb_src_eff_ver).so*-gdb.scm gdb_ext_dir := debian/$(deb_pkg_basename)-dev/usr/share/gdb/auto-load override_dh_install-arch: $(autogen_install_files) cd debian/tmp/usr/bin && mv -i guile-$(deb_src_eff_ver) guile cd debian/tmp/usr/share/aclocal && mv -i guile.m4 guile-$(deb_src_eff_ver).m4 dh_install -a dh_missing -a --fail-missing \ -Xusr/lib/$(march)guile/$(deb_src_eff_ver)/extensions/guile-readline.a \ -Xusr/lib/$(march)guile/$(deb_src_eff_ver)/extensions/guile-readline.la test -e $(gdb_ext) mkdir -p $(gdb_ext_dir) mv $(gdb_ext) $(gdb_ext_dir) override_dh_install-indep: $(autogen_install_files) # Glob should match the one in debian/guile-doc.install test "$(sort $(expected_info))" = \ "$(sort $(shell cd debian/tmp/usr/share/info && ls guile.info*))" dh_install -i dh_missing -i --fail-missing \ -Xusr/bin/guile-$(deb_src_eff_ver) \ -Xusr/share/info/dir \ -Xusr/share/info/r5rs.info \ -Xusr/lib/$(march)guile/$(deb_src_eff_ver)/extensions/guile-readline.a \ -Xusr/lib/$(march)guile/$(deb_src_eff_ver)/extensions/guile-readline.la \ -Xusr/share/aclocal/guile.m4 test ! -e debian/guile-$(deb_src_eff_ver)-doc/usr/share/info/dir override_dh_installdeb: $(autogen_installdeb_files) dh_installdeb