summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <bremner@debian.org>2019-09-02 12:06:46 -0300
committerDavid Bremner <bremner@debian.org>2019-09-02 12:06:46 -0300
commitf37b03503507f3b0c57247c61d2c4c803be09c66 (patch)
treebf7721979749a82d8b4c934113dc54492610ec92
parent5cf31bfea2c7567939ddc65db23188942e7521e6 (diff)
initial attempt at moving maint scripts into helper package
This commit is a bit bug, but at least it is atomic.
-rw-r--r--debian/changelog8
-rw-r--r--debian/control8
-rw-r--r--debian/dh-elpa-helper.install1
-rwxr-xr-xdh_elpa.in1
-rwxr-xr-xemacsen-common/install53
-rwxr-xr-xemacsen-common/remove37
-rw-r--r--helper/install64
-rw-r--r--helper/remove47
8 files changed, 134 insertions, 85 deletions
diff --git a/debian/changelog b/debian/changelog
index 97583bf..02c3834 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+dh-elpa (2.0) experimental; urgency=medium
+
+ * move bulk of maintainer scripts to a helper package that can be updated (Closes: #935766).
+ * add binary package dh-elpa-helper
+ * add dependency on dh-elpa-helper packages built with dh_elpa
+
+ -- David Bremner <bremner@debian.org> Mon, 02 Sep 2019 12:06:06 -0300
+
dh-elpa (1.16) unstable; urgency=high
* unset HOME in the generated maintainer scripts.
diff --git a/debian/control b/debian/control
index b7d1a46..e6517f9 100644
--- a/debian/control
+++ b/debian/control
@@ -28,3 +28,11 @@ Depends:
Description: Debian helper tools for packaging emacs lisp extensions
This package provides a helper for packaging emacs lisp extensions
in a way compatible with the GNU Emacs 'elpa' package repository.
+
+Package: dh-elpa-helper
+Architecture: all
+Depends: ${misc:Depends}
+Description:
+ This package provides the helper scripts needed by packages built
+ with dh-elpa (>= 2.0). This allows dh-elpa using binary packages to
+ receive bug fixes without rebuilding.
diff --git a/debian/dh-elpa-helper.install b/debian/dh-elpa-helper.install
new file mode 100644
index 0000000..a07474e
--- /dev/null
+++ b/debian/dh-elpa-helper.install
@@ -0,0 +1 @@
+helper usr/lib/dh-elpa
diff --git a/dh_elpa.in b/dh_elpa.in
index 7b960d2..11cbfc9 100755
--- a/dh_elpa.in
+++ b/dh_elpa.in
@@ -333,6 +333,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
if ($dh{BYTECOMPILE}) {
addsubstvar($package, 'misc:Depends', 'emacsen-common');
+ addsubstvar($package, 'misc:Depends', 'dh-elpa-helper');
maybe_install_helper($package, 'compat', '0644', $desc, $emacs_loadpath);
maybe_install_helper($package, 'install', '0755', $desc, $emacs_loadpath);
maybe_install_helper($package, 'remove', '0755', $desc, $emacs_loadpath);
diff --git a/emacsen-common/install b/emacsen-common/install
index a762adc..7f99ad6 100755
--- a/emacsen-common/install
+++ b/emacsen-common/install
@@ -1,55 +1,6 @@
#!/bin/sh
-# /usr/lib/emacsen-common/packages/install/${PACKAGE}
+# invoke from /usr/lib/emacsen-common/packages/install/${PACKAGE}
set -e
-unset HOME
-
-ELPA_DIR=#ELPAPACKAGE#-#ELPAVERSION#
-
-FLAVOR=$1
-case $FLAVOR in
- emacs2[0123]*)
- echo install/${ELPA_DIR}: Skipping obsolete emacs ${FLAVOR}
- exit 0
- ;;
- xemacs*)
- echo install/${ELPA_DIR}: Skipping unsupported emacs ${FLAVOR}
- exit 0
- ;;
- *)
- echo install/${ELPA_DIR}: Handling install of emacsen flavor ${FLAVOR}
-esac
-
-src_dir=/usr/share/emacs/site-lisp/elpa-src
-el_dir=$src_dir/${ELPA_DIR}/
-elc_dir=/usr/share/${FLAVOR}/site-lisp/elpa/${ELPA_DIR}/
-
-export EMACSLOADPATH
-EMACSLOADPATH="#EMACSLOADPATH#"
-
-echo install/${ELPA_DIR}: byte-compiling for ${FLAVOR}
-
-[ -d ${elc_dir} ] || mkdir -p ${elc_dir}
-
-# Create symlinks to the .el files (see section 6E in debian-emacs
-# polcy). 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}/* .)
-
-# Byte compile them
-(cd ${elc_dir}
- set +e
- ${FLAVOR} --quick --batch -l package \
- --eval "(add-to-list 'package-directory-list \"$src_dir\")" \
- -f package-initialize -f batch-byte-compile *.el > Install.log 2>&1
- if test $? -ne 0
- then
- cat Install.log
- exit 1
- fi
- set -e
- gzip -9f Install.log)
-
-exit 0;
+/usr/lib/dh-elpa/helper/install $1 #ELPAPACKAGE# #ELPAVERSION# #EMACSLOADPATH#
diff --git a/emacsen-common/remove b/emacsen-common/remove
index b03204a..5d1d6af 100755
--- a/emacsen-common/remove
+++ b/emacsen-common/remove
@@ -1,37 +1,6 @@
#!/bin/sh
-# /usr/lib/emacsen-common/packages/remove/foo
-set -e
-
-unset HOME
-
-ELPA_DIR=#ELPAPACKAGE#-#ELPAVERSION#
+# invoke from /usr/lib/emacsen-common/packages/remove/${PACKAGE}
-FLAVOR=$1
-elpa_root="/usr/share/${FLAVOR}/site-lisp/elpa"
-elc_dir="${elpa_root}/${ELPA_DIR}"
-
-FLAVOR=$1
-case $FLAVOR in
- emacs2[0123]*)
- echo remove/${ELPA_DIR}: Skipping obsolete emacs ${FLAVOR}
- exit 0
- ;;
- xemacs*)
- echo remove/${ELPA_DIR}: Skipping unsupported emacs ${FLAVOR}
- exit 0
- ;;
- *)
- echo remove/${ELPA_DIR}: Handling removal of emacsen flavor ${FLAVOR}
-esac
-
-echo dh-elpa: purging flavor specific files for ${FLAVOR}
-rm -f ${elc_dir}/*.elc
-[ -d ${elc_dir} ] && find ${elc_dir} -type l -delete
-rm -f ${elc_dir}/Install.log*
-if test -e "${elc_dir}"
-then
- rmdir --ignore-fail-on-non-empty "${elc_dir}"
- rmdir --ignore-fail-on-non-empty "${elpa_root}"
-fi
+set -e
-exit 0;
+/usr/lib/dh-elpa/helper/remove $1 #ELPAPACKAGE# #ELPAVERSION# #EMACSLOADPATH#
diff --git a/helper/install b/helper/install
new file mode 100644
index 0000000..622cbc7
--- /dev/null
+++ b/helper/install
@@ -0,0 +1,64 @@
+#!/bin/sh
+# invoke as /usr/lib/dh-elpa/helper/install flavor elpa_package elpa_version elpa_load_path
+
+set -e
+
+# safe values for important variables
+
+unset HOME
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+# grab parameters
+
+FLAVOR=$1
+ELPA_PACKAGE=$2
+ELPA_VERSION=$3
+ELPA_LOADPATH=$4
+
+ELPA_DIR=${ELPA_PACKAGE}-${ELPA_VERSION}
+
+case $FLAVOR in
+ emacs2[01234]*)
+ echo install/${ELPA_DIR}: Skipping obsolete emacs ${FLAVOR}
+ exit 0
+ ;;
+ xemacs*)
+ echo install/${ELPA_DIR}: Skipping unsupported emacs ${FLAVOR}
+ exit 0
+ ;;
+ *)
+ echo install/${ELPA_DIR}: Handling install of emacsen flavor ${FLAVOR}
+esac
+
+src_dir=/usr/share/emacs/site-lisp/elpa-src
+el_dir=$src_dir/${ELPA_DIR}/
+elc_dir=/usr/share/${FLAVOR}/site-lisp/elpa/${ELPA_DIR}/
+
+export EMACSLOADPATH
+EMACSLOADPATH=${ELPA_LOAD_PATH}
+
+echo install/${ELPA_DIR}: byte-compiling for ${FLAVOR}
+
+[ -d ${elc_dir} ] || mkdir -p ${elc_dir}
+
+# Create symlinks to the .el files (see section 6E in debian-emacs
+# 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}/* .)
+
+# Byte compile them
+(cd ${elc_dir}
+ set +e
+ ${FLAVOR} --quick --batch -l package \
+ --eval "(add-to-list 'package-directory-list \"$src_dir\")" \
+ -f package-initialize -f batch-byte-compile *.el > Install.log 2>&1
+ if test $? -ne 0
+ then
+ cat Install.log
+ exit 1
+ fi
+ set -e
+ gzip -9f Install.log)
+
+exit 0;
diff --git a/helper/remove b/helper/remove
new file mode 100644
index 0000000..9a980e9
--- /dev/null
+++ b/helper/remove
@@ -0,0 +1,47 @@
+#!/bin/sh
+#!/bin/sh
+# invoke as /usr/lib/dh-elpa/helper/remove flavor elpa_package elpa_version
+
+set -e
+
+# safe values for important variables
+
+unset HOME
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+# grab parameters
+
+FLAVOR=$1
+ELPA_PACKAGE=$2
+ELPA_VERSION=$3
+
+ELPA_DIR=${ELPA_PACKAGE}-${ELPA_VERSION}
+
+elpa_root="/usr/share/${FLAVOR}/site-lisp/elpa"
+elc_dir="${elpa_root}/${ELPA_DIR}"
+
+FLAVOR=$1
+case $FLAVOR in
+ emacs2[01234]*)
+ echo remove/${ELPA_DIR}: Skipping obsolete emacs ${FLAVOR}
+ exit 0
+ ;;
+ xemacs*)
+ echo remove/${ELPA_DIR}: Skipping unsupported emacs ${FLAVOR}
+ exit 0
+ ;;
+ *)
+ echo remove/${ELPA_DIR}: Handling removal of emacsen flavor ${FLAVOR}
+esac
+
+echo dh-elpa: purging flavor specific files for ${FLAVOR}
+rm -f ${elc_dir}/*.elc
+[ -d ${elc_dir} ] && find ${elc_dir} -type l -delete
+rm -f ${elc_dir}/Install.log*
+if test -e "${elc_dir}"
+then
+ rmdir --ignore-fail-on-non-empty "${elc_dir}"
+ rmdir --ignore-fail-on-non-empty "${elpa_root}"
+fi
+
+exit 0;