Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Does XCode 4 break Perl?

by Anonymous Monk
on Apr 01, 2011 at 07:15 UTC ( [id://896789]=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I have the latest OS X (10.6.7) and had installed 5.12.3 using perlbrew, with default options and under XCode 3.4.1. I had no problems installing any module distributions with this perl until I upgraded to XCode 4. When I attempted to upgrade IO::AIO, all the tests failed with the error 'Bareword "O_RDONLY" not allowed while "strict subs"'. Using the diff tool on search.cpan.org I didn't see any change that would account for that, so I downloaded the previous version that I had already successfully installed, and the tests for that version now failed similarly. So I rebuilt perl under XCode 4 and still no go. Does anybody here have any solutions or ideas?

Replies are listed 'Best First'.
Re: Does XCode 4 break Perl?
by chrestomanci (Priest) on Apr 01, 2011 at 08:02 UTC

    I am not a Mac user, so this answer is based on google and other second hand sources.

    According to the Apple page listing what is new in Xcode4, they say that there is a new compiler, and that LLVM is now the default instead of GCC.

    Your version of perl is most likely compiled with GCC, as that has been the standard compiler on Macs up until now. If you compile and XS module using the new LLVM compiler, then it is unlikely to link correctly with perl that was compiled on a different compiler.

    There is a similar situation on windows, as if you use Active state perl (compiled with Microsoft cc), then you need to use an MS build environment to build XS modules, you cannot use GCC under cygwin without also using perl under cygwin.

    I think your solution is to work out how to change the default compiler under Xcode back to GCC. Alternatively, you could recompile perl and all the modules you have installed using the new compiler.

      Your version of perl is most likely compiled with GCC, as that has been the standard compiler on Macs up until now. If you compile and XS module using the new LLVM compiler, then it is unlikely to link correctly with perl that was compiled on a different compiler.
      You're right about there being a new compiler: gccversion='4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.9). But I did mention that I also tried rebuilding perl. Since it was in a fresh tree, the modules had to be recompiled as well.

      The error I'm seeing looks like an ordinary syntax error, that's what's so baffling. After adding 'use Fcntl; use POSIX qw(ENOSYS EXDEV);' at the beginning of IO/AIO.pm, I got an error about a symbol that was only defined by IO::AIO: READDIR_DIRS_FIRST, so it looks the export mechanism might have gotten screwed up. I'm out of my depth here. And this is the only module I've seen having this problem so far, so it's mysterious to me.

      And I'm not sure if this is going to be solved in a timely fashion since the module author is anti-bugtracker.

        The error I'm seeing looks like an ordinary syntax error, that's what's so baffling

        Please copy/paste the error message

Re: Does XCode 4 break Perl?
by dk (Chaplain) on Apr 01, 2011 at 11:24 UTC
    Send a perlbug and until it's fixed just say use constant O_RDONLY => 0; . If it then complains about O_WRONLY etc then look for these constants in your sys/fcntl.h and repeat until crisp.
Re: Does XCode 4 break Perl?
by Anonymous Monk on Apr 01, 2011 at 07:42 UTC
    Does anybody here have any solutions or ideas?

    Downgrade to XCode 3.4.1?

      aw, why not be more helpful and suggest switching to ubuntu
        aw, why not be more helpful and suggest switching to ubuntu

        No need to go nuts, he can upgrade to windows 7

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://896789]
Approved by chrestomanci
Front-paged by chrestomanci
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (None)
    As of 2024-04-25 04:02 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found