Ticket #5726 (closed bug: fixed)

Opened 17 months ago

Last modified 17 months ago

GHC 7.4.1 RC1 doesn't work with Xcode 4.2.1

Reported by: shelarcy Owned by: igloo
Priority: highest Milestone: 7.4.1
Component: Compiler Version: 7.3
Keywords: Cc: shelarcy@…, johan.tibell@…, chak
Operating System: MacOS X Architecture: Unknown/Multiple
Type of failure: GHC doesn't work at all Difficulty: Unknown
Test Case: Blocked By:
Blocking: Related Tickets:

Description

Xcode 4.2 removed gcc-4.2 now. But GHC 7.4.1 RC 1 uses gcc-4.2 as gcc. This behavior causes problem when compiling program.

$ ghc -c Export.hs
ghc: could not execute: /Developer/usr/bin/gcc-4.2
$ ghc Test.hs
[1 of 1] Compiling Main             ( Test.hs, Test.o )
ghc: could not execute: /Developer/usr/bin/gcc-4.2

GHC-7.4.0.20111219-i386.pkg and GHC-7.4.0.20111219-x86_64.pkg causes this problem.

And when using ghc-7.4.0.20111219-i386-apple-darwin.tar.bz2, ./configure causes error.

$ ./configure
checking for path to top of build tree... /Users/shelarcy/Desktop/ghc-7.4.0.20111219
Build platform inferred as: i386-apple-darwin
Host platform inferred as: i386-apple-darwin
Target platform inferred as: i386-apple-darwin
GHC build  : i386-apple-darwin
GHC host   : i386-apple-darwin
GHC target : i386-apple-darwin
checking for perl... /opt/local/bin/perl
checking if your perl works in shell scripts... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for gsed... sed
checking XCode version... 4.2.1
configure: XCode version component 1: 4
configure: XCode version component 2: 2
checking for gcc-4.2... no
configure: error: cannot find gcc-4.2 in your PATH, no idea how to link

I can build program by GHC 7.2.2 (with some warning), and Haskell Platform 2011.4.0.0's GHC 7.0.4. So, I think this behavior is wrong.

See also: #5354

Change History

  Changed 17 months ago by shelarcy

  • cc shelarcy@… added

  Changed 17 months ago by tibbe

  • cc johan.tibell@… added

  Changed 17 months ago by igloo

  • difficulty set to Unknown

What gcc's that it does include?

And what does "gcc --version" say for each of them.

  Changed 17 months ago by shelarcy

Xcode 4.2.1 includes only llvm-gcc(-4.2).

$ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See discussion at  http://www.haskell.org/pipermail/glasgow-haskell-users/2011-October/020998.html

follow-up: ↓ 6   Changed 17 months ago by igloo

  • priority changed from normal to highest
  • milestone set to 7.4.1

Does anyone know what the status is of building with the LLVM gcc?

in reply to: ↑ 5   Changed 17 months ago by simonmar

  • cc chak added

Replying to igloo:

Does anyone know what the status is of building with the LLVM gcc?

If you configure on a system that has only llvm-gcc, the build will work, but the resulting GHC will produce slow binaries. See dba7254566b121408e7167200d0223a531b66e8b.

For 7.4.1 I suggest we build distributions using XCode 4.1, and make sure they work if you have XCode 4.2 installed (that is, they should use gcc, not gcc-4.2).

  Changed 17 months ago by igloo

  • owner set to igloo

  Changed 17 months ago by igloo

  • status changed from new to closed
  • resolution set to fixed

Fixed in HEAD and 7.4:

commit 6ce7d8008c59fd6cf0be975a503d202866d45744

Author: Ian Lynagh <igloo@earth.li>
Date:   Wed Jan 11 19:01:55 2012 +0000

    Don't try to use gcc-4.2 on XCode >= 4.2

    It was removed in 4.2.

commit 37f70cdbc1975b02d0c27023c0ccb8993f7b6498

Author: Ian Lynagh <igloo@earth.li>
Date:   Wed Jan 11 21:00:42 2012 +0000

    Use /usr/bin/gcc when making the OS X installer

    On XCode 4.1, we use /usr/bin/gcc-4.2 as it makes better code than
    /usr/bin/gcc for us. However, gcc-4.2 doesn't exist in XCode 4.2, so we
    need to use /usr/bin/gcc there. As the installer can be used on either,
    we make it always use /usr/bin/gcc.
Note: See TracTickets for help on using tickets.