Thu Jan 23 01:25:12 2014: Request 92402 was acted upon. Transaction: Correspondence added by DAVIDO Queue: Inline Subject: Inline asks interactive question -- but doesn't have keyboard Broken in: (no value) Severity: Important Owner: Nobody Requestors: pa...@tlinx.org Status: new Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=92402 >
On Wed Jan 22 21:24:28 2014, LAWALSH wrote: > > Example: > > > Checking if your kit is complete... > Looks good > > Inline::C is packaged with Inline.pm because it is the most commonly > used > Inline Language Support Module (ILSM). > > See also: Inline::ASM, ::Awk, ::BC, ::Basic, ::Befunge, ::CPP (C++), > ::CPR, > : :Foo, ::Guile, ::Java, ::Octave, ::PERL, ::Python, ::Ruby, ::TT, > : :Tcl and ::WebChat. > > Config.pm indicates that your version of Perl was built with this C > compiler: > > gcc > > I have located this compiler on your system. > > Do you want to install Inline::C? [y] y At this point you're experiencing the Makefile.PL for Inline::C, as the CPAN installer runs all Makefile.PL's within the distribution recursively. The prompting is handled by ExtUtils::MakeMaker's prompt() function. And as you see within the "[y]" square brackets, prompt() is being directed to supply a default. prompt() detects whether Makefile.PL has been invoked interactively, or non-interactively (as is the case when running the 'cpan' installer). When it's invoked non-interactively, the default is used. Inline::C supplies the "y" default, which seems to be what you would have selected anyway, had you been in interactive mode. If Inline::C's Makefile.PL didn't supply a default, prompt() would use the empty string as a default in non-interactive mode, which would cause Inline::C's Makefile.PL to enter an endless loop (you can look at the source to see what I mean). Fortunately, Inline::C's Makefile.PL does the right thing; it supplies a default. So the prompting problem you're describing is actually "how things are done": Makefile.PL is making correct use of prompt(), supplied by ExtUtils::MakeMaker. If you don't like how ExtUtils::MakeMaker::prompt works, and for the most part, prompt() works flawlessly across a broad range of systems and configurations; it has to, being part of EU::MM. The next issue to consider is how the cpan installer works. The basic 'cpan' installer (provided by App::cpan) doesn't (to my knowledge) provide an option for interactive installations. So if you want to install automatically using the 'cpan' installer, you're going to have to accept Inline::C's defaults, which is exactly why defaults are provided. It would be nice to see an "interactive mode" feature implemented for App::cpan / CPAN.pm, but that's someone else's jurisdiction, not Inline's. However, if you would like a degree of automation, but still want to be able to hit the "y" key yourself (without waiting around for someone to implement the feature in App::cpan / CPAN.pm), you may use 'cpanm' (App::cpanm, or cpanminus) to install Inline and Inline::C. 'cpanm' provides an "--interactive" option. If you invoke this command: 'cpanm --interactive Inline' you will get an automated installation of Inline, along with blocking prompting that you can respond to manually before Inline::C gets installed. > (/home/perl/perl-5.16.3/bin/perl Makefile.PL exited with 9) > > CPAN::Reporter: test results were not valid, Command interrupted. > > No 'Makefile' created SISYPHUS/Inline-0.53.tar.gz > /home/perl/perl-5.16.3/bin/perl Makefile.PL -- NOT OK > Running make test > Make had some problems, won't test > Running make install > Make had some problems, won't install > --------------------- This problem, I haven't seen before. But it's not related to prompting. The fact that you're able to achieve a successful install manually (make, make test, make install) indicates that your setup is capable of installing Inline and Inline::C. And as indicated earlier, the prompting is working as intended.