Size: 7291
Comment: add dh-make-elpa
|
Size: 9217
Comment: fix link to debianize, it is in lintian-brush so doesn't have a package page
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#language en | |
Line 2: | Line 3: |
== Language-agnostic == These are tools that generate Debian packages independently of the language. They often wrap language-specific package generators (see below). ||<rowstyle="background-color: #EEEEEE;">'''Name'''|| || DebianPkg:debdry || || DebianPkg:debmake || || DebianMan:debianize || == Language-specific == |
|
Line 5: | Line 17: |
||'''Upstream repository'''|| N/A || [[http://www.cpan.org/|CPAN.org]], [[https://anonscm.debian.org/cgit/pkg-perl/packages/dh-make-perl.git|Alioth]] || [[http://www.rubygems.org/|Rubygems.org]] || [[http://pypi.python.org/|PyPI]] || [[http://pypi.python.org/|PyPI]] || [[https://www.npmjs.com|npm]] || [[http://hackage.haskell.org/|Hackage]] || [[https://melpa.org/|MELPA]] || ||||||||||||||||<rowstyle="background-color: #EEEEEE;"> Features || || version || 1.20150601 || 0.89-1 || 0.21.1 || 0.8.5-1 || 0.20150816 || 0.2.2-1 || 4.31-1 || 0.0~git20150726.0.fc4210a-1 || unreleased || |
||'''Upstream repository'''|| N/A || [[http://www.cpan.org/|CPAN.org]], [[https://anonscm.debian.org/cgit/pkg-perl/packages/dh-make-perl.git|Alioth]] || [[http://www.rubygems.org/|Rubygems.org]] || [[http://pypi.python.org/|PyPI]] || [[http://pypi.python.org/|PyPI]] || [[https://www.npmjs.com|npm]] || [[http://hackage.haskell.org/|Hackage]] || varies || [[https://melpa.org/|MELPA]] || ||||||||||||||||||<rowstyle="background-color: #EEEEEE;"> Features |||| || version || 1.20150601 || 0.89-1 || 0.21.1 || 0.8.5-1 || 0.20160809 || 0.2.2-1 || 4.31-1 || 0.6.0-1 || 0.1.0 (experimental) || |
Line 14: | Line 26: |
|| DEP8 tests || no || yes (autopkgtest-pkg-perl in pkg-perl mode) || only template || no || no || basic (only require) || no || no || no || || .docs / .examples / etc. || no || docs + examples || docs only || no || docs + examples || docs || no || no || docs only || |
|| DEP8 tests || no || yes (autopkgtest-pkg-perl in pkg-perl mode) || only template || no || no || basic (only require) || no || dh-golang autopkgtest || no || || .docs / .examples / etc. || no || docs + examples || docs only || no || docs + examples || docs || no || no || docs only || |
Line 17: | Line 29: |
|| debian/watch || only template || yes|| yes || yes || yes || yes || yes || no || ye s|| || git repo creation, pristine-tar, etc. || no || yes || no || no || no || no || no || yes || no || || [[UpstreamMetadata|debian/upstream/metadata]] || no || yes || no || no || no || no || no || no || no || |
|| debian/watch || only template || yes|| yes || yes || yes || yes || yes || yes || yes || || git repo creation, pristine-tar, etc. || no || yes || no || no || yes || no || no || yes || no || || [[UpstreamMetadata|debian/upstream/metadata]] || no || yes || no || no || no || no || no || yes || no || |
Line 21: | Line 33: |
|| recursive || || || || || || || || no<<FootNote(The estimate command can tell which parts of the dependency chains are missing from Debian.)>> || || |
|
Line 22: | Line 36: |
Line 26: | Line 41: |
Line 27: | Line 43: |
Line 32: | Line 49: |
* deb-fix-build from DebianPkg:ognibuild will parse build logs for missing {build,test} dependencies to add, repeating until the build succeeds. | |
Line 34: | Line 52: |
TODO. 'cme update dpkg-copyright' is another approach. See [[https://github.com/dod38fr/config-model/wiki/Updating-debian-copyright-file-with-cme|Updating debian copyright file with cme]] | A draft copyright file can be created in one of these ways: * {{{licensecheck --check '.*' --recursive --deb-machine --lines 0 * >> debian/copyright}}} * {{{cme update dpkg-copyright}}} In either case, you still need to double-check the information (licensecheck leaves FIXMEs to help you track which parts you have double-checked, whereas cme strips those FIXMEs) See more details and alternative tools at CopyrightReviewTools |
Line 37: | Line 65: |
Line 82: | Line 111: |
Line 85: | Line 115: |
Line 89: | Line 120: |
Line 93: | Line 125: |
* DebianPkg:ognibuild: {{{ogni info --explain --resolve=apt}}} will attempt to auto-discover the buildsystem | |
Line 95: | Line 128: |
Line 97: | Line 131: |
* The Rust team [[Teams/RustPackaging/Policy|seems]] to have a debcargo system == Meetings == * DebConf15: * [[https://summit.debconf.org/debconf15/meeting/257/automatic-packaging/|Automatic packaging BoF]]: [[https://gobby.debian.org/export/debconf15/bof/Automatic%20Packaging|notes]], [[https://meetings-archive.debian.net/pub/debian-meetings/2015/debconf15/Automatic_packaging.webm|video]] * Debian Reunion 2022: * [[https://hamburg-2022.mini.debconf.org/talks/5-automating-debian-packaging/|Automating Debian Packaging]]: [[attachment:DebianEvents/de/2022/DebianReunionHamburg/Automating Debian Packaging.pdf|slides]], [[https://meetings-archive.debian.net/pub/debian-meetings/2022/Debian-Reunion-Hamburg/debian-reunion-hamburg-2022-17-automating-debian-packaging.webm|video]] == Footnotes == ---- CategoryPackaging CategorySoftware |
This page references tools that aim at providing basic working Debian packages.
Language-agnostic
These are tools that generate Debian packages independently of the language. They often wrap language-specific package generators (see below).
Language-specific
Language |
Any |
Perl |
Ruby |
Python |
Python |
Node.js |
Haskell |
Go |
ELPA (Emacs Lisp) |
Tool (package name) |
dh-make-elpa |
||||||||
Upstream repository |
N/A |
varies |
|||||||
Features |
|||||||||
version |
1.20150601 |
0.89-1 |
0.21.1 |
0.8.5-1 |
0.20160809 |
0.2.2-1 |
4.31-1 |
0.6.0-1 |
0.1.0 (experimental) |
cdbs or dh? |
dh |
dh |
dh |
dh |
dh |
dh |
cdbs |
dh |
dh |
use DEBEMAIL |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
Build-Depends |
no |
yes |
yes |
partial |
yes |
no |
yes |
yes |
partial |
Depends |
no |
yes |
yes |
yes |
yes |
yes |
at build time |
yes |
yes |
Homepage |
no |
yes |
yes |
yes |
yes |
yes |
no |
yes |
yes |
short/long descriptions |
no |
yes |
yes |
yes |
yes |
short only |
yes |
yes |
yes |
DEP8 tests |
no |
yes (autopkgtest-pkg-perl in pkg-perl mode) |
only template |
no |
no |
basic (only require) |
no |
dh-golang autopkgtest |
no |
.docs / .examples / etc. |
no |
docs + examples |
docs only |
no |
docs + examples |
docs |
no |
no |
docs only |
debian/copyright |
only template |
yes |
only template |
no |
yes |
yes |
yes |
yes |
yes |
debian/watch |
only template |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
git repo creation, pristine-tar, etc. |
no |
yes |
no |
no |
yes |
no |
no |
yes |
no |
no |
yes |
no |
no |
no |
no |
no |
yes |
no |
|
ITP mail template |
no |
no (use dpt gen-itp) |
no |
no |
yes |
yes |
no |
yes |
no |
recursive |
|
|
|
|
|
|
|
no1 |
|
Notes
There's a Git repo with some example outputs
only template means that the tool provides a file that is not customized per-package
- npm2deb only generates the Debian files from metadata, but does not create a proper source package. The upstream source is not downloaded.
- Several tools use wrap-and-sort to unify structure of debian/ files
Build-depends and Depends generation
dh-make-perl uses local packages and apt-file to identify packages (broken with 0.84-2 and multiarch)
stdeb also uses apt-file with a fallback on module name conversion (code)
- npm, gem2deb and cabal-Debian only convert upstream package names found in metadata, to Debian package names
- dh-make-elpa relies on dh-elpa's dependency detection
DEP-11 could end up being the proper way to generate language-specific dependencies
deb-fix-build from ognibuild will parse build logs for missing {build,test} dependencies to add, repeating until the build succeeds.
Copyright file generation
A draft copyright file can be created in one of these ways:
licensecheck --check '.*' --recursive --deb-machine --lines 0 * >> debian/copyright
cme update dpkg-copyright
In either case, you still need to double-check the information (licensecheck leaves FIXMEs to help you track which parts you have double-checked, whereas cme strips those FIXMEs)
See more details and alternative tools at CopyrightReviewTools
Usage
- Download upstream package from repository
Perl: cpan -g Oxford::Calendar (does nothing here ...; here it works
maybe cpan config needed?)
Python: pypi-download NAME --release VERSION, f.e. pypi-download Mako --release 1.0.1
npm: npm install PKGNAME
Ruby: gem fetch GEMNAME
Haskell: cabal unpack --pristine PKGNAME
ELPA: user is expected to git clone upstream repository
- Debianize an unpacked upstream source
Perl: dh-make-perl [make] .
Python: python3 setup.py --command-packages=stdeb.command debianize
Ruby: dh-make-ruby
npm: not supported
Haskell: cabal-debian --official (see ?the step-by-step guide)
ELPA: dh-make-elpa [make]
- Debianize (without building source)
Perl: dh-make-perl [make] {SOURCE_DIR | --cpan MODULE|DIST}
Python: not supported
Ruby: gem2deb --only-source-dir GEMNAME|GEMFILE
npm: npm2deb create PKGNAME
Haskell, ELPA: not supported, need unpacked source
- Debianize and build source package
Perl: dh-make-perl [make] {SOURCE_DIR | --cpan MODULE|DIST} --build-source or cpan2dsc MODULE
Python: py2dsc DISTFILE
Ruby: gem2deb --only-debian-source GEMNAME|GEMFILE
npm, Haskell, ELPA: not supported
- Debianize and build binary packages
Perl: dh-make-perl [make] {SOURCE_DIR | --cpan MODULE|DIST} --build or cpan2deb MODULE
Python: py2dsc-deb DISTFILE
Ruby: gem2deb GEMNAME|GEMFILE
npm, Haskell, ELPA: not supported
- Debianize, build, install
Perl: dh-make-perl [make] {SOURCE_DIR | --cpan MODULE|DIST} --install
Python: pypi-install NAME
Ruby: not supported
npm, Haskell, ELPA: not supported
- Refresh an already created package, moving old files to .bak:
All: cme migrate dpkg or cme fix dpkg See Managing Debian package files with cme
Perl: dh-make-perl refresh
Python: not supported
Ruby: dh-make-ruby -w
npm: not supported
Haskell: cabal-debian --official --upgrade
ELPA: not yet
Not (yet) covered tools
- OCaml : oasis2debian and opam2debian
Other languages without an automated generator
- PHP (PEAR packages) -- see pkg-php-tools for packaging tools (and debpear for a simple generator)
- Java -- see javahelper/maven-debian-helper for packaging tools. There is also "mh_make"
See also
debdry: common frontend for most of the helpers described above description
- alien: converts RPM/etc binary packages to deb binary packages
- checkinstall: run an arbitrary upstream build system and auto-package the output
game-data-packager: converts non-free game data files to Debian binary packages
ognibuild: ogni info --explain --resolve=apt will attempt to auto-discover the buildsystem
TODO
- The R team seems to have a cran2deb package
The Rust team seems to have a debcargo system
Meetings
- Debian Reunion 2022:
Footnotes
CategoryPackaging CategorySoftware
The estimate command can tell which parts of the dependency chains are missing from Debian. (1)