Differences between revisions 26 and 28 (spanning 2 versions)
Revision 26 as of 2015-04-22 20:10:34
Size: 4469
Comment:
Revision 28 as of 2015-04-22 20:25:37
Size: 4805
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
|| cdbs or dh? || || dh || dh || dh || dh ||
|| use DEBEMAIL || || yes || yes || no || yes ||
|| Build-Depends || || yes || yes || no || no ||
|| Depends || || yes || yes || yes || yes ||
|| Homepage || || yes || yes || no || yes ||
|| short/long descriptions || || yes || yes || yes || short only ||
|| DEP8 tests || || no || only template || no || basic (only require) ||
|| .docs / .examples / etc. || || docs + examples || docs only || no || docs ||
|| debian/copyright || || yes || only template || no || yes ||
|| debian/watch || || yes|| yes || no || yes ||
|| git repo creation, pristine-tar, etc. || || yes || no || no || no ||
|| debian/upstream/metadata (UpstreamMetadata) || || yes || no || no ||
|| ITP mail template || no || no || no || no || yes ||
|| 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 ||
|| ITP mail template || no || no || no || no || yes || no ||
Line 32: Line 32:
TODO: npm, cabal-debian ?
Line 40: Line 42:
  * '''Haskell:''' {{{cabal get PKGNAME}}}
Line 45: Line 48:
  * '''Haskell:''' not supported, need unpacked source
Line 50: Line 54:
  * '''Haskell:''' {{{cabal-debian}}}
Line 54: Line 59:
  * '''npm:''' not supported   * '''npm, Haskell:''' not supported
Line 59: Line 64:
  * '''npm:''' not supported   * '''npm, Haskell:''' not supported
Line 63: Line 68:
  * '''npm:''' not supported   * '''npm, Haskell:''' not supported
Line 69: Line 74:
  * '''Haskell:''' {{{cabal-debian}}}

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

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

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

TO-DO List