johanvdb has asked for the wisdom of the Perl Monks concerning the following question:

Wise monks of perl wisdom,

I've a problem thinkering out a solution to interactively configurate a perl package. What I want to do is integrate, somewhere in the magic 4 install lines, the possibility to configure the package being installed...
>perl Makefile.PL >make >make test >make install

I was thinking the "make" command is the place to start asking for user input, like ...
>What is your name?

My question now is ... where do I need to hook this config script in? Can I pass a custom Makefile snippet in the ExtUtils::MakeMaker to the resulting Makefile? Are there any examples out there? Or can I revert to some dark piece of perldoc wisdom?
I humbly await your profecy ...
Johan

Replies are listed 'Best First'.
Re: Interactive installation configuration
by tachyon (Chancellor) on Dec 21, 2001 at 19:19 UTC

    What sort of configuration do you want to do? A typical Makefile.PL looks like:

    use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( 'NAME' => 'foo::bar', 'VERSION_FROM' => 'bar.pm', # finds $VERSION 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1 );

    It could easily look like this:

    use ExtUtils::MakeMaker; my ( $config_file, $makefile ) = ask_config_questions(); write_config( %$config_file ); WriteMakefile( %$makefile ); sub ask_config_questions { my %config; print "What is your name? "; chomp( my $name = <> ); $config{'name'} = $name; # blah blah my %makefile = ('NAME' => 'foo::bar', 'VERSION_FROM' => 'bar.pm' ); # blah blah - ask more questions, modify %makefile... return \%config, \%makefile; } sub write_config { my %config = @_; open CONFIG, '/some/path/' or die "Can't write config $!\n"; print CONFIG "$_ = $config{$_}\n" for keys %config; close CONFIG }

    See the MakeMaker.pm docs for more details on how you change the Makefile via the hash you pass to WriteMakefile(). make(1) just processes the Makefile so you need to do your stuff in the Makefile.PL which writes this file if you want to keep it really simple.

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Re: Interactive installation configuration
by AidanLee (Chaplain) on Dec 21, 2001 at 19:15 UTC
    I've no personal experience with this but you might want to look at how the template toolkit does it. They have a questionaire like make step.