Just say no to +universal
Jordan K. Hubbard
jkh at brierdr.com
Sat Mar 3 14:33:07 PST 2007
On Mar 3, 2007, at 1:09 PM, Landon Fuller wrote:
> I agree. It's not that universal builds are a bad idea; it's that
> supporting universal software requires serious bastardization of
> Portfiles in most cases. Assuming we implement some sort of binary
> distribution, I'd personally much rather use the approach that fkr
> and shantonu used for supporting Darwin x86 and PowerPC -- build
> the software on each system, natively, and then join the resultant
> RPMs into a single fat RPM.
I think this may have gotten lost in all my earlier verbiage, but I
also pointed out early in the conversation that there are many many
open source projects building universal at Apple without such
"bastardization". The Makefile for OpenSSL is just 147 lines, for
example, and of that at LEAST 50% has to do strictly with Apple's own
requirements (the whole SRCROOT and DSTROOT thing, order files, all
the things you probably still have nightmares about from time to
time). Perhaps 5 lines in the Makefile are devoted to the fact that
it's building universal.
The rest is in the "generic machinery" and helper scripts (which,
you'll instantly notice, have a lineage dating back to 10.1) like
this one:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ar.sh
Type: application/octet-stream
Size: 1852 bytes
Desc: not available
Url : http://lists.macosforge.org/pipermail/macports-dev/attachments/20070303/fe73dcbc/ar.obj
-------------- next part --------------
This gets used by the generic CoreOS Makefile machinery in place of ar
(1), given a bit of metadata expressed in other parts of the build
system. Are lipo(1) tricks like this the best way to do it? Not
even saying that. I'm simply saying that it's a fallacy to assume
that OpenSSL, OpenVPN and hundreds of other ports are all going to
need to grow universal variant rules as long and complex as the one
you posted. Just because someone hasn't templated that stuff and
stuck it somewhere for every port to use doesn't mean it can't be
done, and Apple's own open source projects are living proof of
that. I'm furthermore assuming that once a few more universal ports
get done and the commonality in the rules starts to shine through the
complexity, someone WILL sweep it into a pile and make it port-
generic. I can recall a time when darwin^H^H^H^H^Hmacports had a lot
of pretty crufty Portfiles which, over time, got substantially less
crufty as more primitives were added and consolidation mechanisms
like PortGroup got added.
Why is everyone being so quick to slam pipping's changes before they
even have a chance to go through an evolution or two? I know there
are still a few people here who still don't get the whole point of
universal builds, or doubt their value to MacPorts, but that's
orthogonal to the whole issue of "quality of implementation",
something which has to at least be given a chance to improve before
coming to any firm conclusions about it.
- Jordan
More information about the macports-dev
mailing list