'Packaging Infrastructure' Contract Weekly Report #2
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.
But after implementing most of that, I had no way to test it as the builder manager didn't yet create and update HaikuPorts and HaikuPorter trees on the builders, so I set out to create that logic. I reused the arbitrary-command-running system to implement that, and modified the event system to fire the "builder connected" event only after the builder manager had verified there was an up-to-date, working HaikuPorts tree on the builder. (If there wasn't and it couldn't set one up, or there was and it was broken in some way, it bails out and marks the builder as "broken".)
After implementing that logic, though, I still wasn't "at the bottom of the rabbit hole", as the system could create and run builds but had nothing to actually do that would require them. So I went back to the HaikuPorts tree manager module (that manages the server's HaikuPorts clone) and implemented functionality that enabled it to notify the core controller module when recipes have changed (after a
git pull), and then had the core controller use that to create a build that would lint (or re-lint) those recipes. After the usual rounds of bugfixing and refactoring, the system worked, and it properly creates builds and runs those commands on a builder. Those who have been paying attention to the logs of the #haiku IRC channel will have spotted my "mini visual progress reports" containing screenshots of the web interface. For the sake of those who don't use IRC, here they are again:
After documenting the source code, I moved on to documenting the design of the system, as well as creating instructions for anyone trying to run it. These can now be found in the docs directory of the GitHub repo.
For the upcoming week, I plan to work on integration with various services (IRC, etc. so that developers can feed it commands) and then actually building packages (on a single machine, in dependency order). See you all then!
- Haiku activity report - May 2020
- GSoC 2020 Project Update: XFS
- GSoC 2020 Project: Improving and Extending Services Kit
- Progress report of community bonding period
- GSoC 2020 Project: Adding XFS file system in Haiku
- GSoC 2020 Project: Input Preferences
- GSoC 2020 Project: Adding UFS2 file system in Haiku
- Haiku activity report - April 2020
- Haiku activity report - February and March 2020
- Haiku field trip report - January 2020