Opened 7 years ago
Closed 7 years ago
#54985 closed defect (fixed)
clang-3.9 @3.9.1_6 wrappers broken at least with Snow Leopard/Xcode 3.2.6
Reported by: | rlhamil | Owned by: | kencu (Ken) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.4.1 |
Keywords: | Cc: | larryv (Lawrence Velázquez), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), ballapete (Peter "Pete" Dyballa), gnw3, jeremyhu (Jeremy Huddleston Sequoia) | |
Port: | clang-3.9 |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
The wrappers with the clang-3.9 port that look like
#!/bin/bash if [ -x /usr/bin/xcrun ] ; then exec /usr/bin/xcrun /opt/local/libexec/llvm-3.9/bin/clang "${@}" else exec /opt/local/libexec/llvm-3.9/bin/clang "${@}" fi
(all the /opt/local/bin/*-3.9 wrappers are of that form)
have a problem on Snow Leopard, at least with Xcode 3.2.6:
myeye:tmp root# clang-mp-3.9 hello.c -o hello xcodebuild: error: invalid tool name - '/opt/local/libexec/llvm-3.9/bin/clang' contains '/' characters /Developer-3.2.6/usr/bin/xcodebuild fails with 256 - Unknown error: 256 myeye:tmp root# xcode-select -print-path /Developer-3.2.6
Clearly, at least that version of xcrun doesn't cope with a full pathname of the executable to be found; and it presumably wouldn't find something in /opt/local/libexec anyway; so why use it?
This further breaks anything that uses clang-3.9 to build it.
Change History (23)
comment:1 Changed 7 years ago by rlhamil
Cc: | rlhamil added |
---|
comment:2 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | larryv MarcusCalhoun-Lopez added; rlhamil removed |
---|---|
Description: | modified (diff) |
Owner: | set to jeremyhu |
Status: | new → assigned |
comment:3 Changed 7 years ago by jeremyhu (Jeremy Huddleston Sequoia)
comment:4 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
Cc: | ballapete added |
---|
comment:5 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
I get when trying to upgrade py27-cython:
xcodebuild: error: '/opt/local/libexec/llvm-3.9/bin/clang' not found. /Developer/usr/bin/xcodebuild fails with 17664 - Unknown error: 17664 error: command '/opt/local/bin/clang-mp-3.9' failed with exit status 69
xcode-select -print-path /Developer
comment:6 Changed 7 years ago by gnw3
Cc: | gnw3 added |
---|
comment:7 follow-up: 8 Changed 7 years ago by kencu (Ken)
This <https://github.com/kencu/macports-ports/commit/b671ba1875a6e1f28c074407105aeca1bb9d5303> should fix this. Just have to test it out on a few more systems.
comment:8 Changed 7 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Replying to kencu:
This <https://github.com/kencu/macports-ports/commit/b671ba1875a6e1f28c074407105aeca1bb9d5303> should fix this. Just have to test it out on a few more systems.
In your commit, may I humbly suggest that instead of testing OS version, we test Xcode version.
Something like this: ${os.major} < 11
--->[vercmp ${xcodeversion} 4] < 0
.
I am not 100% sure when xcrun started allowing absolute pathnames, but if it happened before Xcode 4.2.1, then llvm-bin-sl
might not be needed even on Snow Leopard.
comment:9 Changed 7 years ago by kencu (Ken)
Thanks for the input!
On my systems here:
on 10.6.8 with Xcode 3.2.6, xcrun /Developer/usr/bin/clang
returns
xcodebuild: error: invalid tool name - '/Developer/usr/bin/clang' contains '/' characters
on 10.6.8 with Xcode 4.2, xcrun /Developer/usr/bin/clang
returns
xcodebuild: error: '/Developer/usr/bin/clang' not found. /Developer/usr/bin/xcodebuild fails with 17664 - Unknown error: 17664
So it looks like either possible Xcode version for 10.6 errors out. Given that, I guess the system test would give the same outcome as a [vercmp ${xcodeversion} 4.3] < 0
test, so it's kinda moot. You're the spearhead on these clang ports so I'll change it if you prefer.
On 10.7, xcrun will accept a full path name without issues.
comment:10 Changed 7 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Agreed, it should be based on Xcode version.
Are you sure that 4.3 is the dividing line? If not, I suggest being more conservative with either 5.0 or 6.0 depending on what you've tested.
One more note. We'll need to revbump llvm and lldb as well as clang.
comment:11 Changed 7 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Owner: | changed from jeremyhu to kencu |
---|
comment:12 Changed 7 years ago by jeremyhu (Jeremy Huddleston Sequoia)
ken, over to you to take this to the goal. Feel free to send a pull request or show me another patch if you want more feedback, but I trust you to act on the feedback above without a followup review if you're comfortable with it.
comment:13 Changed 7 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Cc: | jeremyhu added |
---|
comment:14 Changed 7 years ago by kencu (Ken)
Resolution: | → duplicate |
---|---|
Status: | assigned → closed |
superseded by 54996
comment:15 Changed 7 years ago by kencu (Ken)
The xcode version I tested on 10.7 that worked was 4.6.3.
comment:16 Changed 7 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Ok, then I suggest using ${xcodeversion} 4.6] < 0
comment:17 Changed 7 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Resolution: | duplicate → fixed |
---|
comment:18 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
How can I fix a package without a functioning compiler on which the possibly functioning compiler depends?
When I invoke port upgrade outdated
port
tries to build py27-cython
because clang-3.9
depends on it. Without functioning compiler py27-cython
cannot be build.
What is the proper way to transform the dilemma into a monolemma?
comment:19 Changed 7 years ago by kencu (Ken)
yeah. try forcing your build with clang-3.7 or clang-3.8, if you've still got one of them installed.
or edit the existing broken clang wrapper by hand for this one build, if you know what I mean by that.
most won't see this as they use the buildbot version.
comment:20 Changed 7 years ago by gnw3
Peter: the troublemaker is /usr/bin/xcrun
. Just send him on a short vacation (sudo mv /usr/bin/xcrun /usr/bin/xcrun_on_vacation
) unitl you get the updates installed. This worked for me while waiting for the proper fix.
comment:21 Changed 7 years ago by ballapete (Peter "Pete" Dyballa)
I decided to *just* install py27-cython
with GCC 6. But port
does not know when to stop and continues to install more and more packages with GCC 6 (nghttp2, llvm-3.9, libgcc, …).
Good software is so rare. But it's worth its price.
comment:22 Changed 7 years ago by kencu (Ken)
Oh oh. gcc6 on your LibcxxOnOlderSystems setup will link all your c++ ports against the wrong standard library. That is a no-no, I'm afraid.
If you can, you should roll back anything gcc6 just updated, uninstall the gcc6-built stuff, and build it with clang-3.7 or clang-3.8, or fix the wrapper on clang-3.9, or hide xcrun as gnw3 said -- any one of those options will work correctly.
comment:23 Changed 7 years ago by kencu (Ken)
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Ugg. OIder xcrun don't like that it seems... Perhaps we should just install the old stubs on Snow Leopard. I'll check my older VMs to see when that support landed.