Quoth [email protected]:
> As part of our project to refactor ExtUtils::ParseXS, I am in the
> process of building functionality to identify CPAN distributions that
> contain .xs files and to run 'perl Makefile.PL && make' (or their
> Module::Build equivalents) on those distributions.
>
> At this point in development, I only want to concern myself with
> distributions where Makefile.PL completes successfully and without user
> input. I want the process of running the program to be as automated as
> possible; I don't want to have to respond to STDIN prompts during the
> course of a particular distribution's Makefile.PL. In fact, I would
> like to treat distributions that prompt me for input as equivalent to
> exiting with non-zero exit codes.
>
> Example: If I am working with CPAN distribution 'Authen-Krb5-Admin',
> this happens:
>
> [Authen-Krb5-Admin-0.11] 547 $ perl Makefile.PL
> checking for Kerberos 5 prefix ... /usr
> checking for libk5crypto ... not found (using libcrypto)
> Authenticate as user/instan...@realm] for testing [jimk/admin]:
>
> I don't want to do anything further with this distribution because at
> this point I want to exclude it from the list of distributions I'm going
> to use in my real project. I want to treat it as if 'perl Makefile.PL'
> exited with a non-zero value.
>
> Is there any way to accomplish this?
Running
PERL_MM_USE_DEFAULT=1 perl Makefile.PL </dev/null
should cover most cases: either it'll take a default value and succeed,
or it'll fail. If you're worried about Makefile.PLs reading from
/dev/tty you could also fork and call setsid to run the above in a
session with no ctty.
Ben