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])
-
$dir is a directory. Updatedir() writes a
CHECKSUMS
file into that directory, unless a previously writtenCHECKSUMS
file is there that is still valid. Returns 2 if a newCHECKSUMS
file has been written, 1 if a validCHECKSUMS
file is already there, otherwise dies.If $root is 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_MATCH is 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 $CAUTION causes updatedir() to report changes of files in the attributes
size
,mtime
,md5
, ormd5-ungz
to STDERR. - $TRY_SHORTNAME
-
By setting the global variable $TRY_SHORTNAME to 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_KEY makes the generated
CHECKSUMS
file to be clear-signed by the command specified in $SIGNING_PROGRAM (defaults togpg --clearsign --default-key
), passing the signing key as an extra argument. The resultingCHECKSUMS
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_CHECKSUMS is 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, andreas.koenig@anima.de; 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.
SEE ALSO
perl(1).