Dear Log,
So I wrote this little dealy today for automating the process of building the dist of a CPAN module. It seems to work. Does it look right?
#!/usr/bin/perl
# Time-stamp: "2002-09-29 23:13:56 MDT"
die "What to make?" unless -e "Makefile.PL";
my %preexisting;
@preexsting{ glob('*.tar.gz') } = ();
system( "perl Makefile.PL && make manifest && make disttest && make dist && make clean" ) and die;
my @new = grep !exists $preexisting{$_}, glob('*.tar.gz');
die "No new .tar.gz's !?!" unless @new;
die "Too many new .tar.gz's !!" unless @new == 1;
my $new = $new[0];
system(" chmod a+r $new && mv $new ~/public_html/ ");
exit;
__END__
I have always created my CPAN tarballs by hand, so I was delighted to try your script and I like it
(apart from the 'preexsting' typo
system(" chmod a+r $new && mv $new ~/public_html/ ");
with something like:
chmod(0644, $new) or die "chmod '$new' failed: $!";
rename($new, "$ENV{HOME}/public_html/$new") or die "rename '$new' failed: $!";
One annoyance I noticed is that it seems to put MANIFEST.bak and Makefile.old into the tarball. Also, is it correct practice to stuff Makefile (in addition to Makefile.PL) into CPAN distributions?
Re:I like this script
TorgoX on 2002-10-01T09:15:31
Oops, I forgot to mention my MAKEFILE.SKIP file, which I think I inherited from someone...^MANIFEST\.bak$
Makefile(\.old)?$
\.rej$
CVS
blib
~Maybe I should add "^dist" and/or "^disttest" to that?
I like your (and everyone's) suggestions. I'll work them in.
Re:I like this script
oneiron on 2002-10-01T10:17:53
TorgoX, I think you meant MANIFEST.SKIP and not MAKEFILE.SKIP. I have got it working nicely now, though I found the MANIFEST.SKIP file to be tempermental in the extreme. This is my MANIFEST.SKIP:
^MANIFEST\.
^Makefile$
\.old$
^blib/
For a while, I was plagued by the "double distribution" problem mentioned by Matts, but I deleted my MANIFEST file and have not seen this problem since (I am running Perl 5.6.1).