in reply to Error with ExtUtils::Depends under Cygwin

Thanks for clarifying things. I've just built Devel::Declare on Cygwin (perl-5.10.1) without any problems.

You got:
Checking if your kit is complete... Looks good Note (probably harmless): No library found for -lCheck Writing Makefile for Devel::Declare
I didn't get that "probably harmless" warning - it's no doubt *not* harmless.
The "-lCheck" is the link to auto/B/Hooks/OP/Check/Check.dll, and that's your (missing) link that will resolve the errors you got. Could you run 'make realclean', followed by 'perl Makefile.PL' and then open the generated Makefile. What's contained in the EXTRALIBS and LDLOADLIBS entries in that file ? It should be the same entry in both, and it needs to be:
EXTRALIBS = -L/path/to/Check_dll -lCheck LDLOADLIBS = -L/path/to/Check_dll -lCheck
where /path/to/Check_dll is the folder that contains Check.dll. I don't know what that will be for you ... perhaps something like:
/usr/lib/perl5/site_perl/5.12/i686-cygwin/auto/B/Hooks/OP/Check
Once the Makefile is corrected, you should be able to run 'make test' and 'make install' successfully.

That's a hack, not a proper solution - but I've no intention of trying to work out a proper solution where (the monstrosity that goes by the name of) Module::Install is involved in the build process.

Cheers,
Rob

Replies are listed 'Best First'.
Re^2: Error with ExtUtils::Depends under Cygwin
by newleaf (Initiate) on Aug 15, 2010 at 14:57 UTC

    Thanks syphilis, that did the trick!

    I found the check library in:

    /usr/local/lib/perl5/site_perl/5.12.1/cygwin-thread-multi-64int/auto/B +/Hooks/OP/Check

    The Makefile had no EXTRALIBS or LDLOADLIBS settings, so I added them per your suggestion and the module built and installed correctly. Interestingly, I also found this line in the Makefile:

    # LIBS => q[-L/usr/local/lib/perl5/site_perl/5.12.1/cygwin-thread- +multi-64int/auto/B/Hooks/OP/Check -lCheck]
    ...so at some point it did know where the library was, but didn't actually use it. I tried to install MooseX::Declare again and got the same failure when it got to Devel::Declare, which I resolved the same way. Afterwards the install completed without problems. Not sure if the underlying problem is a bug in the tool chain, a bug in Cygwin, or just some strangeness with my system, but everything seems to be working now.

      Not sure if the underlying problem is a bug in the tool chain, a bug in Cygwin, or just some strangeness with my system, but everything seems to be working now

      Probably none of the above. I suspect it's the version of ExtUtils::MakeMaker that's responsible. The version of EU::MM that shipped with my Cygwin's perl (5.10.1) is 6.55_02. I don't think that's an official release of EU::MM. It's more likely to be one that the Cygwin folk have put together to cater for shortcomings in the official version - such as the refusal to accept 'dll' as a file extension against which linking can occur.

      There seems to be an (overly) ultra-conservative approach to fixing EU::MM and I know that ActiveState release their own renditions of EU::MM with ActivePerl. Looks like Cygwin might be doing the same. When you build perl from source you, of course, get to use only the official (crippled) version of EU::MM.

      If you can locate and install this 6.55_02 version, you'll probably be better off.

      UPDATE: Looks like Cygwin also provide their own build of ExtUtils::Depends, so it's also possible that the solution to your problem lies in there

      Cheers,
      Rob
        Ah, I see. So the problem is that Make::Maker in the stock Perl release needs to be tweaked for Cygwin. Thanks again for the help syphilis!