Workaround for cut backtrace output lines
This is enabled by default in Trixie (since dh-elpa 2.1.3).
For Bookworm and older releases, ERT cuts backtrace output lines at 70 characters by default. This can be configured:
d/elpa-test:
ert_eval = (setq ert-batch-backtrace-right-margin 500)
The documentation of this variable says:
- Maximum length of lines in ERT backtraces in batch mode. Use nil for no limit (caution: backtrace lines can be very long).
When an upstream assumes existence of machinery to inject correct version
This approach avoids the pitfall of forgetting to update a patch or debian-autoloads.el file, and additionally ensures that the source package can build twice without "unrepresented upstream changes to the source" debian/rules:
include /usr/share/dpkg/pkg-info.mk
export DEB_VERSION_UPSTREAM
…
override_dh_elpa:
sed -i "s/0.1/$(DEB_VERSION_UPSTREAM)/" foo.el
dh_elpa
sed -i "s/$(DEB_VERSION_UPSTREAM)/0.1/" foo.el
Exclude ERT tests
Since Trixie (dh-elpa 2.1.6), you can use ert_selectors directly in debian/elpa-test. For example:
ert_selectors = '(not (or "test1" "test2"))
The value is an ERT test selector without quote. Note that the value must be written in one line (no line continuation) due to the Perl config parser limitation.
For finer control, you can use the following (used in package lsp-mode where upstream also excludes some tests in their Makefile).
d/elpa-test:
ert_helper = debian/ert-helper.el
d/ert-helper.el:
See:
When a package test suite wants to write to $HOME
d/elpa-test:
ert_eval = (setq user-emacs-directory (make-temp-file "foo-test" 'dir-flag))
Rebuild all elpa-* packages in unstable against new Emacs in experimental
aptitude search "~Aunstable~n^elpa-" -F"%e" | while read p; do sbuild --extra-repository='deb http://deb.debian.org/debian experimental main' --build-dep-resolver=aspcud --add-depends="emacs (>= 1:26)" --add-depends="emacs-common (>= 1:26)" --add-depends="emacs-bin-common (>= 1:26)" --add-depends="emacs-nox (>= 1:26)" "$p"; done
You can then run autopkgtest on all the changes files (untested!):
for f in *.changes; do autopkgtest --setup-commands="echo >>/etc/apt/sources.list deb http://deb.debian.org/debian experimental main" --setup-commands="apt-get update" --setup-commands="apt-get install emacs/experimental" "$f" -l "$f.autopkgtest.log"; done
Some files change during building breaking build-twice-in-a-row
For example, some addons ship both doc/doc.org and doc/doc.texi to make distribution from ELPA/MELPA easier; however, the doc/doc.texi file may get regenerated when building in Debian because the build environment is usually different from upstream. (Note that the build-twice-in-a-row check is not enforce yet, but it is good to fix.)
An easy way to avoid this is to list the source files getting changed in extend-diff-ignore in debian/source/options (note it's actually a ?RegExp).
debian/source/options
extend-diff-ignore = "(^|/)(doc/doc\.texi)$"
