Maverics/Xcode 5 proposal: no more xcode-select --install

Ned Deily nad at acm.org
Wed Oct 30 16:52:11 PDT 2013


In article <CC254915-35CD-43A3-9F4F-47D4D8F70A1F at angellane.org>,
 Paul Bennett <t21 at angellane.org> wrote:

> On 30 Oct 2013, at 23:04, Ned Deily <nad at acm.org> wrote:
> > In article <52711F90.70809 at macports.org>,
> > Rainer Muller <raimue at macports.org> wrote:
> >> Well, after thinking about this again, we could also do it the other way
> >> around. The majority of ports already builds just fine if you have the
> >> Command Line Tools only, without Xcode (ignore warnings from base about
> >> missing xcodebuild, it's not actually required in this case).
> [...]
> > From the outside looking in, that strikes me as a much more realistic and 
> > potentially achievable goal.
> 
> I'd still like to encourage considering both cases:
> 1. When Xcode is installed, but Command Line Tools aren't
> 2. When Command Line Tools are installed, but Xcode isn't
> 
> From my position, I don't see that the scale of 2 is significantly different 
> to 1, particularly since in both cases the shims - including xcrun - will be 
> there to assist locating the relevant tools, headers and libraries.

The problem I see with proposal one is that there are plenty of upstream 
projects that make assumptions about file locations, like header file 
locations, and were never designed to take into account the use of an an SDK.  
The Apple compiler drivers handle the cases involving compiler and linker 
calls, e.g. through the use of -isdkroot and the under-the-covers appending 
the SDK prefix to paths to "system" locations, but that doesn't and can't help 
with paths that are embedded or, worse, computed dynamically elsewhere in a 
project's build steps.  For example, python builds use a python script for the 
steps of building the C extension modules in its standard library.  At build 
time, the script does a lot of searching around to find include files and 
library files to determine which extensions to build and/or how to build them.  
To support SDK builds, we (the Python project) had to go in and modify 
setup.py to do the SDK path modifications itself and sometimes we slip up.  In 
the best case, that produces a build error; in other cases, it hasn't but 
created a component with subtle bugs.  I'm sure there are plenty of other 
cases in other projects.  The problem is that it's impossible to identify all 
of these uses automatically.  And even if you catch some of them and send the 
changes back upstream (and if you don't, you've just added an on-going 
maintenance headache), there still is no guarantee that you've caught most of 
them.

Proposal two is much easier because that's how projects are built on most 
other Unix-y platforms.  Only OS X specific ones and ones where, for some 
reason, the upstream project came up with an xcode project file would you 
really need to have Xcode.app installed.

-- 
 Ned Deily,
 nad at acm.org



More information about the macports-dev mailing list