NAME

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

SYNOPSIS

sh ./Configure
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

  • Updates the contents of 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.

OPTIONS

--jobs N

When running make, pass a -jN option to it to enable parallel building.

Note that you can also set TEST_JOBS=N in the environment to enable parallel *testing* on top of parallel *building*.

--yes

Just continue at all places where we would normally ask for the user to hit enter or hit CTL-C, with the exception of cases related to CUSTOMIZED distributions, where this option will cause the update to exit immediately unless the --force option has also been used.

--force

Do things we normally would refuse to do.

--tarball

Use a predownloaded tarball and not one from CPAN. Example:

perl Porting/sync-with-cpan Text-Tabs+Wrap \
    --tarball /tmp/Text-Tabs+Wrap-2024.001.tar.gz \
    --yes
--version

Sync with a specific version, not the latest on CPAN.

--no-test
--nt

Do not run tests. This is helpful for bulk updates.

--help

Show help.

TODO

  • 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.