NAME

Porting/sync-with-cpan - Synchronize with CPAN distributions

SYNOPSIS

perl Porting/sync-with-cpan <module>

where <module> is the name it appears in the %Modules hash of Porting/Maintainers.pl

DESCRIPTION

Script to help out with syncing cpan distros.

Does the following:

  • Fetches the package list from CPAN. Finds the current version of the given package. [1]

  • Downloads the relevant tarball; unpacks the tarball. [1]

  • Clean out the old directory (git clean -dfx)

  • Moves the old directory out of the way, moves the new directory in place.

  • Restores any .gitignore file.

  • Removes files from @IGNORE and EXCLUDED

  • git add any new files.

  • git rm any files that are gone.

  • Remove the +x bit on files in t/

  • Remove the +x bit on files that don't have it enabled in the current dir

  • Restore files mentioned in CUSTOMIZED

  • Adds new files to MANIFEST

  • Runs a make (assumes a configure has been run)

  • Cleans up

  • Runs tests for the package

  • Runs the porting tests

[1] If the --tarball option is given, then CPAN is not consulted. --tarball should be the path to the tarball; the version is extracted from the filename -- but can be overwritten by the --version option.

TODO

  • Delete files from MANIFEST

  • Update Porting/Maintainers.pl

  • Optional, run a full test suite

  • Handle complicated FILES

This is an initial version; no attempt has been made yet to make this portable. It shells out instead of trying to find a Perl solution. In particular, it assumes git, perl, and make to be available.