Developers’ Weblog

Sponsored by
HostEurope Logo

Developers’ Weblog

All 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

On MirBSD and other sane OSes, you can just press ^T (Ctrl-T) when dd(1) runs; this sends it a SIGINFO (cf. sigaction(2)) which asks it to display (progress) information to the tty. This includes kFreeBSD, btw.

Update 07.01.2012 – this also works on Hurd. Linux neither has SIGINFO nor (cooked mode tty) support for it.

There’s also pv:

	dd if=/dev/mapper/vg01-${customername}--hudson bs=1048576 | \
	    pv -pter -B 1048576 -s 85899345920 | \
	    xz -0 >/mnt/ci-${customername}-snap-20120105-lenny.img.xz

I used this At wOrk today to back up a Jenkins VM before upgrading its underlying operating system for evaluation. Here, the -s flag is the total size (in bytes; don’t forget to multiply by 1024 when reading from Linux’ /proc/partitions) so pv can calculate a total and an ETA; -B is the same as bs; and xz is the currently best compressor to use, in any situation, unless you must stay compatible to gzip(1)-only systems. (Except that it’s not under an Open Source licence.)

clpbar might also be worth looking into. XTaran points out sid has this as bar.

PSA: Last of June, 2012, will be a leap second.

Quick! A webserver!

04.01.2012 by bsiegert@
Tags: golang tip

