⚠ This page contains old, outdated, obsolete, … historic or WIP content! No warranties e.g. for correctness!
Why do I always find bugs at almost after release time? Why do I let my coffee become cold, have too few milk at home, etc? Why do I sometimes forget to mount -uw /x before qemu’ing an image placed on that filesystem? Why do I sometimes forget to plug in the power of the laptop and then wonder why it suddenly turns off, having no APM nor ACPI?
I’d like to call a vote for MirPorts: replace the FLAVOR and FLAVORS variables by these with correct spelling (FLAVOUR and FLAVOURS), keep it as it is, support both with English preferred, support both with American dialect preferred? I’m strongly tending to British English and would like to have this general policy in MirOS.
OpenBSD/zaurus works, although it’s a PITA to get a working Linux 2.4 on it first. The USB NIC (aue(4)) doesn’t work, though (not enough power); but it at least tries, under OpenBSD, while it is ignored under Linux 2.4 and 2.6; my USB stick works on the Zaurus but not on the laptop or the WL-500g; a CF card reader only works on the Asus box, so I must use that for data transfer (and cannot use ntpd(8), which sucks) with smallish 16 MiB and 32 MiB CF cards from my digital camera…
And why do some bugs found past the last minute need so lengthy attempts at fixing because it cannot be done inside the current implementation?
mksh releng
I managed to ssh into all possible boxen to test whether the upcoming release of mksh will work on them (well, the Debian GNU/kFreeBSD qemu instance had to be upgraded first). I even installed some Linux 2.4 and then OpenBSD on wbx’ Zaurus since nobody of them could give me a shell.
Still some testing to do, but I’m okay with what we have, not only for mksh(1) but also for the entire OS. Expect #10 finally next week or so.
OpenBSD is weird. They did, in 4.3-beta locked-tree state, link OpenCVS to the build, but no fixes for the necessary sendmail upgrade or IP ID vulnerability yet (or even planned).
Schon mal geröstete und schokierte SOJABOHNEN gesehen? Hmm… die schmecken ja sogar. Ziemlich herzhaft.
Now I’m fixing Debian fixes to upstream software. Funny. But people who re-invent strdup(3) do belong shot, even if their crapware is public domain. Luckily, mgcc(1) catches sizeof (char *).
I’m done with ${foo/bar/baz} support in mksh(1); the mcabber port can now do umlauts (stupid implementation, they should use more native functions, especially since they do link against libncursesw).
The MirPorts main page is now connected again. Rob “rjek” Kendrick is currently porting his small, fast, CSS capable, JS planned, NetSurf browser to MirOS (many thanks here!).
Benny is doing good progress on the XFree86® security fixes.
Dang, it’s much too late again, but I hacked some cool things into mksh, which were planned for some time; now I need someone to test this. Also, here strings (hd <<<$str) are now documented (and do NOT work like in GNU bash unless $str is double-quoted), whereas the replacement substitution — ${foo/b+(a)@(r|R)?(\/*)/baz} — isn’t. This should, however, further improve people coming from other shells.
Benny is still working on security updates — now: X11. I should better get my ports and ssh etc. upgraded too. If I just knew what was important now… we need actual user feedback for this, I think.
I wish OpenBSD’d update their sendmail(8), so we can do that too ☻
FOSDEM Zwischenbericht
We actually distributed about 182 CDs yesterday, and today, early morning, no CDs are left any more. We’re also about to run out of flyers. Benny’s showcase box aided really in catching users (especially the pink mouse, for the female part of the visitors, who tried Frozen-Bubble when we offered it to them).
Benny and I also decided on Unicode improvements and hacked Mac OSX Leopard support into MirPorts, this time correctly. This is really weird, and both of my fellow Mac fanboys decided that Leopard is quite buggy and thusly sucks. Probably due to the UNIX2003 certification?
Bruxelles is fun, and the hotel was very good (not really cheap, but not too expensive either). Sadly we probably don’t have any time to really go geocacheing, and our usual restaurant — le petite planéte — no longer exists, although we found a suitable replacement, with a delicious Assiette Mergues. Belgian beer was as good as usual, although it makes getting up early on the next day more difficult. The OpenBSD people donated 3 cans of Jupiler to us, which was unexpected but makes room for hopes of improvement.
The frietjes booth outside actually understood my attempts to talk to them in dutch and, although my pronunciacion is very bad (of course), she told me it’s not too bad overall (for a duitslander). They seem to pronounce ‘ie’ as a long ‘i’… I need more practice, but this part of Bruxelles is mostly french only.
Today, I merged back the cvs repository from hephaistos and tweaked both the ChangeLog and idcache as well as the ,v files to have sort of correct Commit IDs. I'll have to go through a few files worth of diff, but that'll follow next. Benny has done good work, and also thanks a lot to gecko2.
The process group IDs have been preserved in the lower 32 bit of the new commit ids, the upper 44 bit are, as usual, the time.
We'll resume normal-heavy operation very soon, so keep your INBOXen ready :)
As a side note, sorry for the inconvenience. As you might have already read, “herc” had a hardware failure (broken keyboard controller chip, due to a screw short-circuiting it), and it was “resurrected” inside of “rant”, which cannot, however, be easily booted (as the discs were IDE, and it can only boot from SCSI or — via the fxp(4) card — PXE). Due to my away time, I was unable to restart the box after it hung up. I was, as of now, unable to finally transfer services to “tear”, the new box (VIA C7), because I still need a working SCSI U320 (or U160) controller. The planned-impending (but then delayed) transfer of services to “tear” caused me to not fix the “herc” hardware first (as it would not be worth the effort).
We will be working on restoring all services onto “herc”/“rant” within the next days, try to get a SCSI HA ASAP, and build an improved (and possibly more failsafe) infrastructure.
The unplanned away time causes a late #10 release, and it will not be in time for FOSDEM, but it will come. Also, some things (nroff, Unicode) have been thought through once again, with interesting results, which will lead to further improvements in these areas in the future.
mksh not buggy
As an update to Benny's first wlog entry mentioning a possible mksh bug I have to say that this was fixed in mksh R31b: The “unset” builtin always returns zero, even if the variable was already unset, as per SUSv3 (reported by Arkadiusz Miskiewicz via pld-linux → oksh)
mirmake-20080218 Release Notes
The 20080218 release of mirmake is the first in about four months. It contains one important bugfix:
- Mac OS 10.5 ("Leopard") and Intel Macintosh machines are now supported.
This new Darwin version is now UNIX2003(TM)-certified; to achieve compatibility, "symbol variants" are used for some functions, such as getopt(3). This, however, breaks the getopt implementation that comes with mirmake. Thus, the build system was changed to make sure that the native getopt is always used on Darwin platforms.
mirmake is a portable version of the MirOS make(1) program. It also contains the BSD Makefiles, i.e. bsd.prog.mk(5) and friends, some utilities like realpath(1), and a compatibility library (libmirmake) that has implementations for some functions not available on the target system—most notably hash functions for md5, sha1, sha2, and tiger hashes.
mirmake-20080218 can be downloaded from /MirOS/dist/mir/make on this server. The file hashes are:
MD5 (mirmake-20080218.cpio.gz) = 5e6ecc4432b61e39e9907737d058309c RMD160 (mirmake-20080218.cpio.gz) = 75de9d3a51570948935b31fb8a280a3ad00757a7 SHA1 (mirmake-20080218.cpio.gz) = 17251b1db87ceed85bd82dc52ca7ace7f7c77786
I am making the first steps on my new MacBook Pro – a fine machine. I had had a bug report last year that MirMake does not build on a new Intel Mac running Mac OS 10.5 "Leopard". During 24C3, I had tried unsuccessfully to fix this. Now I finally know the reason.
It is an incompatibility between the getopt.h and getopt_long.c that come with MirMake and the ones in Leopard's libSystem. It seems that Apple has changed some function implementations to be UNIX2003 compatible. The old ones have been preserved for binary compatibility, and the choice is done via "symbol variants", like _getopt@UNIX2003. The upshot is that you need to use the system header.
I devised a fix (use the system getopt(3) in Darwin) but I now I need to figure out how to make a new mirmake release.
In other news, I am working on the talk for FOSDEM 2008 in Bruxelles. Stay tuned for more stuff about build systems (see news).
mksh bug
The problem from the last entry really seems to be a bug in ksh. In mksh, unsetting a non-existing variable gives a return value of 1. If set -e is active, then the script breaks at this point. This behaviour seems to be the same for the other ksh instances such as pdksh. From the mksh(1) manpage:
Unset the named parameters (-v, the default) or functions (-f). The exit status is non-zero if any of the parameters were already unset, zero otherwise.
However, SUSv3 clearly mandates that unset must return a zero exit state in this case. And it seems to be a sane thing actually: in any case, the result is the same afterwards, i.e. the variable is unset. I could care less if it was set before. Btw, both bash and tcsh return 0. zsh returns 1.
I think I will leave this here for tg@'s return. It will be up to him to decide.
Update (20.02.2008 tg@): Read this.
Oh well, today is december 31. Happy new year 2008, everyone!
I fixed a very annoying bug (for me) in the build system for the website. It turns out that unset returns 1 in mksh (but not in bash) when the variable was unset before. However, make breaks as soon as one command fails. Adding a simple || true helps.
As seen in the news section, I will be in Berlin for 24C3. You should come, too. The talks and the atmosphere are great. The train journey was a bit more cumbersome than usual though: our ICE train was replaced by an InterCity. No reservations, not enough space and worst of all: no coffee.
Update (20.02.2008 tg@): Read this.