Search code examples
perlperl-criticcpanm

Install of Pod::Spell failing on Strawberry Portable 5.20.2


When I try to cpanm Pod::Spell on Strawberry 5.20.2 (64bit PortableZIP edition), it flags I18N::Langinfo as a dependency. When it tries to download the distribution for I18N::Langinfo it locates it in R/RJ/RJBS/perl-520.0.tar.gz and, wisely, thinks better of continuing.

Pod::Spell is of interest only as a dependency of Perl::Critic.

Any suggestions as to how to untangle this dependency issue?


Solution

  • Interesting. I looked for I18N::Langinfo on my self-built Perl on Windows, and it is not installed either. I would have expected it to be installed so that it could croak:

    croak("nl_langinfo() not implemented on this architecture");
    

    It seems to me the problem is not Strawberry or ActiveState specific (because I am building from source). It maybe worth building the current blead, and if I18N::Langinfo is still not being installed, reporting this as a bug to p5p.

    Now, even if you could install the module however, I would not expect it to work with a non-Cygwin perl on Windows. Therefore, if Pod::Spell really depends on the module, it wouldn't work properly anyway.

    But, frankly, looking at the code for Pod::Spell it is not immediately obvious to me why it should depend on I18N::Langinfo.

    Therefore, I switched to cpanms work directory for Pod::Spell, and an nmake test (in your case, this would be dmake test with Strawberry Perl):

    # *** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***
    #
    # The following REQUIRED prerequisites were not satisfied:
    #
    # I18N::Langinfo is not installed (any version required)
    #
    t\00-report-prereqs.t .. ok
    t\basic.t .............. ok
    t\debug.t .............. ok
    t\get-stopwords.t ...... ok
    t\text-block.t ......... ok
    t\utf8.t ............... ok
    All tests successful.
    Files=7, Tests=24,  9 wallclock secs ( 0.13 usr +  0.02 sys =  0.14 CPU)
    Result: PASS

    Therefore, I went ahead, and installed the module using nmake install (in your case dmake install).

    podspell seemed to work.

    But, IMHO, you are better off just using aspell as in:

    C:\...> aspell --mode=perl lib\Pod\Spell.pm

    aspell spell checking Pod::Spell

    Note: I am using Aspell 0.60.6.1 installed using Cygwin.