The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

App::CPAN2Pkg::Worker - poe session to drive a module packaging

VERSION

version 3.004

DESCRIPTION

App::CPAN2Pkg::Worker implements a POE session driving the whole packaging process of a given module. It has different subclasses, used to match the diversity of Linux distributions.

It is spawned by App::CPAN2Pkg::Controller and uses a App::CPAN2Pkg::Module object to track module information.

CLASS ATTRIBUTES

cpanplus_init

A boolean to state whether CPANPLUS has been initialized with new index.

cpanplus_lock

A lock (App::CPAN2Pkg::Lock object) to prevent more than one cpanplus initialization at a time.

ATTRIBUTES

module

The name of the module to build / install / submit / whatever.

METHODS

cpan2dist_flavour

    my $backend = $worker->cpan2dist_flavour;

Return the cpanplus backend (CPANPLUS::Dist::*) to be used by the worker when running cpan2dist.

run_command

    $worker->run_command( $command, $event );

Run a $command in another process, and takes care of everything. Since it uses POE::Wheel::Run underneath, it understands various stuff such as running a code reference. Note: commands will be launched under a C locale.

Upon completion, yields back an $event with the result status and the command output.

EVENTS

check_upstream_availability

    check_upstream_availability( )

Check if module is available in the distribution repositories.

check_local_availability

    check_local_availability( )

Check if the module is installed locally.

install_from_upstream

    install_from_upstream( )

Install module from distribution repository.

cpanplus_initialize

    cpanplus_initialize( $event )

Run CPANPLUS initialization (reload index, etc). Fire $event when finished, or if this has already been done. Wait 10 seconds before retrying if initialization is currently ongoing.

cpanplus_find_prereqs

    cpanplus_find_prereqs( )

Run CPANPLUS to find the module prereqs.

local_prereqs_wait

    local_prereqs_wait( )

Request to wait for local prereqs to be all present before attempting to build the module locally.

local_prereqs_available

    local_prereqs_available( $modname )

Inform the worker that $modname is now available locally. This may unblock the worker from waiting if all the needed modules are present.

cpanplus_create_package

    cpanplus_create_package( )

Try to create a native package for the module using cpan2dist.

local_install_from_package

    local_install_from_package( )

Install the native package generated previously by cpan2dist.

upstream_import_package

    upstream_import_package( )

Import the package in upstream repository.

upstream_prereqs_wait

    upstream_prereqs_wait( )

Request to wait for upstream prereqs to be all present before attempting to build the module locally.

upstream_prereqs_available

    upstream_prereqs_available( $modname )

Inform the worker that $modname is now available upstream. This may unblock the worker from waiting if all the needed modules are present.

upstream_build_package

    upstream_build_package( )

Request package to be built on upstream build system.

AUTHOR

Jerome Quelin <jquelin@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2009 by Jerome Quelin.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.