Hydra gen molecule#
Mon, 30 Jul 2018 23:48:15 +0000
Two things this week
1. I got hydra running on my build machine, so I can start doing regression tests now that things work well enough that I ought to worry about breaking them. (Note cavalier insertion of "ought to" in the preceding sentence)
Provided you are running Nixos, this is easier than you'd think from
looking at the Hydra manual, because there is a Nixos module for it.
First, add this or something like it to your configuration.nix
and rebuild
services.hydra = { enable = true; hydraURL = "http://${hostname}:3000/"; notificationSender = "dan@telent.net"; buildMachinesFiles = []; };
Second, reboot, or logout and login, or ensure in some other way that
your shell has sourced the HYDRA_*
variables which the previous step
added to /etc/profile
. Otherwise step 3 will fail to do what it
should do and the error messages will be entirely unhelpful
[dan@loaclhost:~]$ grep HYDRA /etc/profile export HYDRA_CONFIG="/var/lib/hydra/hydra.conf" export HYDRA_DATA="/var/lib/hydra" export HYDRA_DBI="dbi:Pg:dbname=hydra;user=hydra;"
Third, refer to the instructions in the Hydra
manual starting
where it says to run hydra-init
then hydra-create-user
. The
previous steps were already done by the module. Also, there are
systemd services to run the server, the evaluator and the queue
runner, so ignore anything that says you should start them by hand.
Note the empty array for buildMachinesFiles
- this was important on
my machine and probably is important on yours too. If you don't have
it, when eventually you get all your projects and jobsets apparently
working properly and evaluating without error, you will find that the
jobs sit in the queue and never get run, because something something
bad defaults no queue runner machines something something.
Things I read wherein I found the solutions to my problems:
- https://gist.github.com/joepie91/c26f01a787af87a96f967219234a8723 how to set it up as a module
- https://github.com/NixOS/hydra/issues/430 why the empty buildMachinesFiles
My Hydra instance is private and destined to remain so, at least for now.
2. Some refactoring of the kernel derivation into three parts: unpacking the tree and applying LEDE/OpenWRT patches; building vmlinux; and applying the DTB and making a uImage. I think this is an improvement: it will certainly make a few things (like running qemu, or changing the command line) more convenient, but I'm not sure I have it exactly right yet.
My current TODO list: as you will see, everything that has happened recently has been procrastination on the top goal.
- in-place upgrade
- kexec boot
- boot current kernel with extra memmap reservation
- when memmap space detected, copy rootfs into it and boot new kernel with phram root
- kexec boot
- make nandwrite work
- DONE split kernel derivation into generic kernel / dtb + uimage
- make backuphost actually work on mt300n
- make pppoe work
- DONE CI build (hydra?)
- make resolv.conf from dhcp not copied from build system