Rumbles from the Machinery of FAIL

BinGOs on 2008-09-08T14:46:32

First off a developer release of POE::Component::SmokeBox should be hitting CPAN mirrors.

POE::Component::SmokeBox is a unified POE based CPAN smoke testing framework. It will eventually replace POE::Component::CPANPLUS::YACSmoke, POE::Component::CPAN::YACSmoke and POE::Component::CPAN::Reporter.

Production smoker-wise, work is ongoing to update configurations to use the latest CPANPLUS::YACSmoke and Test::Reporter. The long running smokers on Darwin and NetBSD 3.1 have already been updated, the Vmware based smokers are being updated as boxen come up in the rotation.

As mentioned during my talk at YAPC::EU in Copenhagen, I'm still working on code to perform auto-rolling of smoker configurations. I have worked through some proof-of-concept scripts that seem to do the job, but the end goal ( in my mind ) is to get this auto-rolling working with what will eventually become smokebox so that the whole process setting up the smoker and actually smoking CPAN modules can be fully automatic.

Some of the stages the auto-rolling will deal with are (assuming a CPANPLUS based smoker):

  • Take a number of parameters:
    • perl version (5.6.2, 5.8.8, etc.)
    • path to install the perl (prefix)
    • working directory (build)
    • cpan mirror url (url)
    • perl configure options (options) [arrayref]
    • email address (email)
    • mail exchanger (mx)
  • Build and install specified perl:
    • get source (fetch from url, rsync etc.)
    • extract (if applicable)
    • run Configure with options
    • run make
    • run make test
    • run make install
  • If CPANPLUS isn't already installed (ie. perl is less than 5.9.5):
    • Fetch CPANPLUS distribution
    • Extract
    • Run Makefile.PL with new perl executable
    • Run bin/cpanp-boxed -s selfupdate dependencies with the new perl
  • Setup CPANPLUS for smoke testing:
    • Configure:
      • o conf verbose 1
      • o conf email $email
      • o conf cpantest 1
      • o conf cpantest_mx $mx
      • o conf buildflags uninst=1
      • o conf makeflags UNINST=1
    • Install modules for testing:
      • YAML::Tiny
      • Test::Reporter
      • CPANPLUS::YACSmoke
  • Done >:)

The trick now is to wrap up all this into a module.