Zefram posted this to perl5-porters and I said I'd redirect it and
answer here.   I'll top-post my reply to keep his email intact.  Sorry
that it's inscrutable without reading his email.

I prefer the alternatives in the order 0 1, 2.  If Andreas is
convinced, perhaps he can ask Ilya.  Or perhaps there's an alternative
to 1, which is Andreas and Ilya agreeing on a new method to skip tests
than abusing AUTOMATED_TESTING.  With respect to 1, that's possible
now locally with distroprefs.  I wouldn't do that in CPAN.pm for
T::R::P always but might special case it if it's part of Bundle::CPAN.
Before 2, I'd rather just fork T::R::P, call it
"Term::ReadLine::Perl::WithoutTests" or something and fix the test
script there.

-- David

---------- Forwarded message ----------
From: Zefram <[email protected]>
Date: Tue, Aug 25, 2009 at 4:40 AM
Subject: Term::ReadLine::Perl in Bundle::CPAN
To: [email protected]


Term::ReadLine::Perl is pissing me off.  It has an obnoxious install
process, wherein "make test" starts up a program that uses the readline
facility and demands input from the tty.  If you've got Term::ReadKey
installed, it even throws away typeahead.  If you're installing it (as a
dependency of something else) on many perls consecutively, or from cron,
the installations grinds to a halt at that point.

This obnoxious behaviour is a problem because T:RL:P is part of
Bundle::CPAN.  It gets installed (or at least gets an attempt to install
it) pretty often.  By proxy, Bundle::CPAN has obnoxious installation
behaviour.  We need to fix this.  I see three main possibilities for
doing this:

   (0) Get T:RL:P itself fixed.

   (1) Put a workaround into CPAN.pm.

   (2) Drop T:RL:P from Bundle::CPAN.

I have so far tried approach 0, and it's not looking good.  I submitted
a minimal patch, via RT, but the author refuses to believe that anyone
does "big installs" via automated tools such as CPAN.pm.  Maybe someone
more diplomatic than I am can talk him round, but I suspect not.

Approach 1 would be pretty easy, though of course Wrong.  T:RL:P will skip
the interactive test if it sees a true value in $ENV{AUTOMATED_TESTING}.
CPAN.pm could locally put that in the environment, specifically for
"make test" on T:RL:P.

Approach 2 would preferably involve having some alternative full-editing
T:RL:* to include in the bundle.  T:RL:Gnu is problematic because
it relies on a C library.  There is a T:RL:Zoid, which on a cursory
look seems very satisfactory, and it even manages to test most of
the interactive behaviour without making the test suite interactive.
Using this automatically in CPAN.pm would require either CPAN.pm to detect
it and set up $ENV{PERL_RL}, or a dual-lifed version of Term::ReadLine
that includes T:RL:Zoid among the defaults to look for.

Preferences?

-zefram

Reply via email to