Quick porting guide for simple packages

If you want to help port a package with simple issues to the Hurd, please read on.

just imagine joe C-doodler stumbling over some GNU philosophy and thinking “hey, I’ve got 2 free hours, why not help the Hurd?” for him I’d like to have a guide (and for me, the faulty-memory-does-too-many-things :) )

a short guide “how to do simple ports” broken down to command line level: how to get the list of simple packages (youpi told me that here), how to get the source, how to test the fix, how to submit the fix.

Setup an instant Hurd development environment

See Instant Development Environment - just follow the command to get a Hurd running in Qemu.

Getting the list of failed packages

wget http://people.debian.org/~sthibault/failed_packages.txt.gz
gunzip failed_packages.txt.gz

Finding a simple task

grep PATH_MAX failed_packages.txt -B 2

Each of these packages is likely to be simple to fix. The output looks like this:

…
--
tex/lilypond_2.12.3-7 by buildd_hurd-i386-mozart [optional:uncompiled:bp{-100}:calprio{-63}:days{258}]
  Reasons for failing:
> file-name.cc:88: error: 'PATH_MAX' was not declared in this scope
--
…

in this case, lilypond is the package.

Other simple tasks can be found on guidelines.

Downloading the package source and installing dependencies

apt-get source PACKAGE
apt-get build-dep PACKAGE

For example

apt-get source lilypond
apt-get build-dep lilypond

Fix the package

See guidelines for help on fixing the package.

Notes:

  • char path[4096] is evil. Use dynamic allocation (if you can).
  • use stuff like if (x < sysconf(SCPATH_MAX)) {}
  • if need be, make it conditional

#ifdef PATH_MAX old, POSIX-violating code #else GNU, better code #endif

Test the fix (compile, run tests)

cd PACKAGE
dpkg-buildpackage -B

Also check the packages README for instructions.

Submit the fix

See patch submission.