Sat Apr 15 13:40:53 2017: Request 121128 was acted upon.
Transaction: Correspondence added by kbr...@cornell.edu
       Queue: Module-ScanDeps
     Subject: Re: [rt.cpan.org #121128] Test failures on Cygwin
   Broken in: (no value)
    Severity: (no value)
       Owner: Nobody
  Requestors: kbr...@cornell.edu
      Status: open
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=121128 >


On 4/15/2017 1:14 PM, Roderich Schupp via RT wrote:
> <URL: https://rt.cpan.org/Ticket/Display.html?id=121128 >
>
> On 2017-04-15 07:44:44, kbr...@cornell.edu wrote:
>> Attached.
>
> Yep, that is exactly the output you would get when forcing
> t/10-case-insensitive-keys.t to run (not skip) on a case-sensitive filesystem.
>
>> By the way, my file system is set up to be case sensitive, which I guess
>> is the same as case_intolerant.
>
> :) "case intolerant" sounds like some form of allergy to me

:)

>> I wonder if the problem is that the File::Spec
>> module didn't detect this; shouldn't the test have been skipped?
>
> I looked at File::Spec::Cygwin (from Perl 5.24.1) and it has indeed a Cygwin 
> specific
> File::Spec::case_tolerant. Sorry, I have no machine to test this, but on
> first glance this test looks suspicious since there's no "use Cygwin":
>
> sub case_tolerant {
>   return 1 unless $^O eq 'cygwin'
>     and defined &Cygwin::mount_flags;
> ...
>
> Do the following two oneliners produce different output?
>
> perl -E 'say "DEFINED" if defined &Cygwin::mount_flags'
> perl -MCygwin -E 'say "DEFINED" if defined &Cygwin::mount_flags'

Yes.

$ perl -E 'say "DEFINED" if defined &Cygwin::mount_flags'
DEFINED

$ perl -MCygwin -E 'say "DEFINED" if defined &Cygwin::mount_flags'
Can't locate Cygwin.pm in @INC (you may need to install the Cygwin 
module) (@INC contains: 
/usr/lib/perl5/site_perl/5.24/x86_64-cygwin-threads 
/usr/lib/perl5/site_perl/5.24 
/usr/lib/perl5/vendor_perl/5.24/x86_64-cygwin-threads 
/usr/lib/perl5/vendor_perl/5.24 
/usr/lib/perl5/5.24/x86_64-cygwin-threads /usr/lib/perl5/5.24 .).
BEGIN failed--compilation aborted.

Apparently there isn't actually a Cygwin module in the usual sense, but 
Cygwin::mount_flags is defined in the perl C source code, in 
cygwin/cygwin.c:

     newXSproto("Cygwin::mount_table", XS_Cygwin_mount_table, file, "");

But I think the real issue here is that File::Spec doesn't know how to 
test whether file systems are case sensitive on Cygwin.  There's more to 
it than what can be found in the mount table.

In any case, Module::ScanDeps seems to be fine.  I'll file a bug report 
about File::Spec.

Thanks, as always, for your help.

Ken

Reply via email to