Package: dh-elpa
Version: 2.0.17
Severity: wishlist

Hi,

Currently dh-elpa installs all *.el files directly under the root of
ELPA installation directory.  This handles most ELPA packages without
issues, though there are some packages that starts to use nested
directory structures, e.g. auctex[1].

Therefore I'd like to propose to add nested directory support in
dh-elpa.  I have a draft implementation that adds support for
recursively create symlink in subdirectories as well as recursive
byte-compiling.  You can check it out in my salsa repo[2], and the
patches are also attached.  I have tested with the work-in-progress
auctex which seems to work, but it would be good to know whether there
are any aspects that I missed from the dh-elpa handling.

Any comments are welcome.

[1] When installing elpa.gnu.org auctex will have a nested `style/'
directory, though for the auctex packaged in Debian has not been
elpafied (which I'm trying to experiment in
https://bugs.debian.org/1056939)

[2] 
https://salsa.debian.org/manphiz/dh-elpa/-/tree/nested-directory-support?ref_type=heads

-- System Information:
Debian Release: 12.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-20-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages dh-elpa depends on:
ii  debhelper               13.11.4
ii  emacs                   1:29.3+1-2~bpo12+0manphiz1
ii  emacs-gtk [emacs]       1:29.3+1-2~bpo12+0manphiz1
ii  libarray-utils-perl     0.5-3
ii  libconfig-tiny-perl     2.28-2
ii  libdebian-source-perl   0.122
ii  libdpkg-perl            1.21.22
ii  libfile-find-rule-perl  0.34-3
ii  libtext-glob-perl       0.11-3
ii  perl                    5.36.0-7+deb12u1

dh-elpa recommends no packages.

dh-elpa suggests no packages.

-- no debconf information
>From 2df1f0d70c62e322618e7ed64515b33566c2f5f2 Mon Sep 17 00:00:00 2001
From: Xiyue Deng <manp...@gmail.com>
Date: Mon, 15 Apr 2024 13:03:16 -0700
Subject: [PATCH 1/3] Byte compile recursively during install to handle nested
 directories

* This handles addons that have source files under nested directories
in ELPA install directories.
---
 helper/install | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/helper/install b/helper/install
index 39db695..eb68ef5 100755
--- a/helper/install
+++ b/helper/install
@@ -58,7 +58,8 @@ echo "install/${ELPA_DIR}: byte-compiling for ${FLAVOR}"
  ${FLAVOR} --quick --batch -l package \
            --eval "(setq package-user-dir \"/nonexistent\")" \
            --eval "(add-to-list 'package-directory-list \"$src_dir\")" \
-           -f package-initialize -f batch-byte-compile ./*.el > Install.log 2>&1
+           -f package-initialize \
+           --eval "(byte-recompile-directory \".\" 0)" > Install.log 2>&1
  if test $? -ne 0
  then
    cat Install.log
-- 
2.39.2

>From 5729f59dfa29bf9acda3959ff00aab179744e6d0 Mon Sep 17 00:00:00 2001
From: Xiyue Deng <manp...@gmail.com>
Date: Wed, 17 Apr 2024 14:06:42 -0700
Subject: [PATCH 2/3] Create symlink from elpa-src to elpa recursively

* Instead of using `ln -s', use `cp -rs' so that directories are
handled recursively.
* In remove we use `rmdir --ignore-fail-on-non-empty' so this was
handled automatically as well.
---
 helper/install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/helper/install b/helper/install
index eb68ef5..8d748c8 100755
--- a/helper/install
+++ b/helper/install
@@ -50,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}" && cp -rsf "${el_dir}"* .)
 
 # Byte compile them
 (cd "${elc_dir}"
-- 
2.39.2

>From b15e026ce0d4166d427aca14d3451eb9b60fb1c9 Mon Sep 17 00:00:00 2001
From: Xiyue Deng <manp...@gmail.com>
Date: Wed, 17 Apr 2024 14:17:41 -0700
Subject: [PATCH 3/3] Update d/changelog

---
 debian/changelog | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/debian/changelog b/debian/changelog
index 161b05c..20026ae 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -13,7 +13,13 @@ dh-elpa (2.1.2) UNRELEASED; urgency=medium
   * Add transient to the list of packages packaged separately as well as
     provided with emacs.
 
- -- Xiyue Deng <manp...@gmail.com>  Sat, 06 Apr 2024 16:41:14 -0700
+  [ Xiyue Deng ]
+  * Add support for nested directory in elpa installation.
+    - Byte compile recursively during install to handle nested
+      directories.
+    - Create symlink from elpa-src to elpa recursively.
+
+ -- Xiyue Deng <manp...@gmail.com>  Wed, 17 Apr 2024 14:16:00 -0700
 
 dh-elpa (2.1.1) experimental; urgency=medium
 
-- 
2.39.2

Reply via email to