From fredrik at rinnestam.se Sat May 7 17:07:43 2016 From: fredrik at rinnestam.se (Fredrik Rinnestam) Date: Sat, 7 May 2016 19:07:43 +0200 Subject: [crux-devel] pkgutils reloaded In-Reply-To: <5719FCFF.5050804@mizrahi.com.ve> References: <5719FCFF.5050804@mizrahi.com.ve> Message-ID: <20160507170743.GA26385@zoidberg.lan> 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