diff options
-rw-r--r-- | debian/changelog | 64 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | debian/copyright | 6 | ||||
-rwxr-xr-x | debian/tests/build-deb | 13 | ||||
-rw-r--r-- | debian/tests/control | 4 | ||||
-rw-r--r-- | debian/tests/elpa-test/all.el | 203 | ||||
-rw-r--r-- | debian/tests/elpa-test/debian/changelog | 5 | ||||
-rw-r--r-- | debian/tests/elpa-test/debian/control | 31 | ||||
-rw-r--r-- | debian/tests/elpa-test/debian/copyright | 27 | ||||
-rw-r--r-- | debian/tests/elpa-test/debian/elpa | 1 | ||||
-rwxr-xr-x | debian/tests/elpa-test/debian/rules | 4 | ||||
-rw-r--r-- | debian/tests/elpa-test/debian/source/format | 1 | ||||
-rw-r--r-- | dh-elpa.el | 7 | ||||
-rwxr-xr-x | dh_elpa | 16 | ||||
-rwxr-xr-x | dh_elpa_test | 24 | ||||
-rwxr-xr-x | helper/install | 7 | ||||
-rwxr-xr-x | helper/remove | 5 |
17 files changed, 410 insertions, 10 deletions
diff --git a/debian/changelog b/debian/changelog index b94a950..8790187 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,68 @@ -dh-elpa (2.0.10) UNRELEASED; urgency=medium +dh-elpa (2.0.17) unstable; urgency=medium + + * Bug fix: "Ugly // in symlinks", thanks to Sven Joachim (Closes: + #1030560). + + -- David Bremner <bremner@debian.org> Sun, 23 Jul 2023 07:10:38 -0300 + +dh-elpa (2.0.16) unstable; urgency=medium + + * Drop dependencies on emacs-el introduced in 2.0.11. + Emacs itself now has this dependency. It's required for native-comp. + * install/remove: Export EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION=t. + This is likely temporary, pending updates to emacsen-common. + + * dh_elpa_test: Revert changes in 2.0.12, 2.0.13 and 2.0.14. + * dh_elpa_test: Export EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION=t. + Unconditionally prevent native comp writing to HOME while running tests. + * dh_elpa_test: Replace use of smartmatch operator. + It is expected that Perl upstream will soon deprecate the operator. + + * Add license & copyright headers to dh_elpa{,_test}. + * Tighten dependency on emacs-nox|emacs to require >= 1:28.2+1-9. + + -- Sean Whitton <spwhitton@spwhitton.name> Fri, 23 Dec 2022 11:49:04 -0700 + +dh-elpa (2.0.15) unstable; urgency=medium + + * Add elpa-org to the list of packages that are built-in but also + packaged separately in Debian. + Thanks to Aymeric Agon-Rambosson for reporting the issue. + + -- Sean Whitton <spwhitton@spwhitton.name> Tue, 08 Nov 2022 12:19:46 -0700 + +dh-elpa (2.0.14) unstable; urgency=medium + + * Per Eli Z. suggestion, try native-comp-eln-load-path to limit reading + and writing of eln during dh_elpa_test. + + -- David Bremner <bremner@debian.org> Sun, 02 Oct 2022 09:18:37 -0300 + +dh-elpa (2.0.13) unstable; urgency=medium + + * Disable native code when running ERT tests + + -- David Bremner <bremner@debian.org> Fri, 30 Sep 2022 07:04:56 -0300 + +dh-elpa (2.0.12) unstable; urgency=medium + + * Set temporary native code cached directory when running (ERT) tests. + + -- David Bremner <bremner@debian.org> Sun, 25 Sep 2022 08:15:00 -0300 + +dh-elpa (2.0.11) unstable; urgency=medium + + * Depend (temporarily?) on emacs-el as workaround for #1017698 + + -- David Bremner <bremner@debian.org> Thu, 25 Aug 2022 08:38:18 -0700 + +dh-elpa (2.0.10) unstable; urgency=medium * Update dh_elpa_test documentation + * Bug fix: "Adding a basic autopkgtest", thanks to Lukas Märdian + (Closes: #1001452). - -- David Bremner <bremner@debian.org> Fri, 24 Sep 2021 10:14:54 -0300 + -- David Bremner <bremner@debian.org> Thu, 16 Dec 2021 12:48:45 -0400 dh-elpa (2.0.9) unstable; urgency=medium diff --git a/debian/control b/debian/control index 63391e0..ef45d59 100644 --- a/debian/control +++ b/debian/control @@ -19,7 +19,7 @@ Multi-Arch: foreign Depends: debhelper (>= 9.20151004), libdebian-source-perl | dh-make-perl (>= 0.90), - emacs-nox (>= 47) | emacs (>= 47.0), + emacs-nox (>= 1:28.2+1-9) | emacs (>= 1:28.2+1-9), libarray-utils-perl, libconfig-tiny-perl, libfile-find-rule-perl, diff --git a/debian/copyright b/debian/copyright index af76dd9..ed80c0e 100644 --- a/debian/copyright +++ b/debian/copyright @@ -5,6 +5,12 @@ Copyright: © 2007-2015 Free Software Foundation Inc, © 2015 David Bremner <bremner@debian.org> © 2016 Sean Whitton <spwhitton@spwhitton.name> License: GPL-3+ + +Files: debian/tests/elpa-test/all.el +Copyright: © 1985-2020 Free Software Foundation, Inc. +License: GPL-3+ + +License: GPL-3+ dh-elpa is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or diff --git a/debian/tests/build-deb b/debian/tests/build-deb new file mode 100755 index 0000000..f79a43b --- /dev/null +++ b/debian/tests/build-deb @@ -0,0 +1,13 @@ +#!/bin/sh +# +# Build an elpa package according to: +# https://wiki.debian.org/Teams/DebianEmacsenTeam/elpa-hello +# +set -eu + +cd debian/tests/elpa-test +# Create a dummy .orig.tar.gz +tar czvf ../elpa-test_1.0.orig.tar.gz all.el +dpkg-buildpackage +# Make sure the ${elpa:Depends} were picked up +dpkg-deb --info ../elpa-all_1.0-1_all.deb | grep Depends | grep dh-elpa-helper diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..42018db --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,4 @@ +Tests: build-deb +Restrictions: allow-stderr +Depends: @, build-essential, dpkg, dpkg-dev, emacs-nox + diff --git a/debian/tests/elpa-test/all.el b/debian/tests/elpa-test/all.el new file mode 100644 index 0000000..79dcea5 --- /dev/null +++ b/debian/tests/elpa-test/all.el @@ -0,0 +1,203 @@ +;;; all.el --- Edit all lines matching a given regexp -*- lexical-binding: t; -*- + +;; Copyright (C) 1985-2020 Free Software Foundation, Inc. + +;; Author: Per Abrahamsen <per.abrahamsen@gmail.com> +;; Version: 1.0 +;; Keywords: matching + +;; LCD Archive Entry: +;; all|Per Abrahamsen|abraham@dina.kvl.dk| +;; Edit all lines matching a given regexp| +;; $Date: 1997/03/04 10:29:42 $|$Revision: 5.2 $|~/misc/all.Z| + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Just like occur, except that changes in the *All* buffer are +;; propagated to the original buffer. + +;; You can no longer use mouse-2 to find a match in the original file, +;; since the default definition of mouse is too useful. +;; However, `C-c C-c' still works. + +;; Line numbers are not listed in the *All* buffer. + +;; Ok, it is _not_ just like occur. + +;; Some limitations: + +;; - Undo in the *All* buffer is an ordinary change in the original. +;; - Changes to the original buffer are not reflected in the *All* buffer. +;; - A single change in the *All* buffer must be limited to a single match. + +;;; Code: + +(defvar all-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c\C-c" #'all-mode-goto) + map)) + +(defvar all-buffer nil) +(make-variable-buffer-local 'all-buffer) + +(define-derived-mode all-mode fundamental-mode "All" + "Major mode for output from \\[all]. + +All changes made in this buffer will be propagated to the buffer where +you ran \\[all]. + +Press \\[all-mode-goto] to go to the same spot in the original buffer." + (add-hook 'before-change-functions #'all-before-change-function nil 'local) + (add-hook 'after-change-functions #'all-after-change-function nil 'local)) + +(defun all-mode-find (pos) + ;; Find position in original buffer corresponding to POS. + (let ((overlay (all-mode-find-overlay pos))) + (if overlay + (+ (marker-position (overlay-get overlay 'all-marker)) + (- pos (overlay-start overlay)))))) + +(defun all-mode-find-overlay (pos) + ;; Find the overlay containing POS. + (let ((overlays (overlays-at pos))) + (while (and overlays (null (overlay-get (car overlays) 'all-marker))) + (setq overlays (cdr overlays))) + (car-safe overlays))) + +(defun all-mode-goto () + "Move point to the corresponding position in the original buffer." + (interactive) + (let ((pos (all-mode-find (point)))) + (if pos + (pop-to-buffer all-buffer) + (error "This text is not from the original buffer")) + (goto-char pos))) + +(defvar all-initialization-p nil) + +(defun all-before-change-function (from to) + ;; Check that change is legal. + (and all-buffer + (not all-initialization-p) + (let ((start (all-mode-find-overlay from)) + (end (all-mode-find-overlay to))) + (not (and start (eq start end)))) + (error "Changes should be limited to a single text piece"))) + +(defun all-after-change-function (from to length) + ;; Propagate changes from *All* buffer. + (and all-buffer + (null all-initialization-p) + (let ((buffer (current-buffer)) + (pos (all-mode-find from))) + (if pos + (with-current-buffer all-buffer + (save-excursion + (goto-char pos) + (delete-region pos (+ pos length)) + (insert-buffer-substring buffer from to))))))) + +;;;###autoload +(defun all (regexp &optional nlines) + "Show all lines in the current buffer containing a match for REGEXP. + +If a match spreads across multiple lines, all those lines are shown. + +Each line is displayed with NLINES lines before and after, or -NLINES +before if NLINES is negative. +NLINES defaults to `list-matching-lines-default-context-lines'. +Interactively it is the prefix arg. + +The lines are shown in a buffer named `*All*'. +Any changes made in that buffer will be propagated to this buffer." + (interactive + (list (let* ((default (car regexp-history))) + (read-regexp + (if default + (format + "Edit lines matching regexp (default `%s'): " default) + "Edit lines matching regexp: ") + default)) + current-prefix-arg)) + (setq nlines (if nlines (prefix-numeric-value nlines) + list-matching-lines-default-context-lines)) + (let ((all-initialization-p t) + (buffer (current-buffer)) + (prevend nil) + (prevstart nil) + (prevpos (point-min))) + (with-output-to-temp-buffer "*All*" + (with-current-buffer standard-output + (all-mode) + (setq all-buffer buffer) + (insert "Lines matching ") + (prin1 regexp) + (insert " in buffer " (buffer-name buffer) ?. ?\n) + (insert "--------\n")) + (if (eq buffer standard-output) + (goto-char (point-max))) + (save-excursion + (goto-char (point-min)) + ;; Find next match, but give up if prev match was at end of buffer. + (while (and (not (= prevpos (point-max))) + (re-search-forward regexp nil t)) + (goto-char (match-beginning 0)) + (beginning-of-line) + (setq prevpos (point)) + (goto-char (match-end 0)) + (let* ((start (save-excursion + (goto-char (match-beginning 0)) + (forward-line (if (< nlines 0) nlines (- nlines))) + (point))) + (end (save-excursion + (goto-char (match-end 0)) + (if (> nlines 0) + (forward-line (1+ nlines)) + (forward-line 1)) + (point)))) + (cond ((null prevend) + (setq prevstart start + prevend end)) + ((> start prevend) + (all-insert prevstart prevend regexp nlines) + (setq prevstart start + prevend end)) + (t + (setq prevend end))))) + (if prevend + (all-insert prevstart prevend regexp nlines)))))) + +(defun all-insert (start end regexp nlines) + ;; Insert match. + (let ((marker (copy-marker start)) + (buffer (current-buffer))) + (with-current-buffer standard-output + (let ((from (point)) + to) + (insert-buffer-substring buffer start end) + (setq to (point)) + (overlay-put (make-overlay from to) 'all-marker marker) + (goto-char from) + (while (re-search-forward regexp to t) + (put-text-property (match-beginning 0) (match-end 0) + 'face 'match)) + (goto-char to) + (if (> nlines 0) + (insert "--------\n")))))) + +(provide 'all) + +;;; all.el ends here diff --git a/debian/tests/elpa-test/debian/changelog b/debian/tests/elpa-test/debian/changelog new file mode 100644 index 0000000..d2228f3 --- /dev/null +++ b/debian/tests/elpa-test/debian/changelog @@ -0,0 +1,5 @@ +elpa-test (1.0-1) unstable; urgency=medium + + * Initial release. + + -- Lukas Märdian <slyon@ubuntu.com> Tue, 7 Dec 2021 12:05:48 +0100 diff --git a/debian/tests/elpa-test/debian/control b/debian/tests/elpa-test/debian/control new file mode 100644 index 0000000..d0455f3 --- /dev/null +++ b/debian/tests/elpa-test/debian/control @@ -0,0 +1,31 @@ +Source: elpa-test +Section: editors +Priority: optional +Maintainer: Lukas Märdian <slyon@ubuntu.com> +Build-Depends: debhelper-compat (= 13), + dh-elpa +Standards-Version: 4.5.1 +Rules-Requires-Root: no + +Package: elpa-all +Architecture: all +Depends: ${elpa:Depends}, ${misc:Depends} +Recommends: emacs (>= 46.0) +Enhances: emacs +Description: Edit all lines matching a given regexp + Just like occur, except that changes in the *All* buffer are + propagated to the original buffer. + . + You can no longer use mouse-2 to find a match in the original file, + since the default definition of mouse is too useful. + However, `C-c C-c' still works. + . + Line numbers are not listed in the *All* buffer. + . + Ok, it is _not_ just like occur. + . + Some limitations: + . + - Undo in the *All* buffer is an ordinary change in the original. + - Changes to the original buffer are not reflected in the *All* buffer. + - A single change in the *All* buffer must be limited to a single match. diff --git a/debian/tests/elpa-test/debian/copyright b/debian/tests/elpa-test/debian/copyright new file mode 100644 index 0000000..373f3d9 --- /dev/null +++ b/debian/tests/elpa-test/debian/copyright @@ -0,0 +1,27 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: elpa-test + +Files: * +Copyright: (C) 1985-2020 Free Software Foundation, Inc. +License: GPL-3+ + +Files: debian/* +Copyright: (C) 2021 Lukas Märdian <slyon@ubuntu.com> +License: GPL-3+ + +License: GPL-3+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in `/usr/share/common-licenses/GPL-3' diff --git a/debian/tests/elpa-test/debian/elpa b/debian/tests/elpa-test/debian/elpa new file mode 100644 index 0000000..abf136d --- /dev/null +++ b/debian/tests/elpa-test/debian/elpa @@ -0,0 +1 @@ +*.el diff --git a/debian/tests/elpa-test/debian/rules b/debian/tests/elpa-test/debian/rules new file mode 100755 index 0000000..e8e22ba --- /dev/null +++ b/debian/tests/elpa-test/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ --with elpa diff --git a/debian/tests/elpa-test/debian/source/format b/debian/tests/elpa-test/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/tests/elpa-test/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) @@ -183,9 +183,10 @@ These are packaged separately for two reasons: - it permits use of addons with older versions of Emacs, for which the dependency is not yet a built-in package." - (let ((non-elpa (list 'emacs)) - (packaged-separately (list 'let-alist 'seq 'xref 'project))) - (cl-remove-if (lambda (dep) (let ((pkg (car dep))) + (let ((non-elpa '(emacs)) + (packaged-separately '(let-alist seq xref org project))) + (cl-remove-if (lambda (dep) + (let ((pkg (car dep))) (or (memq pkg non-elpa) (and (package-built-in-p pkg) @@ -1,5 +1,21 @@ #!/usr/bin/perl +# Copyright (C) 2015, 2018 David Bremner <bremner@debian.org> +# Copyright (C) 2016, 2018 Sean Whitton <spwhitton@spwhitton.name> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + =head1 NAME dh_elpa - install emacs lisp packages into package build directories diff --git a/dh_elpa_test b/dh_elpa_test index 206ae46..c2504bf 100755 --- a/dh_elpa_test +++ b/dh_elpa_test @@ -1,5 +1,21 @@ #!/usr/bin/perl +# Copyright (C) 2016, 2017 Sean Whitton <spwhitton@spwhitton.name> +# Copyright (C) 2021 David Bremner <bremner@debian.org> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + =head1 NAME dh_elpa_test - run ELPA package testsuites @@ -8,7 +24,6 @@ dh_elpa_test - run ELPA package testsuites use strict; use warnings; -no warnings "experimental::smartmatch"; =head1 SYNOPSIS @@ -157,7 +172,7 @@ B<disable> key in B<debian/elpa-test>. Note that the latter will also =head2 ENABLING AUTOPKGTESTS To enable running autopkgtests via B<dh_elpa_test>, add "Testsuite: -autpkgtest-pkg-elpa" to B<debian/rules>. With B<disable> in +autpkgtest-pkg-elpa" to B<debian/control>. With B<disable> in B<debian/elpa-test>, only B<superficial> tests, namely installing the binary packages and byte-compiling any that use B<dh_elpa>. @@ -177,6 +192,9 @@ use Config::Tiny; use Debian::Debhelper::Dh_Lib; use Debian::Control; +# avoid writes to HOME +$ENV{EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION} = "t"; + # ---- Subroutines # like Find::File::Rule::name, but matches the whole path of the file @@ -200,7 +218,7 @@ sub long_name { # ---- Script setup # check command line opts for autopkgtest mode -my $autopkgtest = ( "--autopkgtest" ~~ @ARGV ); +my $autopkgtest = grep $_ eq "--autopkgtest", @ARGV; # This checks whether the debhelper compat is 10 or above. With # debhelper compat below 9, dh_elpa_test will get run more in more diff --git a/helper/install b/helper/install index 79a9adb..c0679bb 100755 --- a/helper/install +++ b/helper/install @@ -3,6 +3,11 @@ set -e +# Avoid writes to HOME. +# This should probably move into bin:emacsen-common. +EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION=t +export EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION + # safe values for important variables unset HOME @@ -45,7 +50,7 @@ echo install/${ELPA_DIR}: byte-compiling for ${FLAVOR} # policy). This makes complation easy, and also allows find-function # and find-library to work properly. Also link all other top level # files and directories into the flavor directory -(cd ${elc_dir} && ln -sf ${el_dir}/* .) +(cd ${elc_dir} && ln -sf ${el_dir}* .) # Byte compile them (cd ${elc_dir} diff --git a/helper/remove b/helper/remove index 9a980e9..3182eeb 100755 --- a/helper/remove +++ b/helper/remove @@ -4,6 +4,11 @@ set -e +# Avoid writes to HOME. +# This should probably move into bin:emacsen-common. +EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION=t +export EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION + # safe values for important variables unset HOME |