Sorry for the very delayed response! On Fri, Apr 22, 2016 at 07:29:19PM +0900, Alan Mizrahi wrote:
You are aboard a transatlantic flight on a packed A380, and the chicken served for lunch was tainted. Of course, none of the pilots wanted the pasta, so there is no one left to guide the plane anymore!
Fortunately, the last act of bravery from the last pilot was to start the autopilot computer before colapsing, and as everybody knows, the autopilot software of Airbus is based on CRUX (tm).
But not all is roses: the engineers forgot to run revdep before the last update, so the computer is running but the software has to be rebuilt urgently, before the plane goes down!
As the only passenger familiar with CRUX [1], suddenly the lives of everybody on the plane are in your hands!
You locate the port and fire up pkgmk, but after 4 minutes the build process fails. You quickly find out it built correctly, but the last "rm -r $PKG/usr/share/info" command failed. You comment that line, and run pkgmk again.
As everybody knows, pkgmk has to start the build process from the beginning, taking up 4 more minutes of valuable time.
If only pkgmk had a "--pack-only" option, you could have used it to just generate the package without rebuilding, start the autopilot and become a hero. Of course, this option would be much better if pkgmk automatically kept the work directory whenever the build fails.
Fear no more, as this patch [2] for pkgutils implements both features, and some more.
This allow you to save time and CPU cycles for long builds that fail, by finishing the build process manually, and then creating the package easily, instead of starting from scratch, or creating the package by hand.
1. set PKGMK_KEEP_WORK="failed" in /etc/pkgmk.conf, or use --keep-work=failed 2. pkgmk 3. Oops, something went wrong. Fix it manually. Make sure everything is in $PKG. 4. pkgmk --pack-only
Here are all the changes implemented by this patch: 1. creates missing source, package and work directories automatically 2. prevents the creation of empty packages 3. detects number of CPUs and sets MAKEFLAGS accordingly 4. makes command-line options take priority over pkgmk.conf options 5. adds a DEBUG variable to build debug versions of packages easily: sudo -u pkgmk DEBUG=1 fakeroot pkgmk 6. adds an option to keep work directory only if the build fails: /etc/pkgmk.conf: PKGMK_KEEP_WORK="failed" 7. adds --pack-only, to just pack files in $PKG without building
I think 2 and 4 could be considered bugs. And we should also make curl the default download program (instead of wget).
Any opinions on these changes?
I'm not sure I like #3 at all. I always have my MAKEFLAGS set intentionally. But for your average airline passenger is might be useful. I think I might actually love #5 :) I'm sure José would love #6 and #7 - chromium and qt4 are horrible to build :)
I also made a patch for prt-get, but I haven't the story for that one yet ;)
Cheers!
Alan
[1] I admit this part is a bit far fetched, since CRUX is widely popular, but I like the drama.
[2] http://www.mizrahi.com.ve/crux/pkgs/pkgutils/pkgutils-alan-8.patch
-- Fredrik Rinnestam