PCA

Feature patches for Patch Check Advanced.

I've written a few patches for Martin Paul's excellent Patch Check Advanced. The most useful, perhaps, and least trivial, is the one implementing multi-threaded patch download, affording excellent decreases in download waits for those of us who haven't taken the time to set up a pca proxy. This was integrated into PCA in revision 20080507-01. Many, many thanks must go to Martin Paul for his ongoing efforts, and for being such a stand-up guy. What do you know, it took less than a week to spot the first (and so far only) bug. That's after more than a year of use of the patch in the wild. Big audience equals lots of beta-testers. I'm as bad as Sun. The bug was non-fatal thankfully, and quickly resolved.

Less generally useful, perhaps, is the --stop patch, which Martin integrated long ago, allowing the user to choose a patch after which PCA must stop applying further patches. I found this useful for application of kernel jumbo patches, which I like to reboot immediately, and I mean immediately, after applying.

Finally, and perhaps not useful to anyone in particular, a logical next step after PCA's --minage option, which allows the user to ignore any patch less than the specified age. This option, combined with the --safe and --noreboot options, opens the door to automated, unattended patch application; all that seems to be missing is an emergency brake, to stop PCA in its tracks should a patch installation fail.

I don't expect to ever integrate this into PCA, I haven't even asked. But it's here, in case you want to play with it.

This patch implements two new options:

  • --ifails=NUM
    number of failed patch applications to tolerate
  • --isucceeds=NUM
    number of successful patch applications to tolerate

For example, the following makes a fairly safe crontab entry — only a dozen patches applied per night, nothing hot off the press, no further installations after the first failed patch:

pca --install --noreboot --safe --minage=9 --ifails=1 --isucceeds=12

Here's a patch against PCA v5.5:

  • pca_af.patch - to be applied to the pca script;
    MD5 (pca_af.patch) = e9ba68c223d78543967be7248c4cfde3