DUCK for packagers

I finally managed to package duck 0.4 for Debian/unstable. Additionally to duck.debian.net you can now run all (in fact even more than on the website) checks on your own.

Intended as as helper tool for packaging work, it inspects debian/control files as well as upstream metadata files.

By trying to use the approriate tool for each URL, it tries to find out (eg. using git ls-remote for GIT repos) if a given repository is availabe. Email addresses in Maintainer and Uploaders fields as well as mailto: URLs are checked by trying to find MX, A or AAAA records for the email domain.

Usage

Without any additional options, duck looks for the following files:

  • debian/control
  • debian/upstream (if it's not a directory :-) )
  • debian/upstream-metadata.yaml
  • debian/upstream/metadata

Just hop into your extracted package source tree (the one containing the debian subdir), and run:

$ duck

If everything is ok, you won't get any output. To see what's going on, run:

$ duck -v
debian/control: Maintainer: Simon Kainz simon@familiekainz.at: OK
debian/control: Vcs-Git: git://anonscm.debian.org/collab-maint/duck.git: OK
debian/control: Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/duck.git: OK
debian/control: Homepage: http://duck.debian.net: OK

Errors show up like this:

$ duck -v
debian/control: Maintainer: Simon Kainz simon@domain.invalid: ERROR
Simon Kainz simon@domain.invalid: No MX entry found.
Simon Kainz simon@domain.invalid: No A entry found.
Simon Kainz simon@domain.invalid: No AAAA entry found.

debian/control: Vcs-Git: git://anonscm.insanetypo..debian.org/collab-maint/duck.git: ERROR fatal: unable to connect to anonscm.insanetypo..debian.org:

anonscm.insanetypo..debian.org: Name or service not known

debian/control: Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/duck.git: OK debian/control: Homepage: http://duck.debian.net: OK skainz@zidpc9027:~/debian/sid/home/skainz/packages/duck_2014/duck$

Missing features

Currently the following VCS URLs are not supported:

  • Vcs-Arch
  • Vcs-Cvs
  • Vcs-Mtn

If someone knows how to get the state of one of the repos based on the VCSs above, preferably without needing to check out the complete source code, please contact me.

And remember:

"Always duck before dput" :-)

blogroll

social