DH-MAKE-ELPA(1)

πŸ’– DH-MAKE-ELPA πŸ’–

okay bestie, welcome to the perl-flavoured corner of the User Contributed Perl Documentation, section 1 of the manual, file DH-MAKE-ELPA(1). this is the whole vibe, no skips, no cuts πŸ’…

✨ NAME ✨

dh-make-elpa β€” the helper that makes Debian packages out of ELPA packages πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

dh-make-elpa [--pkg-emacsen] [make]
dh-make-elpa help

🌸 DESCRIPTION 🌸

so basically, dh-make-elpa will try to create all the files you need to build a Debian source package out of an unpacked GNU Emacs ELPA package. it's giving ✨glow-up✨, it's giving packaging.

ngl though β€” dh-make-elpa is an experimental script, and it does a LOT of guesswork πŸ™ˆ. like, it is out here vibing and guessing. you absolutely should thoroughly verify the contents of the debian/ directory before uploading. no cap. check everything. do not just trust the guesses and hit upload, that's not the move 😭

🫢 TYPICAL USAGE 🫢

here's the whole little ritual, bestie, follow along:

# Set your name and email address (these will be used in debian/control)
% export DEBFULLNAME="Jane Bloggs"
% export DEBEMAIL=j.s.bloggs@example.com

% git clone -o upstream https://foo.org/foo.git

% cd foo

% git reset --hard 1.0.0      # package latest stable release

% git branch --unset-upstream # detaches master branch from upstream remote

% dh-make-elpa --pkg-emacsen

% git add debian && git commit -m "initial Debianisation"

% git deborig

% dpkg-buildpackage -us -uc

look at that. iconic. she did the whole thing 🌈


πŸ‘‘ COMMANDS πŸ‘‘

  • make β€” the default command when you don't give any command at all, so she'll just do it automatically. creates debianisation from scratch. and if the debian/ directory already exists? boom, fails with an error. no overwriting your stuff, respect πŸ’€
  • help β€” shows you a short usage message. she's telling you how to talk to her πŸ₯°

πŸ’œ OPTIONS πŸ’œ

  • --pkg-emacsen β€” sets the "Maintainer", "Uploaders", "Vcs-Git" and "Vcs-Browser" fields in debian/control according to the Team's conventions. (yes, real team, real conventions, we love structure ✨)

this option is lowkey essential when you're preparing a package for the Debian Emacs Addon Packaging Team over at https://pkg-emacsen.alioth.debian.org. slay 🫢

  • --version β€” lets you specify the ELPA package version. super useful when upstream failed to include either a Package-Version: header or a -pkg.el file. upstream really said "figure it out" and this flag said "no, I got you" 😀

πŸŽ€ TIPS πŸŽ€

🧚 Upstream remote 🧚

the remote for upstream's git repository should be called 'upstream'. like, that's the naming convention, that's the rule, that's the vibe check. you can use:

% git clone -o upstream https://foo/bar

see how the -o upstream is right there? that's the trick, iykyk πŸ’…


🌟 AUTHOR 🌟

originally written by Sean Whitton <spwhitton@spwhitton.name>. currently maintained by Lev Lamberov <dogsleg@debian.org> and the Debian Emacsen team <debian-emacsen@lists.debian.org>. give them their flowers πŸ’

and fun fact bestie: a great deal of the library code used by dh-make-elpa, plus its object-oriented structure, comes from dh-make-perl(1), which was written and maintained by the Debian Perl Group. family tree moment 🌈


real talk: this is a perl v5.40.1 situation, dated 2026-06-29, and it lives under DH-MAKE-ELPA(1) in User Contributed Perl Documentation. so like… go forth, verify your debian/ directory, and eat, queen πŸ‘‘πŸ’– periodt.
πŸ“¦ where this page comes from