I'm writing a module, and I'm using Module::Build. I want to add some unusual steps to the install process (specifically, I want to change the file owner of an installed CGI).
It seems like there ought to be a way to run arbitrary commands/scripts during the install phase, but Module::Build and Module::Build::Cookbook haven't hinted at anything.
Does anyone know how to do that? Or better yet, can anyone point me to a tutorial/howto/whatever that discusses advanced Module::Build usage and covers this question?
Thanks!
--Pileofrogs
You can subclass Module::Build on the fly using the subclass method and override the methods that perform the actions. You may need to read through Module::Build::Base to find the methods you want to override, but the general pattern is ACTION_ followed by the name of the action you'd put after "Build". Here's an example of how it would work for install:
# Build.PL
use Module::Build;
my $class = Module::Build->subclass(
class => "Module::Build::Custom",
code => <<'SUBCLASS', );
sub ACTION_install {
my $self = shift;
# YOUR CODE HERE
$self->SUPER::ACTION_install;
}
SUBCLASS
$class->new(
module_name => 'Your::Module',
# rest of the usual Module::Build parameters
)->create_build_script;
See the [http://search.cpan.org/~kwilliams/Module-Build-0.27_07/lib/Module/Build/Authoring.pod|Module::Build::Authoring] pod in any of the 0.27 developer releases for better documentation on this.
-xdg
Code written by xdg and posted on PerlMonks is [http://creativecommons.org/licenses/publicdomain|public domain]. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.
Oy! ++
Awesome! It's so simple, now that you've waved it in front of my nose. I'm going to take this post and sent it to the Module::Build folks with a suggestion that they add it to their documentation.
Thanks!
--Pileofrogs
perlmonks.org content © perlmonks.org and pileofrogs, xdg
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03