Contributed by pitrh on from the dragons or cogwheels dept.
I came to hackathon with a short but heavy TODO list:
1. Finish KDE 4.13.2 and prepare 4.13.3 (official announce to be done Jul 15);
2. Import at least some stuff from semi-official openbsd-wip ports repository to official CVS;
3. Fix the long-standing issue with kded4 constantly eating CPU;
4. Continue hacking on Samba 4.x;
5. Enable ext2fs in RAMDISK_CD for amd64.
6. Put in CVS some stuff under ports/infrastructure/ I've developed for last months.
7. Put in CVS the man-pages-posix port.
But in fact hackathon starts from meeting people you didn't met before. Given that the only OpenBSD event I was before was EuroBSDCon 2013, there were many new faces. I'm afraid that I didn't remembered everyone at once, but that's not because I don't respect them or their work and just due to my shortcoming. :)
So the hackathon started. Both me and kirby@ - another OpenBSD porter from Russia - sat in front of each other. And this was very helpful - he helped me with testing ext2fs kernel build and gave an idea about libinotify (see below), and I helped him in updating rawtherapee port.
My first hackathon commit was importing books/man-pages-posix port. This is a handy tool for developers, I received some positive feedback even before the port was imported. But this was not my work - a lot of invaluable input was given by schwarze@ and others. I learned many new things about mandoc, groff and pkg_create magic while working on this port. But, again, this was just for starting.
Most of the time I was sitting and doing four things, though: running make, tweaking patches, pushing them upstream and spamming landry@ with new ports. I should thank him again for his patience in this process. Thanks to his reviews we now have the following KDE4 software: Calligra suite, Digikam, K3b, Kdenlive, KDevelop, KMyMoney, KTorrent, Tellico and Yakuake (together with a couple of their dependencies like Eigen 3.x).
The only KDE4 ports left in WIP repository is audio/cantata: it has somewhat wry KDE4 integration layer, so I quickly loose interest in spending time on it, given number of audio players out there, including KDE ones. I hope Rafael Sadowski, who assisted me many times, don't feel offended. :)
The KDE 4.13.2 update part is boring and uninteresting. You have 200+ ports, you type 200+ times "make configure update-plist port-lib-depends-check package clean", you push some patches upstream, you're done. That's all. Really. Hard parts were initial work and making KDE3 and KDE4 co-exist; maintaining KDE4 is not that hard.
And then came a really interesting part related to kded4. If you're not aware of details, here they are. kded4, which stands for "KDE 4 Daemon", is an app started (usually) by kdeinit - i.e., either at the beginning of KDE session or together with first KDE app you run during any X session. This daemon hosts so-called KDE modules - if you seen services.exe on Windows, you'll get the idea, it's almost the same. Also, another function of kded4 is monitoring of system configuration files, especially MIME-related .desktop ones. When you install/configure/deinstall application, .desktop files are tweaked, either system ones (under /usr/local) or your personal (under $KDEHOME). Many programs, especially different desktop widgets (read: KDE menu and similar), are interested in notifications about such changes. Thus, kded4 monitors a couple of directories for addition/modification/removal of .desktop files.
This process was very ineffective on OpenBSD. And the reason is that kded4 internally uses KDirWatch, which defaults to inotify-based mechanism on Linux and to QFSWatch-based mechanism on other systems. It also supports FAM, but I already tried to use the latter once and I was unsatisfied. I started to think about implementing kqueue backend, and at this time I remembered kirby@'s work on getting in libinotify. Which is actually what I wanted - an inotify API based on kqueue. So I wrote a FindInotify.cmake which should work on both Linux and non-Linux OSes, tweaked a few #ifdef's in the code, rebuilt kdelibs... and here we are! kded4 checks files at startup and the remains totally silent!
Even more, this also helped to stop akonadi_maildir_resource eating CPU as well - it looks like, they suffered from the same problem. Two problems gone for the price of one! So libinotify was a really good deal. :)
Other things I finished at hackathon, were:
* New portbump(1) utility for port developers, in conjuction with sqlports it could save a lot of time on massive updates.
* Addition of TEST_ENV and ALL_TEST_ENV variables to bsd.port.mk: TEST_FLAGS was not enough because some ports, like CMake-based (read: using Ninja) ones won't understand TEST_FLAGS at all
* Documentation for devel/cmake and x11/kde4 modules. I don't plan to document x11/kde module because noone is developing for it anyway, and there are enough people already knowing it well to maintain existing KDE3 ports.
Unfortunately, I didn't got time to hack on Samba4. There are tricky problems involving ld.so and compiler internals which I hoped to manage at hackathon, but you can't have it all at once. And KDE was my priority anyway.
On the bright side, I was involved in some discussions and tested a few patches flying around. And even in case of errors it made me happy that I can help other OpenBSD developers directly, which is usually problematic in my day life.
In conclusion, I want (need, should) thank Mitja Muženič & and Dijaski dom Tabor for hosting this wonderful event. It was my first hackathon and it's amazing how much stuff happened in a few days. And Ljubljana is such a lovely place... But I hope someone who knows English better than me would portray this cozy city and people there. Everything were excellent - thanks, thanks and thanks again!
(Comments are closed)