[MacPorts] PortfileRecipes modified

MacPorts noreply at macports.org
Thu May 14 00:01:33 PDT 2009

Changed page "PortfileRecipes" by ryandesign at macports.org from*
Page URL: <http://trac.macports.org/wiki/PortfileRecipes>
Diff URL: <http://trac.macports.org/wiki/PortfileRecipes?action=diff&version=4>
Revision 4
Comment: add Xcode version check section

Index: PortfileRecipes
--- PortfileRecipes (version: 3)
+++ PortfileRecipes (version: 4)
@@ -77,3 +77,31 @@
 reinplace "s|@@PREFIX@@|${prefix}|g" ${worksrcpath}/configure
 that is then run in post-patch (see for example [browser:trunk/dports/devel/glib2 glib2]).
+== Xcode version checking == #xcode_version
+MacPorts [ticket:12794 does not check the version of Xcode] being used at runtime, but many ports will fail to build if the version of Xcode is too old. If you discover that your port requires a particular minimum version of Xcode, add this code to the port to print an error if the user's Xcode is too old:
+pre-extract {
+    if {"darwin" == ${os.platform} && 9 == ${os.major}} {
+        set minimum_xcodeversion 3.1
+        set current_xcodeversion [exec defaults read /Developer/Applications/Xcode.app/Contents/Info CFBundleShortVersionString]
+        if {[rpm-vercomp ${current_xcodeversion} ${minimum_xcodeversion}] < 0} {
+            ui_error "On Mac OS X ${macosx_version}, ${name} ${version} requires Xcode ${minimum_xcodeversion} or later but you have Xcode ${current_xcodeversion}."
+            return -code error "incompatible Xcode version"
+        }
+    }
+This example is from [browser:trunk/dports/multimedia/x264 x264].
+Note that the check [http://lists.macosforge.org/pipermail/macports-dev/2009-April/008112.html is done at pre-extract time].
+You can change the "9" in the os.major check to "8" if you're checking Tiger (Xcode 2.x) or "7" for Panther (Xcode 1.x) and update the minimum_xcodeversion accordingly.
+If you don't know what minimum version of Xcode would work, it's ok to just put whatever version you found that the port worked with.
+For example, libpixman is known to work with Xcode 1.5 but fail with 1.1, so [changeset:45892 libpixman now requires Xcode 1.5] on Panther, even though compatibility with Xcode 1.2 was not tested.
+It is better to make a user upgrade to a newer Xcode than for a port maintainer to spend time testing old versions.


* The IP shown here might not mean anything if the user or the server is
behind a proxy.

MacPorts <http://www.macports.org/>
Ports system for Mac OS

This is an automated message. Someone at http://www.macports.org/ added your email
address to be notified of changes on PortfileRecipes. If it was not you, please
report to .

More information about the macports-changes mailing list