A lot has happened since my last report. I decided to spend some time working on stabilizing both Haiku and the packaging system, and so I am closer to having full builds & HPKR generation, but I’m not quite there yet.
It’s been two weeks since my last report, as I wasn’t working full-time these past two due to some outside appointments and other conflicts. I’ll be back to working full-time next week. Despite this, I managed to make a lot of progress on a number of fronts.
After I took last week off for vacation, this week went very well. HaikuPorts has been migrated to GitHub, many corner cases related to HaikuPorter have been resolved, and most of the infrastructure issues that were directly related to setting up the package build server are gone. HaikuPorts has, for the last few years, been living on Bitbucket. However, Bitbucket's integration with other services (e.g. Travis CI), overall interface, and code review system isn't as good as GitHub's.
As mentioned in last week's report, I planned to work on integration with IRC to allow the developers to get real-time updates on what the builder was doing, finishing the documentation, and then working on the logic that actually builds packages. The first two of the three are pretty much done, and the last one I did get started on. So this week went pretty well. The IRC integration that I wrote is pretty simple right now.
This week was just as productive as last week. I did start on the builds logic, which now can run "builds" (lists of commands) in sequential order. I also improved the builder management system, and created documentation for pretty much everything. Let's start with the builds logic: At the end of last week, there was none of it at all. Implementing that took a good portion of this week, as it involved adding support for running arbitrary commands on the builders, managing a sequential list of commands to run, starting a build only when a builder goes online and is fit to run the build, storing the currently running command, start time, elapsed time, build status (pending, running, failed, succeeded), command output, and displaying all of this information in the web interface.
This week was rather slow: I've logged only 18 hours of contract time this week. I expected this, partly because I didn't expect to do any work on Monday (as mentioned in my first blog post) and partly because I still had some coursework to finish up the semester with. But despite that, I got a ton of stuff done, and the foundations for the following weeks' work are well laid.
Anyone following the "haiku-inc" ML will have noticed that I've been approved to spend 240 hours (around 6 weeks of full-time work) on Haiku's packaging infrastructure. This mostly means I'll be working on the package building system, which will manage the "HaikuPorts" package repository, ensuring it's up-to-date across architectures (and later, across both nightly & release builds). As those who have been paying close attention to IRC may already know, Alexander already has created a prototype server & client in Ruby.
tracker_layout — the (semi)famous branch that rewrites Tracker to use the Layout Kit — has been merged. This means that Tracker is no longer using the old B_FOLLOW_*-based system for resizing views, which makes for much cleaner code that's easier to read and understand. Alexandre Deckner initially did this in 2012, but due to refactors and other changes to Tracker since then, as well as some compatibility issues with his method, it wasn't possible to merge his code.