summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules209
1 files changed, 209 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000000..42edec7aaa
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,209 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+# export DH_VERBOSE=1
+
+# checking the release type, if $(RELEASE)=UNRELEASED we won't build
+# the thunderbird-dbgsym package
+include /usr/share/dpkg/pkg-info.mk
+RELEASE := $(DEB_DISTRIBUTION)
+
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+endif
+
+THUNDERBIRD_VERSION=$(shell tail -1 comm/mail/config/version.txt)
+
+# build directory used for building the thunderbird-l10n files
+THUNDERBIRD_L10N_BUILDDIR=debian/thunderbird-l10n-build
+
+# ID of the l10n language packs from upstream, need to match the application.id
+# in thunderbird-l10n/$LANG/manifest.json
+export MOZ_LANGPACK_ID = $(shell grep MOZ_LANGPACK_EID comm/mail/locales/Makefile.in | cut -f2 -d @)
+
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
+include /usr/share/dpkg/architecture.mk
+
+# Use dpkg-buildflags to get build flags, but exclude -g, that is dealt with
+# via configure options. Picked partially from FF.
+
+dpkg_buildflags = $(and $(1),$(shell DEB_CFLAGS_MAINT_STRIP="-g" DEB_CXXFLAGS_MAINT_STRIP="-g" dpkg-buildflags --get $(1)))
+lazy = $(eval $(1) = $$(if $$(___$(1)),,$$(eval ___$(1) := $(2)))$$(___$(1)))
+$(call lazy,CFLAGS,$$(call dpkg_buildflags,CFLAGS))
+$(call lazy,CXXFLAGS,$$(call dpkg_buildflags,CXXFLAGS))
+$(call lazy,CPPFLAGS,$$(call dpkg_buildflags,CPPFLAGS))
+$(call lazy,LDFLAGS,$$(call dpkg_buildflags,LDFLAGS))
+
+# special CFLAGS for various platforms
+ifeq ($(DEB_BUILD_ARCH),armel)
+ CFLAGS += -D__ARM_PCS
+ LDFLAGS += -Wl,-z,muldefs
+endif
+ifeq ($(DEB_BUILD_ARCH),ppc64el)
+ # Work around upstream bug 1757271
+ CFLAGS += -DSQLITE_BYTEORDER=1234
+endif
+
+# Reduce memory usage of the linker at the expense of processing time
+# This should help on lower-end architectures like arm and mips, which
+# spend an immense amount of time swapping.
+LDFLAGS += -Wl,--reduce-memory-overheads
+LDFLAGS += -Wl,--no-keep-memory
+LDFLAGS += -Wl,--as-needed
+
+# Make the linker generate compressed debug sections. dh_strip would do
+# the same anyways, but it allows elfhack to work in combination with
+# unstripped binaries when they would normally be larger than 2GiB.
+# Doing this only on 64bit architectures.
+ifeq (64,$(DEB_BUILD_ARCH_BITS))
+ LDFLAGS += -Wl,--compress-debug-sections=zlib
+endif
+
+# Add execution time and memory usage stats in the logs
+LDFLAGS += -Wl,--stats
+
+# Using the timestamp for MOZ_BUILD_DATE from the file './sourcestamp.txt'
+# which is set by Mozilla while creating the release.
+# This ensures we have a one-to-one date across the various package builds
+# within Debian for one upstream version. This is important for user which
+# are performing a dist-upgrade to a new release.
+export MOZ_BUILD_DATE := ${shell head -n1 $(CURDIR)/sourcestamp.txt}
+export MOZCONFIG=$(shell pwd)/mozconfig.thunderbird
+export MOZILLA_OFFICIAL=1
+export DEB_BUILD_GNU_TYPE
+export DEB_HOST_GNU_TYPE
+export DEB_BUILD_OPTIONS
+# Some Debian build tools clear out some variables
+export SHELL=/bin/bash
+# Work around https://github.com/rust-lang/cargo/issues/7147
+export CARGO_HOME=$(CURDIR)/debian/.cargo
+export MOZBUILD_STATE_PATH = $(CURDIR)/debian/.mozbuild
+export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
+
+%:
+ dh $@
+
+build:
+ dh $@
+
+override_dh_auto_clean:
+ dh_auto_clean --builddirectory=obj-thunderbird
+ find -type f -name "*.pyc" -exec rm {} \;
+ rm -rf third_party/python/psutil/tmp
+ rm -f old-configure js/src/configure js/src/old-configure mozconfig.*
+ # needed for thunderbird-l10n
+ rm -rf $(THUNDERBIRD_L10N_BUILDDIR)
+ rm -rf $(CARGO_HOME)
+ rm -rf $(MOZBUILD_STATE_PATH)
+
+override_dh_auto_configure:
+ # copy the mozconfig files in place
+ cp debian/mozconfig.* .
+ # Disable debug symbols when building on 32-bits machines, because
+ # a) the rust compiler can't deal with it in the available address
+ # space, and b) the linker can't deal with it in the available address
+ # space either.
+ifeq (32,$(DEB_BUILD_ARCH_BITS))
+ echo 'ac_add_options --disable-debug-symbols' >> mozconfig.default
+endif
+ echo 'mk_add_options MOZ_OBJDIR=$(CURDIR)/obj-thunderbird' >> mozconfig.thunderbird
+ echo 'ac_add_options --prefix=$(CURDIR)/debian/tmp/usr' >> mozconfig.default
+ # configure the various build settings for thunderbird
+ DIST= python3 ./mach -v configure
+
+# Ignore autoreconf, there is nothing that could be reconfigured. It's all
+# newly generated right before debhelper would call that target.
+override_dh_autoreconf:
+
+override_dh_auto_build:
+ # building the stuff
+ dh_auto_build --builddirectory=obj-thunderbird
+ # build thunderbird-l10n
+ mkdir -p $(THUNDERBIRD_L10N_BUILDDIR)
+ cd $(CURDIR)/thunderbird-l10n ;\
+ for XPI in *; do \
+ locale=`basename $${XPI}` ;\
+ USED_LANGPACK_ID=`grep langpack- $${XPI}/manifest.json | tr '"' ' ' | awk '{print $$3}' | cut -f2-3 -d @` ;\
+ if [ "$${USED_LANGPACK_ID}" != "$${MOZ_LANGPACK_ID}" ]; then \
+ echo "MOZ_LANGPACK_ID mismatch! '$${USED_LANGPACK_ID}' != '$${MOZ_LANGPACK_ID}'" ;\
+ echo "thunderbird-l10n l10n source '$${XPI}' uses a different MOZ_LANGPACK_ID than defined in $(CURDIR)/comm/mail/locales/Makefile.in!";\
+ exit 1 ;\
+ else \
+ $(CURDIR)/debian/xpi-pack.sh $${XPI} ../$(THUNDERBIRD_L10N_BUILDDIR)/langpack-$${locale}@$${MOZ_LANGPACK_ID}.xpi ;\
+ fi \
+ done
+
+override_dh_auto_install:
+ifneq (,$(filter mips,$(DEB_BUILD_ARCH)))
+ sed -i '/"javascript.options.\(baselinejit\|ion\)"/s/true/false/' obj-thunderbird/dist/bin/greprefs.js
+endif
+ # install thunderbird into temp install folder
+ python3 ./mach -v install
+ # install, symlinking thunderbird-l10n packages
+ cd $(CURDIR)/thunderbird-l10n ;\
+ for LANG in *; do \
+ locale=`basename $${LANG}` ;\
+ lowercase_locale=`echo $${locale} | tr 'A-Z' 'a-z'` ;\
+ echo "preparing and working on 'thunderbird-l10n-$${lowercase_locale} (langpack-$${locale}@$${MOZ_LANGPACK_ID}.xpi)" ;\
+ mkdir -p $(CURDIR)/debian/thunderbird-l10n-$${lowercase_locale}/usr/lib/thunderbird/extensions/ ;\
+ install -D -m 644 ../$(THUNDERBIRD_L10N_BUILDDIR)/langpack-$${locale}@$${MOZ_LANGPACK_ID}.xpi $(CURDIR)/debian/thunderbird-l10n-$${lowercase_locale}/usr/lib/thunderbird/extensions/langpack-$${locale}@$${MOZ_LANGPACK_ID}.xpi ;\
+ done
+ dh_bash-completion
+
+override_dh_install-arch:
+ dh_install
+ # apparmor profile installed by dh_install
+ dh_apparmor --profile-name=usr.bin.thunderbird -pthunderbird
+
+override_dh_install-indep:
+ dh_install
+ # remove executable rights on *.js, *.png, *.xul files
+ find debian/thunderbird-l10n*/ -type f \( -name "*.dtd" -o -name "*.js" -o -name "*.png" -o -name "*.properties" -o -name "*.xul" \) -exec chmod 644 {} \;
+
+override_dh_strip:
+ if [ "$(RELEASE)" != "UNRELEASED" ]; then \
+ dh_strip --automatic-dbgsym ;\
+ else \
+ dh_strip --no-automatic-dbgsym ;\
+ fi
+
+override_dh_shlibdeps:
+ dh_shlibdeps -a -l $(CURDIR)/debian/tmp/usr/lib/thunderbird -- -xlibgtk2.0-0
+
+override_dh_builddeb:
+ # just build all packages if there is no 'UNRELEASED' within the changelog
+ # found, otherwise skip the thunderbird-dbgsym package, it isn't there
+ if [ "$(RELEASE)" != "UNRELEASED" ]; then \
+ dh_builddeb ;\
+ else \
+ dh_builddeb -pthunderbird ;\
+ dh_builddeb -plightning ;\
+ for package in `grep -e \
+ 'Package: thunderbird-l10n\|Package: lightning-l10n' debian/control | awk '{print $$2;}'`; do \
+ dh_builddeb -p$$package ;\
+ done ;\
+ sed -i '/thunderbird-dbgsym/d' debian/files ;\
+ fi
+
+override_dh_missing:
+ dh_missing \
+ -X usr/bin/thunderbird \
+ -X usr/lib/thunderbird/crashreporter \
+ -X usr/lib/thunderbird/glxtest \
+ -X usr/lib/thunderbird/minidump-analyzer \
+ -X usr/lib/thunderbird/pingsender \
+ -X usr/lib/thunderbird/Throbber-small.gif \
+ -X usr/lib/thunderbird/vaapitest \
+ $(NULL)
+
+override_dh_dwz:
+ # Don't use dwz for now, it fails with:
+ # dwz: debian/thunderbird/usr/lib/thunderbird/libldap60.so: Found compressed .debug_info section, not attempting dwz compression
+ # dwz: debian/thunderbird/usr/lib/thunderbird/libldif60.so: Found compressed .debug_info section, not attempting dwz compression
+ # ...
+ # dwz: debian/thunderbird/usr/lib/thunderbird/thunderbird-bin: Found compressed .debug_info section, not attempting dwz compression
+ # dwz: Too few files for multifile optimization
+
+.PHONY: build