NAME patchaperlup - apply a couple of patches in a perl source directory SYNOPSIS patchaperlup --perldir perldir --diffdir diffdir [ --start patch-number ] [ --upto patch-number ] [ --quiet ] [ --version ] DESCRIPTION This utility runs a batch of jobs that upgrade a recent development perl with selected patches to produce a recent development snapshot of perl. The status of this script is alpha as the applicability of the assumptions about where the current patches are, how they are named and treated, etc. are unstable. The script is only reflecting current practice which is subject to change without notice. How to get at the patches is described in the perlhack manpage. Be careful though, Sarathy posted a recommendation: From: Gurusamy Sarathy Subject: Re: rsync'ed patches vs. rsync'ed source Date: Wed, 01 Nov 2000 09:58:08 -0800 I'd strongly recommend sticking with rsync. The rsync mirror is automatic and syncs with the repository every five minutes. Updating the patch area still requires manual intervention (with all the goofiness that implies, which you've noted) and is typically on a daily cycle. Making this process automatic is on my tuit list, but don't ask me when. I take it that for the real recent perl of the day, you should use rsync to the perl-current area, but if you want to track down when a bug was introduced or fixed, the patch repository is the natural choice. When you have unpacked a recent perl, patchaperlup should be run as perl patchaperlup --perldir perl5.5.660 --diffdir diffs "patchaperlup" checks which highest numbered patch has already been applied to the perl in the "perldir". The --upto argument defaults to the highest numbered patch in the directory given by the --diffdir argument. The --start argument defaults to the last patch referenced in the Changes file in the untarred perl sources. The batch job is pretty verbose and explains what it is doing. The reason for the verbosity was that it can take a while until "patchaperlup" is finishing. Verbosity can be turned off with the --quiet switch and increased with the --verbose switch. "patchaperlup" prints a few mail-header-like lines to standard output, namely Version: version of patchaperlup Perldir: perl directory Diffdir: directory containing the patches Firstpatch: number of the first applied patch Lastpatch: number of the last applied patch The --version switch prints the version and exits. EXAMPLE The following shell script built today's perl and stuffed it into a directory of its own. Please fill in your own path to DEVPERL. DEVPERL=perl-5.7.0 tar xzf /path/to/devperl/$DEVPERL.tar.gz rsync -avz rsync://ftp.linux.activestate.com/diffs diffs patchaperlup --perldir $DEVPERL --diffdir diffs > patchaperlup.out LPATCH=`awk '$1=="Lastpatch:"{print $2}' patchaperlup.out` mv $DEVPERL $DEVPERL@$LPATCH cd $DEVPERL@$LPATCH && ./Configure -des && make test If all patches from the APC are merged into a single diffs directory, it is possible to run the above example with any DEVPERL from 5.005_58 upwards. At the time of writing, there were some tiny patch problems if you do that. I'm planning to special-case them so that patchaperlup does not report unnecessary errors. PREREQUISITES The programs "zcat" and "patch" must be in your path. Likewise "perl" must be available in the path to run the utility "patchls" which can be found in recent perl distributions. AUTHOR Andreas Koenig