NAME
CPAN::Checksums - Write a "CHECKSUMS" file for a directory as on CPAN
SYNOPSIS
use CPAN::Checksums qw(updatedir);my $success = updatedir($directory, $root);
INCOMPATIBILITY ALERT
Since version 1.0 the generation of the attribute "shortname" is turned off by default. It was too slow and was not used as far as I know, and above all, it could fail on large directories. The shortname feature can still be turned on by setting the global variable $TRY_SHORTNAME to a true value.
DESCRIPTION
- $success = updatedir($dir[, $root])
-
$diris a directory. Updatedir() writes a"CHECKSUMS"file into that directory, unless a previously written"CHECKSUMS"file is there that is still valid. Returns 2 if a new"CHECKSUMS"file has been written, 1 if a valid"CHECKSUMS"file is already there, otherwise dies.If
$rootis given, the hash entry with the key"cpan_path"is relative to this root directory.Note: since version 2.0 updatedir on empty directories behaves just the same. In older versions it silently did nothing.
Global Variables in package CPAN::Checksums
- $IGNORE_MATCH
-
If the global variable
$IGNORE_MATCHis set, then all files matching this expression will be completely ignored and will not be included in the CPAN"CHECKSUMS"files. Per default this variable is set toqr{(?i-xsm:readme$)}
- $CAUTION
-
Setting the global variable
$CAUTIONcauses updatedir() to report changes of files in the attributes"size","mtime","md5", or"md5-ungz"to STDERR.
- $TRY_SHORTNAME
-
By setting the global variable
$TRY_SHORTNAMEto a true value, you can tell updatedir() to include an attribute"shortname"in the resulting hash that is 8.3-compatible. Please note, that updatedir() in this case may be slow and may even fail on large directories, because it will always only try 1000 iterations to find a name that is not yet taken and then give up.
- $SIGNING_KEY
-
Setting the global variable
$SIGNING_KEYmakes the generated"CHECKSUMS"file to be clear-signed by the command specified in$SIGNING_PROGRAM(defaults to"gpg --clearsign --default-key "), passing the signing key as an extra argument. The resulting"CHECKSUMS"file should look like:0&&<<''; # this PGP-signed message is also valid perl-----BEGIN PGP SIGNED MESSAGE-----Hash: SHA1# CHECKSUMS file written on ... by CPAN::Checksums (v...)$cksum = {...};__END__-----BEGIN PGP SIGNATURE-----...-----END PGP SIGNATURE-----note that the actual data remains intact, but two extra lines are added to make it legal for both OpenPGP and perl syntax.
- $MIN_MTIME_CHECKSUMS
-
If the global variable
$MIN_MTIME_CHECKSUMSis set, then updatedir will renew signatures on checksum files that have an older mtime than the given value.
PREREQUISITES
DirHandle, IO::File, Digest::MD5, Digest::SHA, Compress::Bzip2, Compress::Zlib, File::Spec, Data::Dumper, Data::Compare, File::Temp
BUGS
If updatedir is interrupted, it may leave a temporary file lying around. These files have the File::Temp template "CHECKSUMS.XXXX" and should be harvested by a cronjob.
AUTHOR
Andreas Koenig, [email protected]; GnuPG support by Autrijus Tang
COPYRIGHT & LICENSE
Copyright (c) 2002-2008 Andreas Koenig, Audrey Tang, Steve Peters.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.