Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 3 (more)

Managing Complexity with Module::Release

From brian_d_foy, 5 months ago

Automating Perl module release with Module::Release, including dis more

631 views  |  0 comments  |  0 favorites
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 631
on Slideshare: 631
from embeds: 0* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Managing Complexity with Module::Release brian d foy, Stonehenge Consulting Ser vices brian@stonehenge.com Nordic Perl Workshop June 16, 2006 www.stonehenge.com

Slide 2: Releasing code is hard...

Slide 3: actually, it’s too easy...

Slide 4: Releasing good code is hard...

Slide 5: Did I ... ? test everything disttest everything check in the sources include new files in MANIFEST update Changes and README

Slide 6: Then I have to... upload to PAUSE claim in PAUSE upload to Sourceforge overly-complicated Sourceforge file release tag the release in source control announce the release

Slide 7: When I find out... what the PAUSE indexer thinks what CPAN Testers think if I’m missing something in PREREQ_PM if I’ve included too little or too much how poor my kwalitee is

Slide 8: Rinse, repeat...

Slide 9: Annoy users

Slide 10: Now do that for 50 distributions

Slide 11: I make mistakes because... Repetitive tasks are boring Focused on bug squashing Want to release code Need to fix a different module Want to do something else Want to do anything else

Slide 12: Automate!

Slide 13: Computers love... doing the same thing over and over(?: and over)+ doing it the same way every time doing it again if I mess up

Slide 14: release(1) Part of Module::Release

Slide 15: Automate steps sub test { my $self = shift; print "Checking make test... "; unless( -e 'Makefile.PL' ) { print " no Makefile.PL---skippingn"; return; } my $tests = $self->run( "$self->{make} test 2>&1" ); die "nERROR: Tests failed!n$testsnn" unless $tests =~ /All tests successful/; print "all tests passn"; }

Slide 16: Create process my $release = Module::Release->new( %params ); $release->clean; $release->build_makefile; $release->test; $release->dist; $release->dist_test; $release->check_cvs; $release->clean; $release->build_makefile; $release->dist; $release->check_for_passwords; $release->ftp_upload; $release->pause_claim;

Slide 17: Fearless releases Problems are fatal Errors tell me what to fix Nothing updates until everything is good Too bad there isn’t unrelease(1)

Slide 18: New problem, new step

Slide 19: Did I update $VERSION? Anyone want to write Test::GreaterVersion?

Slide 20: Future directions Pluggable modules Support for more checks Not just for Perl More canned scripts working title: Starburst