The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changes in 2.01
---------------

General

 * Modified a few things that required Perl 5.005, so it now runs
   under 5.004.

 * Calculate separate checksums for the patch data and the whole patch
   file. Do not complain if the checksum for the patch file is wrong,
   if the checksum for the patch data is okay.
   This allows modification of the preamble of the patch file without
   affecting the integrity checking mechanism.

 * Restructured the files in the kit, and added a test program.

 * A warning is given when installing on Solaris, since the 'patch'
   program on Solaris (at least the versions I have access to) is
   buggy to the extent that it is unusable.

Makepatch

 * Some systems need to set environment variable TMPDIR (or TEMP) to
   designate a location for temporary files.

Overall changes in makepatch version 2.0
----------------------------------------

General

 * The makepatch package now consists of two programs: 'makepatch' and
   'applypatch'. 'makepatch' generates the patch kit (using the 'diff'
   program), 'applypatch' applies it (using the 'patch' program).

Makepatch

 * To avoid most common problems with buggy versions of the 'patch'
   program, the patch data is relocated to the current directory. 
   This obsoletes the command line options -fixpath and -fixallpath.

   As a consequence, when a patch is generated from two directories,
   e.g.:

     makepatch src-1.0 src-1.1 > the-patch

   it must be applied *IN* the directory src-1.0, e.g.

     cd src-1.0; applypatch the-patch

   When fed to patch directly, no -p option should be used:

     cd src-1.0; patch < the-patch

 * (Initial) program options can be specified in environment variable
   MAKEPATCHINIT, and in preferences files /etc/makepatchrc,
   $HOME/.makepatchrc and ./.makepatchrc. The latter file name can be
   overridden with a '-rcfile' option in MAKEPATCHINIT.

 * Makepatch can take standard source archives (.tar.gz, .tar.bz2,
   .tar or .zip) as input instead of the sources directories.
   The -extract command line option can be used to change or add
   extraction rules.

 * MANIFEST files are automatically used unless suppressed with the
   new -nomanifest option.

 * Files can be excluded from the process with the new command line
   options -exclude, -exclude_regex, -exclude-vc.

Applypatch

 * The generated patch kit is the concatenation of
    - a shell preamble;
    - the actual 'patch' input;
    - a data section for 'applypatch'.

 * When applied through 'applypatch', the patch kit will be
   extensively verified for integrity. Heuristics are applied to the
   current directory to verify that it is indeed the expected source
   directory. This directory is prepared for the patching, i.e. new
   files and directories are created if required. Next, the patch data
   is passed to the 'patch' program for the actual patching. Finally
   file modes and timestamps are adjusted.

   Example:
     applypatch -d src-1.0 the-patch

 * When the patch kit is run as a shell script, it will prepare the
   current directory by creating / removing files and directories as
   required. The patch kit should then be fed to the 'patch' program.

   Example:
     cd src-1.0; sh < the-patch; patch < the-patch

 * When the patch kit is fed to the 'patch' program, the files in the
   current directory will be patched. If the directory has not been
   prepared (e.g. by running the kit as a shell script) the results
   will very much depend on your 'patch' program.

   Example:
     patch -d src-1.0 < the-patch