No subject


Thu Mar 28 10:00:40 UTC 2019


it might be a clever thing to do, but let me tell you that with all the 2000
source packages we compiled on the Hurd in the last three years, the most
time consuming and annoying ones where those which did not use autoconf,
automake, or, horror!, did not use GNU make (but pmake or imake or things
like that), but provided their own clever system.  And of course, repeating
all the wrong assumptions and bugs that I have already fixed in a dozen
other, similarly broken build system written by likely-minded people who
also thought it would be a clever idea and they could do better than
the autoconf/automake maintainers.

The setup like the one in cdrtools with all the mostly identical RULES/
and DEFAULT/ files is the horror of my dreams.  This is because I spent lots
of wasted hours in such systems, trying to understand what the hell this
or that variable does exactly (btw, the worst package of this kind was still
XFree86, which is a mix of everything and little documentation of the
variables.  The best package of this sort is exim, which was quite easy to
port because it is consequently feature based, and documents the variables).

> >What do you call a non-trivial program? I can give some packages
> >ported anyhow: XFree86, ssh, emacs, vim, ruby, python, TeX, ...=20
> 
> ssh  would be a at the border to a non trivial program, while emacs is
> a trivial program from portability perspective.

And this although emacs does use some very sophisticated things, including
frobbing the malloc implementation, dumping itself to an executable, and
other funky stuff.  When it doesn't work (as one emacs20 version), it takes
some time to fix it.

I don't know your measure of triviality.  Certainly the port of XFree86 was
non-trivial (see above).  The port of ruby was non-trivial (among others,
because it assumes that errno fits into 31 bits).  The ruby maintainer gladly
helped out here, although he probably doesn't use the Hurd himself.  The port
of TeX was relatively trivial.

Interestingly, the port of dpkg was non-trivial, there were several bugs.
Also, the port of gdb was non-trivial, it required lots of work by Mark
Kettenis.  The port of python was also non-trivial, there were a couple of
subtle bugs which were hard to find (but easy to fix).

Kerberos was not trivial at all.  Same for postgresql, which I had to stall
because we don't have SysV semaphores and shared memory yet (which means
postgresql compiles, but the server doesn't run).

The port of perl was not easy, because the Debian packaging assumed Linux
throughout, and again there were a couple of bugs, partly in the Hurd (we
fixed all of them).  The port of the Boehm garbage collector was not
trivial, because it required some information about the stack setup.  The
port of exim was not trivial, because it tried to close all file descriptors
before exec, and the Hurd declared an insane number of available file
descriptors at that time (because this is one area where POSIX is broken, we
changed the Hurd to have a small soft limit of fds, although there is no
such limit in the Hurd).  Philip Hazel, the exim maintainer, changed all
code to keep track of the open file descriptors, just to make it work on the
Hurd.  And this although he probably doesn't use the Hurd either.  Oh, and
at the time I did it, the port of slang wasn't so easy for me.  tcl/tk was
also not so easy to port because of the broken build system.  Interestingly,
fortune was easy to fix, but the bug was not easy to spot (it was a
hardcoded open (foo, 0) instead O_RDONLY, which is 1 on the Hurd).

cron was not easy to port, because the code is so ancient by todays
standards, and has all the hard limits that we want to avoid.  Same for
things like netutils, which lead to a fork and the development of GNU
inetutils.

I am by now only 15% through the packages list, and I probably forgot a lot
of packages which I ported in a few hours or couple of days.  Note that not
all of the above was done by me, I gave a couple of names, but there were
some more.  Not all ports were done by GNU/Hurd people (see upstream authors
above).

This point about what trivial or non-trivial programs have been ported is
just so silly.

Thanks,
Marcus

-- 
`Rhubarb is no Egyptian god.' Debian http://www.debian.org brinkmd at debian.org
Marcus Brinkmann              GNU    http://www.gnu.org    marcus at gnu.org
Marcus.Brinkmann at ruhr-uni-bochum.de
http://www.marcus-brinkmann.de



More information about the Discussion mailing list