Skip to content

juster/perlpkgtools

Repository files navigation

Perl package tools
==================
Simple tools for use for packaging perl. Right now these are just simply
for determining which distributions and modules are bundled with perl.
This can be used to generate a provides list. There are also commands
to check perl dependencies that are created by other modules in the
official ArchLinux repositories.

The tools are coded in sh, awk, and perl.

Provides Tools
--------------
gencorelist     Pass it the path to a perl source directory and it will
                write a list of core distributions to "core.dists".
                Run this first.
+ listdists     List the distributions in the perl source's "dist" and
                "cpan" directories.
+ listmods      Lists the modules in the perl source's "lib" directory.
+ modoncpan     Filter out module names that are only supplied by perl.
                Print CPAN distributions which also supply core modules.
+ renamecore    Maps distribution names to their corresponding CPAN names.
++ metadb       Utility script for querying http://cpanmetadb.appspot.com.
                Used by oncpan.
perlprovides    Run this next and it will print the value of the provides
                array for perl's PKGBUILD.
+ fmtprovides   Awk script that converts the name-value pairs to
                the PKGBUILD provides list.
+ dist2pkg      Convert distribution names/vers to package names/vers.

Misc Tools
----------
getdbs          Download package databases and extract them in our cwd.
findreporeqs    Scans the databases and prints requirements on perl modules.
findrepopkgs    Scans the databases and prints /^perl-/ packages.
findrepodups    Scans the databases and prints /^perl-/ packages that
                have the same name as provide-ed distributions.
----------
findaurreqs     Use AURPC (http://juster.us/aurpc) to list all
                dependencies upon /^perl-/ packages.
findaurdups     Print AUR packages that provide perl core modules.
distoncpan      Filter out distributions name/ver pairs that are not
                supplied on CPAN.

The Distribution/Module Question
--------------------------------
I have the feeling that treating modules the same as packages is a bad
idea. Previously, all _modules_ were included in perl's provides
list. The downside is that each distribution can have more than one
module. This seems redundant and ends up increasing the size of the
provides array. The less-redundant alternative is to only list
_distributions_ in the provides array. The downside to this is that
people unfamiliar with perl will create dependency on a module instead
of the distribution that contains the module.

This is further foobar-ed by core modules in the "lib" directory which
simply have no distribution.  Except, oh yeah, some do. Like "version"
for example. It would seem that we would have no choice but to break
the rule and "provide" a list of modules, converted those to package
names and versions along with the core distributions.

This strange confusion between module and distribution is further
compounded by the fact that CPAN mostly deals with modules and not
distributions. Yet dependencies specified in distributions are listed
for modules! The CPAN shell then has to cross reference these module
deps into distribution that it can fetch. I don't know the exact
mechanics but it seems that python and ruby don't have this problem.
Gems or eggs merely depend on other gems or eggs and not a particular
_source file_ (perl's module) inside the gem or egg.

Anyways, I will have to organize my thoughts more on this later.

Justin Davis
jrcd83()gmail!com

About

Command line tools for perl package problems.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published