OSXHorrors » History » Version 13
  Chris Cannam, 2011-03-01 11:17 AM 
  
| 1 | 1 | Chris Cannam | h1. OS/X version, hardware platform, and Qt version compatibility | 
|---|---|---|---|
| 2 | 1 | Chris Cannam | |
| 3 | 6 | Chris Cannam | *Executive summary:* For a program like EasyHg that demands the widest possible compatibility, we currently want to hit the following targets: | 
| 4 | 6 | Chris Cannam | |
| 5 | 6 | Chris Cannam | * 10.4 PPC 32-bit Carbon | 
| 6 | 6 | Chris Cannam | * 10.4 Intel 32-bit Carbon | 
| 7 | 6 | Chris Cannam | * 10.6 Intel 64-bit Cocoa | 
| 8 | 1 | Chris Cannam | |
| 9 | 8 | Chris Cannam | To do this, we currently need at least two builds of Qt: | 
| 10 | 8 | Chris Cannam | |
| 11 | 12 | Chris Cannam | * 10.6 gcc-4.2 Cocoa x86_64 | 
| 12 | 8 | Chris Cannam | * 10.4 gcc-4.0 Carbon PPC and i386 | 
| 13 | 1 | Chris Cannam | |
| 14 | 9 | Chris Cannam | This currently means the Qt 4.7.1 default distribution plus a separate Carbon build will do. | 
| 15 | 9 | Chris Cannam | |
| 16 | 1 | Chris Cannam | Note it is not possible to cover all platforms in a single build step, we always need to do at least two separate builds plus lipo. | 
| 17 | 12 | Chris Cannam | |
| 18 | 12 | Chris Cannam | If we are going to make a 3-way universal binary, we need to ensure the 10.4 build gets selected for i386 -- i.e. to pull only the x86_64 architecture from any 10.5 or 10.6 SDK build we do. The inability to select between different i386 versions from a single universal binary is a strong incentive to stick to a single 10.4+ Carbon build for all 32-bit platforms. | 
| 19 | 1 | Chris Cannam | |
| 20 | 5 | Chris Cannam | h2. OS/X 10.6 | 
| 21 | 5 | Chris Cannam | |
| 22 | 1 | Chris Cannam | h3. As target | 
| 23 | 1 | Chris Cannam | |
| 24 | 11 | Chris Cannam | * By far the most common version as of Feb 2011 (apparently >80%) | 
| 25 | 5 | Chris Cannam | * Not supported on PPC | 
| 26 | 5 | Chris Cannam | * Runs in 64-bit mode by default where possible | 
| 27 | 10 | Chris Cannam | * Note Python is also 64-bit by default, so PyQt needs to be as well | 
| 28 | 5 | Chris Cannam | * Is _not_ always 64-bit -- it is supported on 32-bit-only hardware such as Core Duo (first Intel Macs) | 
| 29 | 1 | Chris Cannam | |
| 30 | 1 | Chris Cannam | h3. As build host | 
| 31 | 1 | Chris Cannam | |
| 32 | 5 | Chris Cannam | * Builds 64-bit by default | 
| 33 | 5 | Chris Cannam | * Can be used to do 32-bit Intel and PPC builds | 
| 34 | 1 | Chris Cannam | |
| 35 | 1 | Chris Cannam | h2. OS/X 10.5 | 
| 36 | 1 | Chris Cannam | |
| 37 | 1 | Chris Cannam | h3. As target | 
| 38 | 1 | Chris Cannam | |
| 39 | 2 | Chris Cannam | * Not all that much more widely used than 10.4 -- if we were dropping 10.4, we probably might as well drop 10.5 as well | 
| 40 | 1 | Chris Cannam | * Last version supported for PPC platforms | 
| 41 | 1 | Chris Cannam | * Runs in 32-bit mode by default | 
| 42 | 1 | Chris Cannam | * Can build for it from 10.5, 10.6 | 
| 43 | 1 | Chris Cannam | * Requires SDK @/Developer/SDKs/MacOSX10.5.SDK@ | 
| 44 | 1 | Chris Cannam | * First version to support Objective-C 2.0 | 
| 45 | 1 | Chris Cannam | * Qt Cocoa supported | 
| 46 | 1 | Chris Cannam | |
| 47 | 1 | Chris Cannam | h3. As build host | 
| 48 | 1 | Chris Cannam | |
| 49 | 1 | Chris Cannam | * Builds 32-bit by default | 
| 50 | 1 | Chris Cannam | * Can be used to do 64-bit builds | 
| 51 | 1 | Chris Cannam | |
| 52 | 5 | Chris Cannam | h2. OS/X 10.4 | 
| 53 | 1 | Chris Cannam | |
| 54 | 1 | Chris Cannam | h3. As target | 
| 55 | 1 | Chris Cannam | |
| 56 | 5 | Chris Cannam | * Oldest version still apparently in use as of Feb 2011: not very widespread (low single digit %age of Mac users), but at least two researchers here use it | 
| 57 | 5 | Chris Cannam | * Appears in PPC and i386 systems | 
| 58 | 5 | Chris Cannam | * Runs in 32-bit mode only | 
| 59 | 5 | Chris Cannam | * Can build for it from 10.4, 10.5, 10.6 | 
| 60 | 5 | Chris Cannam | * Requires SDK @/Developer/SDKs/MacOSX10.4u.SDK@ | 
| 61 | 5 | Chris Cannam | * Requires @-mmacosx-version-min=10.4@ on 10.5+ | 
| 62 | 5 | Chris Cannam | * Requires gcc-4.0 to be requested explicitly on 10.6 | 
| 63 | 5 | Chris Cannam | * Does not support Objective-C 2.0 | 
| 64 | 5 | Chris Cannam | * Not a supported target for Qt's Cocoa builds, Qt Carbon needed | 
| 65 | 2 | Chris Cannam | |
| 66 | 2 | Chris Cannam | h3. As build host | 
| 67 | 2 | Chris Cannam | |
| 68 | 5 | Chris Cannam | * Does not support Objective-C 2.0 | 
| 69 | 5 | Chris Cannam | * 10.4u SDK can be used to build 64-bit executables of simple C/C++ programs such as plugins, but not of GUIs or anything using Core frameworks | 
| 70 | 13 | Chris Cannam | |
| 71 | 13 | Chris Cannam | h2. Special note about Python | 
| 72 | 13 | Chris Cannam | |
| 73 | 13 | Chris Cannam | Python versioning and compatibility is a bit of a nightmare. The system Python is 2.5 on 10.4/10.5 and 2.6 on 10.6 -- OK so far. On 10.6, Python is 32-/64-bit universal which runs in 64-bit by default on a 64-bit system, so any modules need to be available both ways as well (troubleshooting this when it goes wrong is quite tricky). There is an environment variable @VERSIONER_PYTHON_PREFER_32_BIT@ which you can set to cause it always to run in 32-bit. | 
| 74 | 13 | Chris Cannam | |
| 75 | 13 | Chris Cannam | Where things get complicated is when users install additional versions of Python from other ports repositories; this seems to be quite common around these parts. Then your user-installed Python is likely to get picked up before the system one, and you don't know whether it's going to be 32- or 64-bit, and it won't support the versioning environment variable. My impression is that people get custom Python installs dragged in as dependencies of other packages, and that tends to break quite a lot of things. | 
| 76 | 13 | Chris Cannam | |
| 77 | 13 | Chris Cannam | Some 10.6 system Pythons have a problem loading modules, apparently something getting broken during the upgrade from 10.5 -- this affects my home machine, but I haven't had time to look into it properly yet. |