New install MAMP

Ryan Schmidt ryandesign at
Sat Jun 5 21:34:13 PDT 2010

On Jun 5, 2010, at 23:15, Scott Haneda wrote:

> On Jun 5, 2010, at 7:07 PM, Ryan Schmidt wrote:
>> On Jun 5, 2010, at 20:00, Scott Haneda wrote:
>>> Mac Mini that seems to be 64 bit capable...
>>>  $file `which ls`
>>>  /bin/ls: Mach-O universal binary with 2 architectures
>>>  /bin/ls (for architecture x86_64):	Mach-O 64-bit executable x86_64
>>>  /bin/ls (for architecture i386):	Mach-O executable i386
>> All that tells us is that your "ls" command contains x86_64 and i386 executables, which AFAIK will always be the case on Snow Leopard, regardless what processor you have. To see whether your Mac is actually 64-bit capable, run:
> Bah, ok, I thought that if a UB existed, that the CPU had to support it.  So the OS knows how to ignore the bits of a binary that have architecture specific builds in it even if the hardware itself can't support it?  Thats interesting to learn.  So in theory, you could see `file` return PPC as an option, even if it were obviously as in this case, Intel?
> I never would have thought this to be the case, and thought it more like trying to run a classic app on a new machine of today.

Sure. That's the point of universal binaries: they contain many architectures, and the OS uses the best one for the Mac it's currently running on.

>> sysctl hw.cpu64bit_capable
>> If it says "1" your Mac is 64-bit capable; if it says "0", it isn't. (The first Intel-based line of Mac minis used Intel Core processors (which are not 64-bit capable)).
> That is the command I wanted then, and that explains it:
>    $sysctl hw.cpu64bit_capable
>        hw.cpu64bit_capable: 0
> What is getting me, is this should be 64 capable, according to system_profiler:
>    Hardware Overview:
>      Model Name: Mac mini
>      Model Identifier: Macmini1,1
>      Processor Name: Intel Core Duo
>      Processor Speed: 1.66 GHz
>      Number Of Processors: 1
>      Total Number Of Cores: 2
>      L2 Cache: 2 MB
>      Memory: 2 GB
>      Bus Speed: 667 MHz
>      Boot ROM Version: MM11.0055.B08
> I thought only the Core Solo's were not 64 bit capable, and anything Core 2 Duo were?  Or is this the difference in a Core Duo and a Core _2_ Duo?

That's exactly the difference. The Intel Core Solo and Duo are 32-bit processors (with 1 or 2 cores, respectively), while the Intel Core 2 Solo and Duo are 64-bit processors.

> Someone on #macports said this was a bug, which is why I came here.  I am guessing this is not a bug, and I was doing this wrong, which was trying to build universal on a arch that does not support it.
> Hoever, would it not be a good idea to save the user from this mistake?  If hw.cpu64bit_capable returns 0, then either the +universal could be ignored, which could be ambiguous to the user, with them thinking a UB was made, or, MP could exit out with an error: "Sorry, your machine does not support building as +universal".
> I managed to get it all running, another MAMP install successfully working, hooray!

Again, the machine *does* support the notion of universal binaries; all Macs running 10.4 or later do. It may not, however, necessarily support compiling, for example in your case, 64-bit software on a 32-bit machine. You could set universal_archs to "ppc i386" (instead of the Snow Leopard default of "x86_64 i386") and it should be able to do that. Not that there's any reason to do that, but it would prove to you that you can build a universal binary for *some* set of architectures.

But as you said, even for ports that do build 64-bit on 32-bit machines, there's probably no reason why someone with a 32-bit machine should want to do so, so it might not be unreasonable for MacPorts to exit with a helpful error if trying to build for a 64-bit architecture on a 32-bit machine (i.e. either universal_archs contains x86_64 or ppc64 and the universal variant is used, or build_arch is x86_64 or ppc64 and the universal variant is not used). Could you file a ticket for this request?

More information about the macports-users mailing list