Is there any value to packages? [was Re: Why no binaries?]

Ryan Schmidt ryandesign at macports.org
Fri Oct 26 16:47:55 PDT 2007


On Oct 26, 2007, at 16:40, James Sumners wrote:

> On 10/26/07, Ryan Schmidt wrote:
>
>>> Although, someone would need to step up and maintain a cross  
>>> compiler
>>> port for the maintainers. That would make it easier for the port
>>> maintainers to build the packages. If they could do something like
>>> `port package +g4 +g5 +intel`, I'm sure the idea would go over a lot
>>> better.
>>
>> Surely we don't need anything like that. Anyway, it wouldn't be a
>> cross compiler port that we would need. Rather, each port would need
>> to have this capability retrofitted. It would be very similar to the
>> +universal variant we're already trying to retrofit into ports. I
>> would much rather we continue working on perfecting that, rather than
>> introducing ways to cross-compile things, a capability which would
>> probably not be very well tested and therefore buggy.
>
> Well, how do you propose building things for different architectures
> on a build machine without a cross compiler? Unless you have a build
> machine for each architecture type, PPC (G4 and G5) and Intel, then
> you would have to use one.
>
> I don't much see the point in universal binaries in regard to
> MacPorts. If you have to build every package yourself, why bother? I
> certainly don't. It seems to me like a better effort would be to
> provide pre-built packages ala Debian, et al.

I think we're talking across purposes here.

I have no objection to MacPorts eventually providing binaries. I  
think we're probably a long way from that right now, though.

The gcc MacPorts usually uses for most ports -- Apple's gcc -- is a  
cross-compiler, in that it can create a binary for PowerPC, or for  
Intel, or for both (universal binary), regardless of what  
architecture you're on. Traditionally, MacPorts has built native  
binaries only -- Intel binaries on Intel Macs, PowerPC binaries on  
PowerPC Macs. Recently, in the MacPorts 1.4.x timeframe, a global  
+universal variant was added to MacPorts. The purpose is to allow you  
to build universal binaries of ports, on any Mac. The global  
+universal variant follows Apple's recommendations, and thus enables  
this for most standard software. However, many many portfiles are for  
software that isn't quite standard, so the universal support needs to  
be tweaked for those portfiles, in either simple or complicated ways.  
This effort has already been underway for some time, and my point was  
that we should just continue that effort, so that we eventually have  
a ports tree that can be built universally. Then, when we gain the  
ability to distribute binaries some time in the distant future, all  
we have to do is distribute a single universal binary, which can have  
been built on any Mac, and will then work on any Mac. This is much  
better than now introducing lots of new syntax and code for allowing,  
say, a PowerPC Mac user to build a port for an Intel Mac.

An issue we have not yet tackled is the difference between 32-bit and  
64-bit machines. Our universal binaries are currently 32-bit only. We  
could investigate ways to build 4-way universal binaries (32- and 64- 
bit Intel, 32- and 64-bit PowerPC). I wonder if most software would  
benefit from being 64-bit, though. I would suspect not, but am not sure.

Also, they're for Mac OS X 10.4 and up only. We could also  
investigate ways to build universal binaries that work on 10.3 and up  
on PowerPC Macs and 10.4 and up on Intel Macs. But by the time we get  
around to having binary package distributions, 10.3 may no longer be  
supported by MacPorts, so it may be a moot point.



More information about the macports-users mailing list