“Cuckoo” CPAN packages

(by )

“Cuckoo” packages are those that exist in a file that isn’t named after that package. Neil Bowers coined the term after the cuckoo birds, which lay their eggs in the nests of other birds (see, for instance, “Nest stealing cuckoo birds are locked in evolutionary war with their would-be victims”). He noticed that these “cuckoo” [...]

PAUSE finds package statements in data

(by )

For each uploaded distribution, PAUSE tries to identify the namespaces that the modules use so it can add them to its index files. It does this without running any code, since anyone can upload anything, and sometimes that fails in interesting ways. This week, Karen Etheridge (ether) uploaded Package-Variant-1.001004 and was surprised that she got [...]

Clean up your CPAN directory programmatically

(by )

There’s a semi-automated way to clean up your PAUSE author directory using the WWW:::PAUSE::CleanUpHomeDir module by Zoffix Znet. Steve Haryanto modified the example slightly to take the PAUSE user name and password from a configuration file. His cleanup-pause-homedir is in his Github account. All of your uploads to PAUSE stay in your author directory until [...]

All about MANIFEST.SKIP

(by )

The MANIFEST.SKIP file lets you specify what shouldn’t be in a distribution instead of what should be (the MANIFEST). Inside MANIFEST.SKIP, you list one Perl pattern per line to specify what to exclude, and then use that file to generate MANIFEST. For example, you can exclude backup files and the Git directory: \.bak$ \.git$ You [...]

Unauthorized releases

(by )

On CPAN Search or MetaCPAN, you might see a module marked as UNAUTHORIZED. These services show everything in an author’s CPAN directory, but also can tell that the distribution is not indexed. PAUSE doesn’t do extra work to unauthorize a model. It just ignores it when it indexes. These indexing failures can happen for a [...]

Try an experimental release

(by )

Every time you upload a distribution to PAUSE and it is mirrored to CPAN, the CPAN Testers download the distribution to test it. You can do this with an experimental version so PAUSE won’t index it and CPAN clients won’t know it is there. You can try something, see if it works, such as a [...]

Hide a package name from PAUSE

(by )

When you upload a distribution, PAUSE examines it so it knows what to put into the index files that the various CPAN clients use to translate a namespace into a distribution name. PAUSE doesn’t want to run any code since anyone can upload anything, so it does a very simple minded analysis in PAUSE::pmfile. It [...]

CPAN Testers

(by )

The CPAN Testers are an ad hoc group of volunteers who set up machines to download, unpack, and test every distribution uploaded to PAUSE. They collect and collate the reports so anyone, including the module author, can see where a module has problems.

Use git to easily make third party module patches

(by )

[This post originally showed up on use.Perl. Yanick subsequently released Git::CPAN::Patch] In the olden days, to make a patch to a module, you had to have the original, untouched file and a copy that you modified. You’d then use diff to compare the two files. At the Pittsburgh Perl Workshop, Ricardo was asking how to [...]

BackPAN is a near complete history of CPAN

(by )

Most CPAN mirrors take what PAUSE gives them. If an author deletes a file in his PAUSE account, that file disappears from the PAUSE master mirror and hence from the CPAN mirrors, by default. However, some people set up BackPANs; these are CPAN mirrors that don’t delete files. They maintain a near complete history of [...]