unify script in MacPorts (was: Re: Is using TclX acceptable?)
Ryan Schmidt
ryandesign at macports.org
Sat Apr 14 21:36:50 PDT 2007
On Apr 14, 2007, at 22:43, Elias Pipping wrote:
> On Apr 15, 2007, at 5:36 AM, Ryan Schmidt wrote:
>
>> Recall the "unify" script from the Mozilla project, which they use
>> to create universal binaries of Firefox and other programs from a
>> ppc tree and an i386 tree, and my suggestion some time ago that it
>> might be a good idea to incorporate it into MacPorts. Would that
>> be a possible solution to your problem, without having to reinvent
>> that script in tcl?
>
> I do,
>
> it wasn't written in tcl though (iirc).
Right, it's not; my point was that I hope you're not trying to write
routines in tcl that do the same thing as unify *just because* unify
isn't in tcl [1]. I say unify is a mature and useful script, and if
its license is compatible with ours (research still needed here), why
not make use of it in MacPorts, regardless of what language it's in.
Now, if unify is insufficient for our needs in some way, then that
may be another story. But even then perhaps we should be thinking
"Can I make a minor change to unify so it does what I want?" rather
than "Can I write a whole new script that does what I want?"
I think I'm trying to suggest that maybe unify should be part of
MacPorts base, and that MacPorts base should provide a way to
configure and build a port separately for each architecture, then
unify it into a universal binary, with very little effort from the
port author.
One option would be for this mechanism to become the default way that
a universal port is built. The advantage would be that we can use an
earlier gcc and an earlier Mac OS X SDK for the ppc build, making it
compatible with earlier Mac OS X versions on ppc. We could introduce
new variables by which port authors can specify the Mac OS X version
that should be used for each architecture. This would be used to set
the MACOSX_DEPLOYMENT_TARGET variable correctly, to select the right
Mac OS X SDK to use, and maybe even to pick the version of gcc.
Or if support of differing Mac OS X versions for the ppc and i386
builds is not a goal we want to pursue, then the multiple-build-and-
then-unify approach could be a secondary way to build universally
which the port author could request in the case that the normal quick
-arch ppc -arch i386 universal variant we have in trunk now doesn't
work with a given software package (openssl, cairo, etc.) In this
case, we could extend Paul's new "universal_variant" variable.
Instead of "yes" and "no", it could have three values. I'm not sure
what they should be called yet, but: 1) an option to configure, build
and install everything in one go, using -arch ppc -arch i386 (this
would be default, as it is now), 2) an option to configure and build
separately for each arch and install into temporary directories, then
unify the result into the destroot, and 3) no universal variant at
all ("none", equivalent to "no" in Paul's current code).
[1] http://en.wikipedia.org/wiki/Not_Invented_Here
More information about the macports-dev
mailing list