OpenBSD Journal

a2k19 Hackathon Report: Antoine Jacoutot on ports, syspatch(8), and more

Contributed by rueda on from the do devices hotplug counterclockwise down under dept.

We are delighted to have received an a2k19 hackathon report: Antoine Jacoutot (ajacoutot@) writes:

Better (very) late than never… here's my small report about my a2k19 hackathon slacking time in Wellington (NZ).

The "Antipodean" hackathon they call it. Indeed, it took me 28h to get there from Paris via Singapore! Fortunately, I met with phessler@ and cheloha@ right on arrival at the airport. From there we went directly into town to visit the different bars with mlarkin@ as our guide :-).
The challenge was to find a way to keep us awake (12h of jet lag for me), and going around 6 different bars did the trick :-)

I started the hackathon by finalizing the GNOME update to version 3.30.2 which jasper@ and I started a couple weeks before. It looks like whatever hackathon I attend to, there's always some GNOME related stuff to handle… oh well. I also reworked the meta/gnome package dependencies to somewhat match the upstream gnome-build-meta repository (using the core + world list). Speaking of GNOME, I met with this nice native guy:

For me hackathons are great to work on things I really never like to work on :-) This week it was consolekit and polkit. I implemented ck_system_can_suspend and ck_system_can_hibernate in consolekit and added arm64 support. I also added default polkit rules to consolekit so that the reboot, shutdown, suspend and hibernate actions match the OpenBSD defaults. For instance, a member of the "operator" group can halt and reboot or one needs to authenticate as a privilege user. A member of the "wheel" group can suspend and hibernate etc. Following this work, I was able to implement inhibit and suspend support in gnome-shell (by using the ConsoleKit manager instead of login1 from systemd). For those wondering about "inhibit", here's what the Consolekit2 documentation has to say about it:

Inhibit locks are named pipes used by ConsoleKit2 to prevent the system from performing actions such as suspending, restarting, or going idle. There are various reasons and application would like to prevent one or more of these functions such as a movie player preventing the screen saving from activating or a package manager ensuring an application installs before allowing the computer to shutdown.

Still somewhat related to the "kits", I resurrected my sysutils/toad port. toad(8) (Toad Opens All Devices) is a utility meant to be started from the OpenBSD hotplugd(8) attach and detach scripts. It will try to mount all partitions found on the device under /run/media/username/device. Where username is the active user login name and device is the type of the device: usb or cd, followed by its number (from 0 to 9). This follows the udev hierarchy in Linux which allows interaction with GLib/GIO's GUnixMount. It works by creating on-the-fly polkit(1) rules.

Then claudio@ approached me with a weird issue in rc.d(8) and relayd_flags. He was using the following in rc.conf.local(8): "relayd_flags=-D """ which didn't quite work because the shell would strip the quotes when starting a daemon and so "pexp" (which is used by pgrep(1) and pkill(1)) would not match the process anymore (since it doesn't include the quotes). After a few iterations, this was fixed in rc.subr(8).

I also fixed a couple of things I noticed in syspatch(8) and didn't have time to look at yet. When it updates itself, syspatch(8) is supposed to stop so you can run it again with the new code. It turned out this wasn't working properly because the return code was wrong.
The utility will now tell you to reboot if your kernel was updated and to look under the /var/syspatch/ directory if you want more information about the installed errata (in there you can find the original cvs(1) diff).
At last and this request came from deraadt@, during the first boot of a newly installed machine, syspatch(8) will output the list of missing patches (if any). It turns out that this list can get long, which means it could overflow the display during boot. While you can access this buffer after boot using the "dmesg -s" command, it's ugly on the eyes :-) So it's now piped into col(1) and should at most take 3 lines.

Other than that, I did the usual flow of ports updates all over the tree, fixed a few things here and there (drop some warnings in x11/gnome/mutter about not having gudev to prevent filling logs with no so useful info). Updating WANTLIB in net/gnauthy being the highlight of this week ;-)

Thank you very much to procter@, the Victoria University of Wellington and The OpenBSD Foundation for organizing this event. Accomodations and hackroom were excellent and I had, as usual, a fantastic time!

Thanks very much for the [work and] report, Antoine!

(Comments are closed)

  1. By Edward Ahlsen-Girard (Ed) on

    My technique for jet going east is drink 3 to six beers and go to bed. Awaken next morning local ready to go.

    Going west, got nothing.


Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]