If, like me, you occasionally want to transfer some files via http—like the sets for a MirOS installation—but are much too lazy to set up apache, here is a simple web server in nine lines of Go:

	package main

	import (
		. "net/http"

	func main() {
		Handle("/", FileServer(Dir(".")))
		log.Fatal(ListenAndServe(":8080", nil))

It simply exports the current directory via http on port 8080. Neat!

What’s going on in MirOS Project land? Other than all developers being buried in dayjob work, of course… (sorry for that, guys; even tg@ has now succumbed to an ever-growing backlog but will be back, some time)

tg@ uploaded a new MirBSD-current/i386 snapshot (20111228) plus a full set of HTML manpages for all architectures (so they all are in the new amber style), and redid the usual combined i386+sparc cdrom10.iso Midi-ISO as well as the kit. Older binary packages may no longer be supported: the old libgcc_s DLL is no longer provided in fixes10.ngz, and it may be time to reduce the amount of packages in MirPorts to concentrate on those worth the effort and receiving enough care.

Thanks to bsiegert@’s amazing work, the pkgsrc® kit of anno 2007 could finally be deleted. The page about pkgsrc® on MirOS describes instructions to use instead. At some point, we may release a binary bootstrap kit along with the snapshots as set ready for pickup by the installer.

No MirGRML based on the latest Grml 2011.12 release will be made. We’ll be investigating a possible solution for a flavour of the popular GNU/Linux OS to accompany full Triforce Live CDs in the future (for now, we’ll keep the old MirGRML 2009.10 on them).

We hope to be able to return to investing more spare (heh…) time into development some time. For now, we apologise for the slowed down development and reaction even in important subprojects such as mksh. Occasionally, they do have updates, e.g. the latest Jupp/Win32 release, or fixes in CVS.

This is a very late announcement. Binary packages for pkgsrc-2011Q3 are now available on The repository contains 5330 packages built on MirOS-current. Any MirOS BSD version from 2011 should work.

The packages are self-contained in /usr/pkg: The VARBASE has been set to /usr/pkg/var, and the package database is in /usr/pkg/db. This matches the MirPorts defaults and facilitates using pkgsrc and MirPorts side by side.

In this quarterly release, the new default for MirBSD is to use “modular” X11, i.e. install Xorg libraries and programs as packages instead of using the system X libs. This improves the compatibility with many newer programs, which expect for example that the X libraries have pkg-config files. This should not change anything for the user, however.

For more information on how to use these packages, consult the pkgsrc page on or the relevant section of the pkgsrc guide.

As reported earlier (in “Jenkins und die APT-Repositories” part 1) we’ve got some kind of Jenkins/APT integration, with automatically generating as many repositories as a job desires.

News are that the builds host has moved, so the URIs to the repositories have changed. The new syntax is for the Jenkins ⇒ “deb distribution suite …” and currently only usable in the company-internal network.

We’ve also got some more magic mksh code to automate the entire process – check the code out from SCM (required, as Jenkins’ svn checkouts are broken), build a Debian source package, NEW! ask cowbuilder to compile it in a clean chroot environment, and call for APT repository publication. Sample projects are ci-evolvis/virtualscreen (git) and ci-dev/portal-setup (svn). Talk to me if you have any questions.

This allows for a one-line “run a shell command” build step!

Everybody else is, of course, invited to take and re-use our code, and maybe even improve upon it and submit that back. It’s all Open Source, after all.

tl;dr Jenkins Jobs now have integration with cowbuilder. There’s a new script to automate the whole build pipeline. The APT repositories have moved with the recent move.

This is both a release announcement for the next installment of The MirBSD Korn Shell, mksh R40b, and a follow-up to Sune’s article about small tools of various degrees of usefulness.

I hope I don’t need to say too much about the first part; mksh(1) is packaged in a gazillion of operating environments (dear Planet readers, that of course includes Debian, which occasionally gets a development snapshot; I’ll wait uploading R40c until that two month fixed gcc bug will finally find its way into the packages for armel and armhf). Ah, we’re getting Arch Linux (after years) to include mksh now. (Probably because they couldn’t stand the teasing that Arch Hurd included it one day after having been told about its existence, wondering why it built without needing patches on Hurd…) MSYS is a supposedly supported target now, people are working on WinAPI and DJGPP in their spare time, and Cygwin and Debian packagers have deprecated pdksh in favour of mksh (thanks!). So, everything looking well on that front.

I’ve started a collection of shell snippets some time ago, where most of “those small things” of mine ends up. Even stuff I write at work – we’re an Open Source company and can generally publish under (currently) AGPLv3 or (if extending existing code) that code’s licence. I chose git as SCM in that FusionForge instance so that people would hopefully use it and contribute to it without fear, as it’s hosted on my current money source’s servers. (Can just clone it.) Feel free to register and ask for membership, to extend it (only if your shell-fu is up to the task, KNOPPIX-style scripts would be a bad style(9) example as the primary goal of the project is to give good examples to people who learn shell coding by looking at other peoples’ code).

Maybe you like my editor, too? At OpenRheinRuhr, the Atari people sure liked it as it uses WordStar® like key combinations, standardised across a lot of platforms and vendors (DR DOS Editor, Turbo Pascal, Borland C++ for Windows, …)

ObPromise: a posting to raise the level of ferrophility on the Planet aggregators this wlog reaches (got pix)

Es gibt eine Literaturverlosung im Themengebiet Geocaching auf dieser Geocaching Franken Seite. Man kann dort zwei Fachbücher „Geocaching – GPS-Freizeitspaß für Abenteurer” und zwei Exemplare der Zeitschrift „Outlife“ zu ebendiesem Thema gewinnen.

Nun hoffe ich natürlich, einen Gewinn zu reißen, gerade weil ich der Meinung bin, dies als stolzer Opencacher (und damit meine ich das echte OpenCaching-Netzwerk und nicht den billigen, ungepflegten Garmin-Ripoff (OC.COM alias OXnnnnn), der vor einiger Zeit eine feindliche Übernahme des guten Namens versucht hat). Stets im Kampf gegen diese, die unseren Sport zu kommerzialisieren versuchen mit Premiummitgliedschaften bei GC.COM; gekauften Anwendungen für Windows®, um ihr Profi-Navi besser bedienen zu können; und dergleichen. Außerdem hoffe ich, hierduch einen besseren Einstieg in die Rätselcaches, die mir bisher, durch Mangel an Kontakten in der Geocacher-Stammtischrunde (fühle mich dort ein wenig wie ein Windows®-Nutzer beim Linuxstammtisch…), sich nicht erschlossen.

Außerdem bin ich gerade, auf Basis der, an einer „MirKarte“ am basteln, die einfach nur eine Google-und-OSM-Karte, die auch in älteren Browsern wie Opera 9 funktioniert, ist (relativ statisch, aber mit einigen Features wie der supergenialen Anzeige der Koordinaten unterm Mauszeiger). Bin noch nicht fertig, da ich mein ECMAscript erst auffrischen muß und auch die Maps-API-Dokumentation nochmal lesen will, aber immerhin. (Außerdem mag ich minimalen Code, und was ich bisher habe ist bloated. Und buggy.)

Vielleicht weiß man auch meine Beiträge zu den ganzen Open Source Projekten zu schätzen?

( scheint down zu sein, und weder die neue neue noch die neue alte GC.COM-Karte tun im Opera… somit kann ich im Moment sowieso, von CacheWolf und Umkreissuche mal abgesehen, nur nach OC-Caches Ausschau halten.)

So, dann mal Gruß nach Franken aus der Eifel. Ich werde auch den Franken, die ich kenne, den GAV-Button nahelegen.

benz’ wedding, fun before

24.10.2011 by tg@
Tags: debian event fun

My dear MirBSD co-developer Benny did not only get his Doctor title but also recently married. There will be another post detailing this, including better photos of the two Doctors and the cake (with a Dæmon she made herself) on the wlog, but this is some fun beforehand:

No GPL cars!

Apparently, it is forbidden in France to drive GPL cars. (Without safety valve – but you have to admit the picture was fun. And we were like WTF? since the thing actually meant is LPG in German. Just like UTC is CUT (Coordinated Universal Time) in English, TUC (Temps Universel Coordonné) in French…)

I’m also working on improving our xterm(1) and GNU screen config, and other things. Explaining acronyms on our webpages is also coming some time. Benny is importing weird stuff from TNF for better pkgsrc® support, so there is activity. Just we’ve got dayjobs and a life… and mksh(1) still rocks (pdksh got orphaned in Debian today).


06.10.2011 by tg@
Tags: debian pcli rant tip

Would MTAs please stop sending hi-bit7 messages to other MTAs which do not advertise 8BITMIME! Recode it to QP or BASE64, damnit! The receiving MTA is entitled to strip the set bit7, which kinda makes things hard to read (while I know how to deal with blvde Stra_e, the advent of UTF-8 makes that blC6de StraC?e, introduces C0 control characters and makes typographic quotation marks into NUL-containing octet sequences (as their UTF-8 representation contains 0x80 octets) which let every sensible MDA terminate the line there). I even filed in the Debian BTS against the BTS (might be Drexim's fault, though).

Would MUAs please default to Quoted-Printable!

And mail hosters should use the same server when retrying delivery, to benefit greylisting. Or at least publish a list of outgoing IPv4 addresses they use for sending. Or use IPv6. Oh, and STARTTLS, while we are on my wishlist.

It's a sad day when the percentage of correctly encoded eMail messages in my INBOX is smaller than that of my Spambox...

Improvements welcome

30.09.2011 by tg@
Tags: debian tip

No I don’t really know any SQL. In fact, even at vocational school, where we focussed on database normalisation anyway, I tried hard to avoid the topic. Feel free to access here my entire knowledge about SQL ☺ (I did use Amaya, Arena and Arachne though. Liked only Arachne out of these three, and then, only under DOS, not its Unix version. Maybe the WWW could be named AAA instead? But then, lynx(1) is the one true browser…)

Ah, well. While at it… the entirety of my Perl knowledge is here: perltoc(1) with quick links to perlfunc(1).

The entirety of my (X)HTML and ECMAscript knowledge, DE: SELFHTML; although, the spec and DTD helped; and to write my notes on JSON, I took a peek at the formal ECMAscript spec as well… à propos, does anyone know a (good enough) indent(1) equivalent for ECMAscript, as I am trying to strip down some, inherited (GPL, yes) code for a hobby project, but Geo-people seem to produce illegible code?

pkgsrc frozen

20.09.2011 by bsiegert@
Tags: pkgsrc

So the pkgsrc tree has been frozen in preparation for the 2011Q3 release. I managed to sneak in a few interesting commits just after the deadline *cough*. Firstly, Python 2.6 and 2.7 now build fine. The corresponding Python bug was marked wontfix though—even though it only touches six lines or so. Apparently they have a policy not to support what they call “marginal platforms” even when people submit them patches. Compare to perl, where more changes were required, but they were all committed upstream, and all new releases support MirBSD out of the box.

The second change concerns X11. Many new packages want to have X11R7 and/or xcb libraries, which our X11 does not provide. Thus, after a some discussion on tech-pkg, I switched the MirBSD platform to modular X libraries. This means that libX11 etc. are built as packages inside pkgsrc instead of relying on /usr/X11R6. If you already use pkgsrc, you might need to recompile X11-using packages after this change, or use pkg_rolling-replace. Incidentally, I had to fix a few bugs in libX11 ;).

The final thing concerns the texlive packages, which should all be working now. They were using pax -rw to copy files around without creating the destination directory first. This is an error condition in paxmirabilis, and it should also be elsewhere. For example, pax in Darwin accepts it although the manpage says otherwise. Strange.

Our MirBSD online manual pages and other assorted BSD documentation (except of course the merely copied ncurses, lynx etc. documentation and the texinfo generated HTML pages) has just gained a major facelift. They look alike in lynx(1) – best web browser ever – and less(1)/man(1) now, and remind of a DEC VT420 on a CSS capable Buntbrause.

Thanks to our contributor XTaran for aid with the colour scheme!

Since these are generated from catmanpages, heuristics are used for things like where should bold/underline begin/end (since nroff(1) is not always the brightest… but working on that), and hyperlinks can only be generated for other manpage references (whose targets may or may not exist, for example if they aren’t part of MirOS base/XFree86®). But on the other hand, Valid XHTML/1.1 and CSS speaks for itself ☻☺

All 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

MirOS Logo