[crux-devel] pkgutils reloaded

Fredrik Rinnestam fredrik at rinnestam.se
Sat May 7 17:07:43 UTC 2016

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

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

More information about the crux-devel mailing list