diff options
author | David Bremner <bremner@debian.org> | 2019-09-02 12:06:46 -0300 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2019-09-02 12:06:46 -0300 |
commit | f37b03503507f3b0c57247c61d2c4c803be09c66 (patch) | |
tree | bf7721979749a82d8b4c934113dc54492610ec92 | |
parent | 5cf31bfea2c7567939ddc65db23188942e7521e6 (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/changelog | 8 | ||||
-rw-r--r-- | debian/control | 8 | ||||
-rw-r--r-- | debian/dh-elpa-helper.install | 1 | ||||
-rwxr-xr-x | dh_elpa.in | 1 | ||||
-rwxr-xr-x | emacsen-common/install | 53 | ||||
-rwxr-xr-x | emacsen-common/remove | 37 | ||||
-rw-r--r-- | helper/install | 64 | ||||
-rw-r--r-- | helper/remove | 47 |
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 @@ -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; |