[ome-devel] MacOS X version requirements for native code building, and CI requirements

Roger Leigh rleigh at dundee.ac.uk
Wed Jan 8 17:19:10 GMT 2014


On 07/01/14 16:45, Sebastien Besson wrote:

> - installed gcc 4.7.3 under /usr/gcc-4.7.3

[Moving this onto -devel, since it's a more general thing.]

This is a more general query regarding native building on MacOS.  I'm
not too convinced of the merits of hand-building GCC; if what we are
doing can't be done with Apple's stock toolchain, it makes it very
difficult for an end-user to replicate the process, and for us to
maintain the stuff, and I think in general we should be wary of
customising our CI nodes unless there's really no alternative.  It may
also be subtly incompatible with the system libraries due to the
libstdc++ differences, though the libraries themselves are link
compatible at least on the face of it.

It's my understanding that in general (may not be entirely accurate):
- If you build on 10.8, g++/clang++ will link with libstdc++ by default,
and the resulting binaries will run on systems back to 10.6.  The
version of clang++ (and the corresponding g++ wrapper) should contain
all the features provided by GCC 4.7, which should remove the need for
hand-building GCC.  Is this the case?
- 10.9 defaults to using libc++ (or you can manually select it on 10.8);
the resulting binaries will run on 10.8 or 10.9 but are incompatible
with libstdc++.
- 10.9 is the point of incompatible breakage; 10.8 is the transitional
step supporting both, but to what extent I'm not sure.

So in terms of providing binaries which are usable by external users, we
should probably only be building native code for 10.6-10.8 on 10.8, and
10.9 on 10.9.  Older code may well continue to run on 10.9, but it's
quite clear that we will need to build against libc++ from this point,
and there may be issues if old versions of the libraries linked with
libstdc++ get dropped.

If we don't already have one, could we look into replacing the 10.6/10.7
nodes with 10.8?  Additionally, is there any real value in general in
having 10.6 or 10.7 CI nodes?  The java and python versions aren't
anything particularly special; we could easily test the same version
combinations on either Linux or Windows.  Are there any jobs
specifically requiring these versions which are unable to run on 10.8?

Could we also look into setting up a 10.9 CI node for native building?
If we are going to support 10.9, it looks like this isn't optional
unless all the libc++ builds of the dependent libraries are available in
10.8 in addition to the libstdc++ variants.  Can anyone comment on that?

In terms of Mac testing, we will soon have a reduced ability to test on
10.6 and 10.7; LSC in Dundee are mandating that we upgrade our systems
to 10.8 since they no longer support the older versions.  This will
affect our ability to support these releases if we are not testing on
them routinely (just got my laptop back with 10.8 on it today; was I the
last one on 10.6?).  That said, it may also be an opportune time to
review our minimum version requirements since most 10.6 and 10.7 systems
will be able to upgrade to 10.9.


Regards,
Roger

--
Dr Roger Leigh -- Open Microscopy Environment
Wellcome Trust Centre for Gene Regulation and Expression,
College of Life Sciences, University of Dundee, Dow Street,
Dundee DD1 5EH Scotland UK   Tel: (01382) 386364

The University of Dundee is a registered Scottish Charity, No: SC015096


More information about the ome-devel mailing list