Differences between revisions 28 and 30 (spanning 2 versions)
Revision 28 as of 2015-04-22 20:25:37
Size: 4805
Comment:
Revision 30 as of 2015-04-22 20:51:17
Size: 4840
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
|| version || || 0.84-2 || 0.14 || 0.8.2-4 || 0.2.2-1 || 4.17.4-1 ||
|| cdbs or dh? || || dh || dh || dh || dh || cdbs ||
|| use DEBEMAIL || || yes || yes || no || yes || yes ||
|| Build-Depends || || yes || yes || no || no || no ||
|| Depends || || yes || yes || yes || yes || at build time ||
|| Homepage || || yes || yes || no || yes || no ||
|| short/long descriptions || || yes || yes || yes || short only || yes ||
|| DEP8 tests || || no || only template || no || basic (only require) || no ||
|| .docs / .examples / etc. || || docs + examples || docs only || no || docs || no ||
|| debian/copyright || || yes || only template || no || yes || yes ||
|| debian/watch || || yes|| yes || no || yes || yes ||
|| git repo creation, pristine-tar, etc. || || yes || no || no || no || no ||
|| debian/upstream/metadata (UpstreamMetadata) || || yes || no || no || no || no ||
|| version || 1.20140617 || 0.84-2 || 0.14 || 0.8.2-4 || 0.2.2-1 || 4.17.4-1 ||
|| cdbs or dh? || dh || dh || dh || dh || dh || cdbs ||
|| use DEBEMAIL || yes || yes || yes || no || yes || yes ||
|| Build-Depends || no || yes || yes || no || no || no ||
|| Depends || no || yes || yes || yes || yes || at build time ||
|| Homepage || no || yes || yes || no || yes || no ||
|| short/long descriptions || no || yes || yes || yes || short only || yes ||
|| DEP8 tests || no || no || only template || no || basic (only require) || no ||
|| .docs / .examples / etc. || no || docs + examples || docs only || no || docs || no ||
|| debian/copyright || only template || yes || only template || no || yes || yes ||
|| debian/watch || only template || yes|| yes || no || yes || yes ||
|| git repo creation, pristine-tar, etc. || no || yes || no || no || no || no ||
|| debian/upstream/metadata (UpstreamMetadata) || no || yes || no || no || no || no ||
Line 81: Line 81:
== TO-DO List ==
 * Investigate meta-helpers
  * debdry
  * https://github.com/FedericoCeratto/debian-package-init
== See also ==
 * debdry: common frontend for most of the helpers described above

This page references tools that aim at providing basic working Debian packages.

Language

Any

Perl

Ruby

Python

Node.js

Haskell

Tool (package name)

dh-make

dh-make-perl

gem2deb

python-stdeb

npm2deb

cabal-debian

Upstream repository

N/A

CPAN.org

Rubygems.org

Pypi

npm

Hackage

Features

version

1.20140617

0.84-2

0.14

0.8.2-4

0.2.2-1

4.17.4-1

cdbs or dh?

dh

dh

dh

dh

dh

cdbs

use DEBEMAIL

yes

yes

yes

no

yes

yes

Build-Depends

no

yes

yes

no

no

no

Depends

no

yes

yes

yes

yes

at build time

Homepage

no

yes

yes

no

yes

no

short/long descriptions

no

yes

yes

yes

short only

yes

DEP8 tests

no

no

only template

no

basic (only require)

no

.docs / .examples / etc.

no

docs + examples

docs only

no

docs

no

debian/copyright

only template

yes

only template

no

yes

yes

debian/watch

only template

yes

yes

no

yes

yes

git repo creation, pristine-tar, etc.

no

yes

no

no

no

no

debian/upstream/metadata (UpstreamMetadata)

no

yes

no

no

no

no

ITP mail template

no

no

no

no

yes

no

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.

Build-depends and Depends generation

  • dh-make-perl uses local packages and apt-file to identify packages (broken with 0.84-2 and multiarch)

  • gem2deb only converts gem names to Debian package names
  • stdeb also uses apt-file with a fallback on module name conversion (code)

  • DEP-11 could end up being the proper way to generate language-specific dependencies

TODO: npm, cabal-debian ?

TODO. 'cme update dpkg-copyright' is another approach.

Usage

  • Download upstream package from repository
    • Perl: not supported? (cpan -g Oxford::Calendar does nothing here...)

    • npm, Python: not supported?

    • Ruby: gem fetch GEMNAME

    • Haskell: cabal get PKGNAME

  • 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: not supported, need unpacked source

  • 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

  • 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: 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: not supported

  • Debianize, build, install
    • Perl: dh-make-perl [make] {SOURCE_DIR | --cpan MODULE|DIST} --install

    • Python, Ruby: not supported

    • npm, Haskell: not supported

  • Refresh an already created package, moving old files to .bak:
    • All: cme migrate dpkg or cme fix dpkg

    • Perl: dh-make-perl refresh

    • Python, Ruby: not supported

    • npm: not supported

    • Haskell: cabal-debian

Other languages without an automated generator

  • PHP (PEAR packages) -- see pkg-php-tools for packaging tools
  • Java -- see javahelper for packaging tools
  • Ocaml -- see dh-ocaml for packaging tools

See also

  • debdry: common frontend for most of the helpers described above