Ports ] [ Debian GNU/Hurd ] [ News ] [ Configuration ] [ Hurd CDs ] [ Documentation ] [ Development ] [ Contact ]

Debian GNU/Hurd

Development of the Distribution

Packaging Hurd software

The Hurd-specific packages are maintained on https://salsa.debian.org/hurd-team/.

Porting Debian Packages

If you want to help the Debian GNU/Hurd port, you should make yourself familiar with the Debian packaging system. Once you have done this by reading the available documentation and visiting the Developer's Corner you should know how to extract Debian source packages and build a Debian package. Here is a crash course for the very lazy people:

Obtaining Source and Building Packages

Obtaining Source code can be done by simply running apt source package, which will also extract the source.

Extracting a Debian source package requires the file package_version.dsc and the files listed in it. You build the Debian build directory with the command dpkg-source -x package_version.dsc

Building a package is done in the now existing Debian build directory package-version with the command dpkg-buildpackage -B "-mMyName <MyEmail>". Instead -B you can use -b if you also want to build the architecture independent parts of the package (but that is usually useless since they are already available in the archive, and building them may require additional dependencies). You can add -uc to avoid signing the package with your OpenPGP key.

Building may needed additional installed packages. The simplest way it to run apt build-dep package which will install all required packages.

Using pbuilder can be convenient. It can be built with sudo pbuilder create --mirror http://deb.debian.org/debian-ports/ --debootstrapopts --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg --debootstrapopts --extra-suites=unreleased --extrapackages debian-ports-archive-keyring and then one can use pdebuild -- --binary-arch which will handle downloading build dependencies, etc, and put the result in /var/cache/pbuilder/result

Pick One

Which package needs to be worked on? Well, every package that is not yet ported, but needs to be ported. This changes constantly, so it's preferred to concentrate first on packages with a lot of reverse dependencies, which can be seen in the package dependency graph https://people.debian.org/~sthibault/hurd-i386/graph-radial.pdf updated every day, or on the most-wanted list https://people.debian.org/~sthibault/hurd-i386/graph-total-top.txt (this is long-term wanted, the short-term wanted is https://people.debian.org/~sthibault/hurd-i386/graph-top.txt). It is also usually a good idea to pick from the out of date lists https://people.debian.org/~sthibault/hurd-i386/out_of_date2.txt and https://people.debian.org/~sthibault/hurd-i386/out_of_date.txt, as these used to be working, and are now broken probably only for just a couple of reasons. You can also just pick one of the missing packages at random, or watch out for autobuilding logs on the debian-hurd-build-logs mailing list, or use the wanna-build list from https://people.debian.org/~sthibault/hurd-i386/failed_packages.txt . Some build issues are easier to fix than the others. Typically, "undefined reference to foo", where foo is something like pthread_create, dlopen, cos, ... (which are obviously available on hurd-i386), which just shows that the configure step of the package forgot to include -lpthread, -ldl, -lm, etc. on the Hurd too. Note however that ALSA MIDI functions are not available.

Also, check whether work has already been done on https://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse, https://alioth.debian.org/tracker/?atid=411594&group_id=30628&func=browse, and the BTS (https://bugs.debian.org/cgi-bin/[email protected];tag=hurd), and https://wiki.debian.org/Debian_GNU/Hurd, and the live state of packages on buildd.debian.org, e.g. https://buildd.debian.org/util-linux.

It's better to push the porting fix to upstream itself, since that's where it will have to land eventually ; better discuss directly with them rather than via the Debian maintainer of the Debian package. We can easily apply the fix as an upload to Debian's unreleased suite while waiting for the patch to be released by upstream and land in Debian.

Packages That Won't Be Ported

Some of these packages, or parts of them, might be portable later, but currently they are considered to be unportable at least. They are normally marked as NotForUs in the buildd database.

General Porting Issues

A list of common issues is available on the upstream website. The following common issues are specific to Debian.

Before attempting to fix something, check whether the kfreebsd* port maybe has some fix already, which just needs to be extended to hurd-any.

Hacking with the Debian installer

To build an ISO image, the simplest is to start from an existing one from the Hurd CD images page. You can then mount it and copy it:

 
mount debian-sid-hurd-i386-NETINST-1.iso /mnt
cp -a /mnt /tmp/myimage
umount /mnt
chmod -R +w /tmp/myimage

You can mount the initial ram disk, and e.g. replace a translator with your own version:

 
gunzip /tmp/myimage/initrd.gz
mount /tmp/myimage/initrd /mnt
cp ~/hurd/rumpdisk/rumpdisk /mnt/hurd/
umount /mnt
gzip /tmp/myimage/initrd

Now you can rebuild the iso with grub-mkrescue:

 
rm -fr /tmp/myimage/boot/grub/i386-pc
grub-mkrescue -o /tmp/myimage.iso /tmp/myimage