[57388] trunk/dports/lang/python25
jmr at macports.org
jmr at macports.org
Thu Sep 10 06:23:43 PDT 2009
Revision: 57388
http://trac.macports.org/changeset/57388
Author: jmr at macports.org
Date: 2009-09-10 06:23:37 -0700 (Thu, 10 Sep 2009)
Log Message:
-----------
python25: backport enough 64-bit fixes from 2.6 to get a reasonable Mac build, fix curses module, re-enable parallel build, fix build/destroot arg quoting, remove darwin 7
Modified Paths:
--------------
trunk/dports/lang/python25/Portfile
trunk/dports/lang/python25/files/patch-setup.py.diff
Added Paths:
-----------
trunk/dports/lang/python25/files/patch-64bit.diff
Modified: trunk/dports/lang/python25/Portfile
===================================================================
--- trunk/dports/lang/python25/Portfile 2009-09-10 11:54:16 UTC (rev 57387)
+++ trunk/dports/lang/python25/Portfile 2009-09-10 13:23:37 UTC (rev 57388)
@@ -5,7 +5,7 @@
name python25
version 2.5.4
-revision 6
+revision 7
set branch [join [lrange [split ${version} .] 0 1] .]
categories lang
platforms darwin
@@ -30,7 +30,10 @@
patchfiles patch-Makefile.pre.in.diff \
patch-Lib-cgi.py.diff \
patch-Lib-distutils-dist.py.diff \
- patch-setup.py.diff
+ patch-setup.py.diff \
+ patch-configure-badcflags.diff \
+ patch-configure-arch_only.diff \
+ patch-64bit.diff
depends_lib port:gettext port:zlib port:openssl port:tk \
port:sqlite3 port:db46 port:bzip2 \
@@ -42,7 +45,7 @@
--enable-ipv6 \
--with-cxx=${configure.cxx}
-use_parallel_build no
+configure.cppflags-append -I${prefix}/include/ncurses
post-patch {
reinplace "s|__PREFIX__|${prefix}|g" ${worksrcpath}/Lib/cgi.py \
@@ -73,23 +76,15 @@
destroot.target frameworkinstall maninstall
# ensure that correct compiler is used
-build.args-append MAKE="${build.cmd} CC=${configure.cc}"
-destroot.args-append MAKE="${destroot.cmd} CC=${configure.cc}"
+build.args-append MAKE="${build.cmd}" CC="${configure.cc}"
+destroot.args-append MAKE="${destroot.cmd}" CC="${configure.cc}"
select.group python
select.file ${filespath}/python[string map {. {}} ${branch}]
platform macosx {
post-destroot {
-if ([variant_isset darwin_10]) {
- file rename ${destroot}${prefix}/share/man/man1/python.1 ${destroot}${prefix}/share/man/man1/python${branch}.1
- # delete symlinks without version suffix, use python_select instead to choose version
- foreach bin { python pythonw idle pydoc smtpd.py python-config } {
- file delete ${destroot}${prefix}/bin/${bin}
- }
-} else {
-
set framewpath ${frameworks_dir}/Python.framework
set framewdir ${framewpath}/Versions/${branch}
@@ -130,7 +125,6 @@
ln -s ${framewdir}/Python ${python_staticlink}
}
}
-}
post-activate {
ui_msg "\nTo fully complete your installation and make python $branch the default, please run
@@ -138,31 +132,13 @@
\n\tsudo python_select $name\n"
}
-platform darwin 7 {
- # there is no SystemStubs on 10.3
- post-patch {
- reinplace "s|-lSystemStubs||g" \
- configure configure.in
- }
- post-configure {
- reinplace "s|-lSystemStubs||g" \
- Makefile.pre.in Makefile.pre Makefile
- }
- # To avoid GCC incompatibility issue. See http://nxg.me.uk/note/2004/restFP/ (by ebgssth at gmail.com, ticket #13322)
- configure.ldflags-append "-lcc_dynamic"
-}
-
platform darwin 9 {
configure.cppflags-append -D__DARWIN_UNIX03
}
platform darwin 10 {
- configure.args-delete --enable-framework=${frameworks_dir}
- configure.args-append --disable-toolbox-glue --disable-framework
configure.cppflags-append -D_DARWIN_C_SOURCE
- patchfiles-append patch-configure-badcflags.diff \
- patch-configure-arch_only.diff \
- patch-pyconfig.h.in.diff
+ patchfiles-append patch-pyconfig.h.in.diff
}
platform puredarwin {
Added: trunk/dports/lang/python25/files/patch-64bit.diff
===================================================================
--- trunk/dports/lang/python25/files/patch-64bit.diff (rev 0)
+++ trunk/dports/lang/python25/files/patch-64bit.diff 2009-09-10 13:23:37 UTC (rev 57388)
@@ -0,0 +1,1234 @@
+--- Include/pymactoolbox.h.orig 2004-11-05 18:02:59.000000000 +1100
++++ Include/pymactoolbox.h 2009-09-10 18:08:58.000000000 +1000
+@@ -8,7 +8,9 @@
+ #endif
+
+ #include <Carbon/Carbon.h>
++#ifndef __LP64__
+ #include <QuickTime/QuickTime.h>
++#endif /* !__LP64__ */
+
+ /*
+ ** Helper routines for error codes and such.
+@@ -18,8 +20,10 @@
+ PyObject *PyMac_GetOSErrException(void); /* Initialize & return it */
+ PyObject *PyErr_Mac(PyObject *, int); /* Exception with a mac error */
+ PyObject *PyMac_Error(OSErr); /* Uses PyMac_GetOSErrException */
++#ifndef __LP64__
+ extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert
+ fsspec->path */
++#endif /* !__LP64__ */
+ /*
+ ** These conversion routines are defined in mactoolboxglue.c itself.
+ */
+@@ -83,9 +87,10 @@
+ #endif /* USE_TOOLBOX_OBJECT_GLUE */
+
+ /* macfs exports */
++#ifndef __LP64__
+ int PyMac_GetFSSpec(PyObject *, FSSpec *); /* argument parser for FSSpec */
+ PyObject *PyMac_BuildFSSpec(FSSpec *); /* Convert FSSpec to PyObject */
+-
++#endif /* !__LP64__ */
+ int PyMac_GetFSRef(PyObject *, FSRef *); /* argument parser for FSRef */
+ PyObject *PyMac_BuildFSRef(FSRef *); /* Convert FSRef to PyObject */
+
+@@ -101,39 +106,54 @@
+ extern int CmpInstObj_Convert(PyObject *, ComponentInstance *);
+
+ /* Ctl exports */
++#ifndef __LP64__
+ extern PyObject *CtlObj_New(ControlHandle);
+ extern int CtlObj_Convert(PyObject *, ControlHandle *);
++#endif /* !__LP64__ */
+
+ /* Dlg exports */
++#ifndef __LP64__
+ extern PyObject *DlgObj_New(DialogPtr);
+ extern int DlgObj_Convert(PyObject *, DialogPtr *);
+ extern PyObject *DlgObj_WhichDialog(DialogPtr);
++#endif /* !__LP64__ */
+
+ /* Drag exports */
++#ifndef __LP64__
+ extern PyObject *DragObj_New(DragReference);
+ extern int DragObj_Convert(PyObject *, DragReference *);
++#endif /* !__LP64__ */
+
+ /* List exports */
++#ifndef __LP64__
+ extern PyObject *ListObj_New(ListHandle);
+ extern int ListObj_Convert(PyObject *, ListHandle *);
++#endif /* !__LP64__ */
+
+ /* Menu exports */
++#ifndef __LP64__
+ extern PyObject *MenuObj_New(MenuHandle);
+ extern int MenuObj_Convert(PyObject *, MenuHandle *);
++#endif /* !__LP64__ */
+
+ /* Qd exports */
++#ifndef __LP64__
+ extern PyObject *GrafObj_New(GrafPtr);
+ extern int GrafObj_Convert(PyObject *, GrafPtr *);
+ extern PyObject *BMObj_New(BitMapPtr);
+ extern int BMObj_Convert(PyObject *, BitMapPtr *);
+ extern PyObject *QdRGB_New(RGBColor *);
+ extern int QdRGB_Convert(PyObject *, RGBColor *);
++#endif /* !__LP64__ */
+
+ /* Qdoffs exports */
++#ifndef __LP64__
+ extern PyObject *GWorldObj_New(GWorldPtr);
+ extern int GWorldObj_Convert(PyObject *, GWorldPtr *);
++#endif /* !__LP64__ */
+
+ /* Qt exports */
++#ifndef __LP64__
+ extern PyObject *TrackObj_New(Track);
+ extern int TrackObj_Convert(PyObject *, Track *);
+ extern PyObject *MovieObj_New(Movie);
+@@ -146,6 +166,7 @@
+ extern int UserDataObj_Convert(PyObject *, UserData *);
+ extern PyObject *MediaObj_New(Media);
+ extern int MediaObj_Convert(PyObject *, Media *);
++#endif /* !__LP64__ */
+
+ /* Res exports */
+ extern PyObject *ResObj_New(Handle);
+@@ -154,13 +175,17 @@
+ extern int OptResObj_Convert(PyObject *, Handle *);
+
+ /* TE exports */
++#ifndef __LP64__
+ extern PyObject *TEObj_New(TEHandle);
+ extern int TEObj_Convert(PyObject *, TEHandle *);
++#endif /* !__LP64__ */
+
+ /* Win exports */
++#ifndef __LP64__
+ extern PyObject *WinObj_New(WindowPtr);
+ extern int WinObj_Convert(PyObject *, WindowPtr *);
+ extern PyObject *WinObj_WhichWindow(WindowPtr);
++#endif /* !__LP64__ */
+
+ /* CF exports */
+ extern PyObject *CFObj_New(CFTypeRef);
+--- Python/mactoolboxglue.c.orig 2006-07-12 02:44:25.000000000 +1000
++++ Python/mactoolboxglue.c 2009-09-10 19:26:39.000000000 +1000
+@@ -105,7 +105,7 @@
+ return PyErr_Mac(PyMac_GetOSErrException(), err);
+ }
+
+-
++#ifndef __LP64__
+ OSErr
+ PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
+ {
+@@ -153,6 +153,7 @@
+ Py_XDECREF(fs);
+ return err;
+ }
++#endif /* !__LP64__ */
+
+ /* Convert a 4-char string object argument to an OSType value */
+ int
+@@ -417,6 +418,7 @@
+ GLUE_NEW(GWorldPtr, GWorldObj_New, "Carbon.Qdoffs")
+ GLUE_CONVERT(GWorldPtr, GWorldObj_Convert, "Carbon.Qdoffs")
+
++#ifndef __LP64__
+ GLUE_NEW(Track, TrackObj_New, "Carbon.Qt")
+ GLUE_CONVERT(Track, TrackObj_Convert, "Carbon.Qt")
+ GLUE_NEW(Movie, MovieObj_New, "Carbon.Qt")
+@@ -429,6 +431,7 @@
+ GLUE_CONVERT(UserData, UserDataObj_Convert, "Carbon.Qt")
+ GLUE_NEW(Media, MediaObj_New, "Carbon.Qt")
+ GLUE_CONVERT(Media, MediaObj_Convert, "Carbon.Qt")
++#endif /* !__LP64__ */
+
+ GLUE_NEW(Handle, ResObj_New, "Carbon.Res")
+ GLUE_CONVERT(Handle, ResObj_Convert, "Carbon.Res")
+--- Modules/_ctypes/libffi/src/darwin/ffitarget.h.orig 2006-05-26 07:58:05.000000000 +1000
++++ Modules/_ctypes/libffi/src/darwin/ffitarget.h 2009-09-10 20:15:39.000000000 +1000
+@@ -4,7 +4,7 @@
+ * created by configure). This makes is possible to build a univeral binary
+ * of ctypes in one go.
+ */
+-#if defined(__i386__)
++#if defined(__i386__) || defined(__x86_64__)
+
+ #ifndef X86_DARWIN
+ #define X86_DARWIN
+@@ -13,7 +13,7 @@
+
+ #include "../src/x86/ffitarget.h"
+
+-#elif defined(__ppc__)
++#elif defined(__ppc__) || defined(__ppc64__)
+
+ #ifndef POWERPC_DARWIN
+ #define POWERPC_DARWIN
+--- Mac/Modules/res/_Resmodule.c.orig 2005-07-04 06:59:44.000000000 +1000
++++ Mac/Modules/res/_Resmodule.c 2009-09-10 20:44:43.000000000 +1000
+@@ -414,6 +414,7 @@
+ return _res;
+ }
+
++#ifndef __LP64__
+ static PyObject *ResObj_as_Control(ResourceObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -431,6 +432,7 @@
+ return _res;
+
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *ResObj_LoadResource(ResourceObject *_self, PyObject *_args)
+ {
+@@ -501,10 +503,12 @@
+ PyDoc_STR("(long newSize) -> None")},
+ {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1,
+ PyDoc_STR("() -> (Handle _rv)")},
++#ifndef __LP64__
+ {"as_Control", (PyCFunction)ResObj_as_Control, 1,
+ PyDoc_STR("Return this resource/handle as a Control")},
+ {"as_Menu", (PyCFunction)ResObj_as_Menu, 1,
+ PyDoc_STR("Return this resource/handle as a Menu")},
++#endif /* !__LP64__ */
+ {"LoadResource", (PyCFunction)ResObj_LoadResource, 1,
+ PyDoc_STR("() -> None")},
+ {"AutoDispose", (PyCFunction)ResObj_AutoDispose, 1,
+@@ -1152,6 +1156,7 @@
+ return _res;
+ }
+
++#ifndef __LP64__
+ static PyObject *Res_OpenRFPerm(PyObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -1287,6 +1292,7 @@
+ _res = Py_None;
+ return _res;
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args)
+ {
+@@ -1327,6 +1333,7 @@
+ return _res;
+ }
+
++#ifndef __LP64__
+ static PyObject *Res_FSpResourceFileAlreadyOpen(PyObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -1413,6 +1420,7 @@
+ nextRefNum);
+ return _res;
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *Res_FSOpenResFile(PyObject *_self, PyObject *_args)
+ {
+@@ -1438,6 +1446,7 @@
+ return _res;
+ }
+
++#ifndef __LP64__
+ static PyObject *Res_FSCreateResFile(PyObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -1534,6 +1543,7 @@
+ PyMac_BuildFSSpec, &newSpec);
+ return _res;
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *Res_FSOpenResourceFile(PyObject *_self, PyObject *_args)
+ {
+@@ -1637,6 +1647,7 @@
+ PyDoc_STR("(short refNum) -> (short _rv)")},
+ {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1,
+ PyDoc_STR("(short refNum, short attrs) -> None")},
++#ifndef __LP64__
+ {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1,
+ PyDoc_STR("(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)")},
+ {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1,
+@@ -1647,10 +1658,12 @@
+ PyDoc_STR("(FSSpec spec, SignedByte permission) -> (short _rv)")},
+ {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1,
+ PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")},
++#endif /* !__LP64__ */
+ {"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1,
+ PyDoc_STR("(SInt16 refNum, RsrcChainLocation where) -> None")},
+ {"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1,
+ PyDoc_STR("(SInt16 refNum) -> None")},
++#ifndef __LP64__
+ {"FSpResourceFileAlreadyOpen", (PyCFunction)Res_FSpResourceFileAlreadyOpen, 1,
+ PyDoc_STR("(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")},
+ {"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1,
+@@ -1659,14 +1672,17 @@
+ PyDoc_STR("() -> (SInt16 refNum)")},
+ {"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1,
+ PyDoc_STR("(SInt16 curRefNum) -> (SInt16 nextRefNum)")},
++#endif /* !__LP64__ */
+ {"FSOpenResFile", (PyCFunction)Res_FSOpenResFile, 1,
+ PyDoc_STR("(FSRef ref, SignedByte permission) -> (short _rv)")},
++#ifndef __LP64__
+ {"FSCreateResFile", (PyCFunction)Res_FSCreateResFile, 1,
+ PyDoc_STR("(FSRef parentRef, Buffer nameLength) -> (FSRef newRef, FSSpec newSpec)")},
+ {"FSResourceFileAlreadyOpen", (PyCFunction)Res_FSResourceFileAlreadyOpen, 1,
+ PyDoc_STR("(FSRef resourceFileRef) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")},
+ {"FSCreateResourceFile", (PyCFunction)Res_FSCreateResourceFile, 1,
+ PyDoc_STR("(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)")},
++#endif /* !__LP64__ */
+ {"FSOpenResourceFile", (PyCFunction)Res_FSOpenResourceFile, 1,
+ PyDoc_STR("(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)")},
+ {"Handle", (PyCFunction)Res_Handle, 1,
+--- Mac/Modules/MacOS.c.orig 2006-07-26 05:20:54.000000000 +1000
++++ Mac/Modules/MacOS.c 2009-09-10 21:47:34.000000000 +1000
+@@ -54,7 +54,7 @@
+ do_close(rfobject *self)
+ {
+ if (self->isclosed ) return;
+- (void)FSClose(self->fRefNum);
++ (void)FSCloseFork(self->fRefNum);
+ self->isclosed = 1;
+ }
+
+@@ -68,6 +68,7 @@
+ long n;
+ PyObject *v;
+ OSErr err;
++ ByteCount n2;
+
+ if (self->isclosed) {
+ PyErr_SetString(PyExc_ValueError, "Operation on closed file");
+@@ -81,13 +82,13 @@
+ if (v == NULL)
+ return NULL;
+
+- err = FSRead(self->fRefNum, &n, PyString_AsString(v));
++ err = FSReadFork(self->fRefNum, fsAtMark, 0, n, PyString_AsString(v), &n2);
+ if (err && err != eofErr) {
+ PyMac_Error(err);
+ Py_DECREF(v);
+ return NULL;
+ }
+- _PyString_Resize(&v, n);
++ _PyString_Resize(&v, n2);
+ return v;
+ }
+
+@@ -109,7 +110,7 @@
+ }
+ if (!PyArg_ParseTuple(args, "s#", &buffer, &size))
+ return NULL;
+- err = FSWrite(self->fRefNum, &size, buffer);
++ err = FSWriteFork(self->fRefNum, fsAtMark, 0, size, buffer, NULL);
+ if (err) {
+ PyMac_Error(err);
+ return NULL;
+@@ -126,9 +127,9 @@
+ static PyObject *
+ rf_seek(rfobject *self, PyObject *args)
+ {
+- long amount, pos;
++ long amount;
+ int whence = SEEK_SET;
+- long eof;
++ int mode;
+ OSErr err;
+
+ if (self->isclosed) {
+@@ -138,35 +139,23 @@
+ if (!PyArg_ParseTuple(args, "l|i", &amount, &whence))
+ return NULL;
+
+- if ((err = GetEOF(self->fRefNum, &eof)))
+- goto ioerr;
+-
+ switch (whence) {
+ case SEEK_CUR:
+- if ((err = GetFPos(self->fRefNum, &pos)))
+- goto ioerr;
++ mode = fsFromMark;
+ break;
+ case SEEK_END:
+- pos = eof;
++ mode = fsFromLEOF;
+ break;
+ case SEEK_SET:
+- pos = 0;
++ mode = fsFromStart;
+ break;
+ default:
+ PyErr_BadArgument();
+ return NULL;
+ }
+
+- pos += amount;
+-
+- /* Don't bother implementing seek past EOF */
+- if (pos > eof || pos < 0) {
+- PyErr_BadArgument();
+- return NULL;
+- }
+-
+- if ((err = SetFPos(self->fRefNum, fsFromStart, pos)) ) {
+-ioerr:
++ err = FSSetForkPosition(self->fRefNum, mode, amount);
++ if (err != noErr) {
+ PyMac_Error(err);
+ return NULL;
+ }
+@@ -182,7 +171,7 @@
+ static PyObject *
+ rf_tell(rfobject *self, PyObject *args)
+ {
+- long where;
++ long long where;
+ OSErr err;
+
+ if (self->isclosed) {
+@@ -191,11 +180,13 @@
+ }
+ if (!PyArg_ParseTuple(args, ""))
+ return NULL;
+- if ((err = GetFPos(self->fRefNum, &where)) ) {
++
++ err = FSGetForkPosition(self->fRefNum, &where);
++ if (err != noErr) {
+ PyMac_Error(err);
+ return NULL;
+ }
+- return PyInt_FromLong(where);
++ return PyLong_FromLongLong(where);
+ }
+
+ static char rf_close__doc__[] =
+@@ -292,17 +283,61 @@
+ static PyObject *
+ MacOS_GetCreatorAndType(PyObject *self, PyObject *args)
+ {
+- FSSpec fss;
+- FInfo info;
+ PyObject *creator, *type, *res;
+ OSErr err;
+-
+- if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss))
++ FSRef ref;
++ FSCatalogInfo cataloginfo;
++ FileInfo* finfo;
++
++ if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSRef, &ref)) {
++#ifndef __LP64__
++ /* This function is documented to take an FSSpec as well,
++ * which only works in 32-bit mode.
++ */
++ PyErr_Clear();
++ FSSpec fss;
++ FInfo info;
++
++ if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss))
++ return NULL;
++
++ if ((err = FSpGetFInfo(&fss, &info)) != noErr) {
++ return PyErr_Mac(MacOS_Error, err);
++ }
++ creator = PyString_FromStringAndSize(
++ (char *)&info.fdCreator, 4);
++ type = PyString_FromStringAndSize((char *)&info.fdType, 4);
++ res = Py_BuildValue("OO", creator, type);
++ Py_DECREF(creator);
++ Py_DECREF(type);
++ return res;
++#else /* __LP64__ */
++ return NULL;
++#endif /* __LP64__ */
++ }
++
++ err = FSGetCatalogInfo(&ref,
++ kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo,
++ NULL, NULL, NULL);
++ if (err != noErr) {
++ PyErr_Mac(MacOS_Error, err);
+ return NULL;
+- if ((err = FSpGetFInfo(&fss, &info)) != noErr)
+- return PyErr_Mac(MacOS_Error, err);
+- creator = PyString_FromStringAndSize((char *)&info.fdCreator, 4);
+- type = PyString_FromStringAndSize((char *)&info.fdType, 4);
++ }
++
++ if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) {
++ /* Directory: doesn't have type/creator info.
++ *
++ * The specific error code is for backward compatibility with
++ * earlier versions.
++ */
++ PyErr_Mac(MacOS_Error, fnfErr);
++ return NULL;
++
++ }
++ finfo = (FileInfo*)&(cataloginfo.finderInfo);
++ creator = PyString_FromStringAndSize((char*)&(finfo->fileCreator), 4);
++ type = PyString_FromStringAndSize((char*)&(finfo->fileType), 4);
++
+ res = Py_BuildValue("OO", creator, type);
+ Py_DECREF(creator);
+ Py_DECREF(type);
+@@ -314,20 +349,66 @@
+ static PyObject *
+ MacOS_SetCreatorAndType(PyObject *self, PyObject *args)
+ {
+- FSSpec fss;
+ ResType creator, type;
+- FInfo info;
++ FSRef ref;
++ FileInfo* finfo;
+ OSErr err;
+-
++ FSCatalogInfo cataloginfo;
++
+ if (!PyArg_ParseTuple(args, "O&O&O&",
++ PyMac_GetFSRef, &ref, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) {
++#ifndef __LP64__
++ /* Try to handle FSSpec arguments, for backward compatibility */
++ FSSpec fss;
++ FInfo info;
++
++ if (!PyArg_ParseTuple(args, "O&O&O&",
+ PyMac_GetFSSpec, &fss, PyMac_GetOSType, &creator, PyMac_GetOSType, &type))
++ return NULL;
++
++ if ((err = FSpGetFInfo(&fss, &info)) != noErr)
++ return PyErr_Mac(MacOS_Error, err);
++
++ info.fdCreator = creator;
++ info.fdType = type;
++
++ if ((err = FSpSetFInfo(&fss, &info)) != noErr)
++ return PyErr_Mac(MacOS_Error, err);
++ Py_INCREF(Py_None);
++ return Py_None;
++#else /* __LP64__ */
++ return NULL;
++#endif /* __LP64__ */
++ }
++
++ err = FSGetCatalogInfo(&ref,
++ kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo,
++ NULL, NULL, NULL);
++ if (err != noErr) {
++ PyErr_Mac(MacOS_Error, err);
+ return NULL;
+- if ((err = FSpGetFInfo(&fss, &info)) != noErr)
+- return PyErr_Mac(MacOS_Error, err);
+- info.fdCreator = creator;
+- info.fdType = type;
+- if ((err = FSpSetFInfo(&fss, &info)) != noErr)
+- return PyErr_Mac(MacOS_Error, err);
++ }
++
++ if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) {
++ /* Directory: doesn't have type/creator info.
++ *
++ * The specific error code is for backward compatibility with
++ * earlier versions.
++ */
++ PyErr_Mac(MacOS_Error, fnfErr);
++ return NULL;
++
++ }
++ finfo = (FileInfo*)&(cataloginfo.finderInfo);
++ finfo->fileCreator = creator;
++ finfo->fileType = type;
++
++ err = FSSetCatalogInfo(&ref, kFSCatInfoFinderInfo, &cataloginfo);
++ if (err != noErr) {
++ PyErr_Mac(MacOS_Error, fnfErr);
++ return NULL;
++ }
++
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+@@ -399,6 +480,7 @@
+ return Py_BuildValue("s", buf);
+ }
+
++#ifndef __LP64__
+ static char splash_doc[] = "Open a splash-screen dialog by resource-id (0=close)";
+
+ static PyObject *
+@@ -470,6 +552,7 @@
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
++#endif /* !__LP64__ */
+
+ static char WMAvailable_doc[] =
+ "True if this process can interact with the display."
+@@ -530,17 +613,18 @@
+ {
+ OSErr err;
+ char *mode = "r";
+- FSSpec fss;
+- SignedByte permission = 1;
++ FSRef ref;
++ SInt8 permission = fsRdPerm;
+ rfobject *fp;
++ HFSUniStr255 name;
+
+- if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSSpec, &fss, &mode))
++ if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSRef, &ref, &mode))
+ return NULL;
+ while (*mode) {
+ switch (*mode++) {
+ case '*': break;
+- case 'r': permission = 1; break;
+- case 'w': permission = 2; break;
++ case 'r': permission = fsRdPerm; break;
++ case 'w': permission = fsWrPerm; break;
+ case 'b': break;
+ default:
+ PyErr_BadArgument();
+@@ -548,33 +632,18 @@
+ }
+ }
+
+- if ( (fp = newrfobject()) == NULL )
++ err = FSGetResourceForkName(&name);
++ if (err != noErr) {
++ PyMac_Error(err);
+ return NULL;
++ }
+
+- err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum);
++ if ( (fp = newrfobject()) == NULL )
++ return NULL;
++
+
+- if ( err == fnfErr ) {
+- /* In stead of doing complicated things here to get creator/type
+- ** correct we let the standard i/o library handle it
+- */
+- FILE *tfp;
+- char pathname[PATHNAMELEN];
+-
+- if ( (err=PyMac_GetFullPathname(&fss, pathname, PATHNAMELEN)) ) {
+- PyMac_Error(err);
+- Py_DECREF(fp);
+- return NULL;
+- }
+-
+- if ( (tfp = fopen(pathname, "w")) == NULL ) {
+- PyMac_Error(fnfErr); /* What else... */
+- Py_DECREF(fp);
+- return NULL;
+- }
+- fclose(tfp);
+- err = HOpenRF(fss.vRefNum, fss.parID, fss.name, permission, &fp->fRefNum);
+- }
+- if ( err ) {
++ err = FSOpenFork(&ref, name.length, name.unicode, permission, &fp->fRefNum);
++ if (err != noErr) {
+ Py_DECREF(fp);
+ PyMac_Error(err);
+ return NULL;
+@@ -589,10 +658,12 @@
+ {"SetCreatorAndType", MacOS_SetCreatorAndType, 1, setcrtp_doc},
+ {"GetErrorString", MacOS_GetErrorString, 1, geterr_doc},
+ {"openrf", MacOS_openrf, 1, openrf_doc},
++#ifndef __LP64__
+ {"splash", MacOS_splash, 1, splash_doc},
+ {"DebugStr", MacOS_DebugStr, 1, DebugStr_doc},
+- {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc},
+ {"SysBeep", MacOS_SysBeep, 1, SysBeep_doc},
++#endif /* !__LP64__ */
++ {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc},
+ {"WMAvailable", MacOS_WMAvailable, 1, WMAvailable_doc},
+ {NULL, NULL} /* Sentinel */
+ };
+--- Mac/Modules/file/_Filemodule.c.orig 2006-05-29 07:57:35.000000000 +1000
++++ Mac/Modules/file/_Filemodule.c 2009-09-10 22:48:47.000000000 +1000
+@@ -18,9 +18,11 @@
+ #include <Carbon/Carbon.h>
+
+ #ifdef USE_TOOLBOX_OBJECT_GLUE
++#ifndef __LP64__
+ extern int _PyMac_GetFSSpec(PyObject *v, FSSpec *spec);
+-extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr);
+ extern PyObject *_PyMac_BuildFSSpec(FSSpec *spec);
++#endif /* !__LP64__ */
++extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr);
+ extern PyObject *_PyMac_BuildFSRef(FSRef *spec);
+
+ #define PyMac_GetFSSpec _PyMac_GetFSSpec
+@@ -28,20 +30,26 @@
+ #define PyMac_BuildFSSpec _PyMac_BuildFSSpec
+ #define PyMac_BuildFSRef _PyMac_BuildFSRef
+ #else
++#ifndef __LP64__
+ extern int PyMac_GetFSSpec(PyObject *v, FSSpec *spec);
+-extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr);
+ extern PyObject *PyMac_BuildFSSpec(FSSpec *spec);
++#endif /* !__LP64__ */
++extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr);
+ extern PyObject *PyMac_BuildFSRef(FSRef *spec);
+ #endif
+
+ /* Forward declarations */
++#ifndef __LP64__
+ static PyObject *FInfo_New(FInfo *itself);
+-static PyObject *FSRef_New(FSRef *itself);
+ static PyObject *FSSpec_New(FSSpec *itself);
++#define FSSpec_Convert PyMac_GetFSSpec
++#endif /* !__LP64__ */
++static PyObject *FSRef_New(FSRef *itself);
+ static PyObject *Alias_New(AliasHandle itself);
++#ifndef __LP64__
+ static int FInfo_Convert(PyObject *v, FInfo *p_itself);
++#endif /* !__LP64__ */
+ #define FSRef_Convert PyMac_GetFSRef
+-#define FSSpec_Convert PyMac_GetFSSpec
+ static int Alias_Convert(PyObject *v, AliasHandle *p_itself);
+
+ /*
+@@ -62,6 +70,7 @@
+ /*
+ ** Optional fsspec and fsref pointers. None will pass NULL
+ */
++#ifndef __LP64__
+ static int
+ myPyMac_GetOptFSSpecPtr(PyObject *v, FSSpec **spec)
+ {
+@@ -71,6 +80,7 @@
+ }
+ return PyMac_GetFSSpec(v, *spec);
+ }
++#endif /* !__LP64__ */
+
+ static int
+ myPyMac_GetOptFSRefPtr(PyObject *v, FSRef **ref)
+@@ -92,6 +102,7 @@
+ return Py_BuildValue("u#", itself->unicode, itself->length);
+ }
+
++#ifndef __LP64__
+ static OSErr
+ _PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
+ {
+@@ -135,6 +146,7 @@
+ }
+ return 0;
+ }
++#endif /* !__LP64__ */
+
+
+ static PyObject *File_Error;
+@@ -282,12 +294,28 @@
+
+ static PyObject *FSCatalogInfo_get_permissions(FSCatalogInfoObject *self, void *closure)
+ {
+- return Py_BuildValue("(llll)", self->ob_itself.permissions[0], self->ob_itself.permissions[1], self->ob_itself.permissions[2], self->ob_itself.permissions[3]);
++ FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions);
++ return Py_BuildValue("(llll)", info->userID, info->groupID, info->userAccess, info->mode);
+ }
+
+ static int FSCatalogInfo_set_permissions(FSCatalogInfoObject *self, PyObject *v, void *closure)
+ {
+- return PyArg_Parse(v, "(llll)", &self->ob_itself.permissions[0], &self->ob_itself.permissions[1], &self->ob_itself.permissions[2], &self->ob_itself.permissions[3])-1;
++ long userID;
++ long groupID;
++ long userAccess;
++ long mode;
++ int r;
++
++ FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions);
++
++ r = PyArg_Parse(v, "(llll)", &userID, &groupID, &userAccess, &mode);
++ if (!r) {
++ return -1;
++ }
++ info->userID = userID;
++ info->groupID = groupID;
++ info->userAccess = userAccess;
++ info->mode = mode;
+ return 0;
+ }
+
+@@ -501,6 +529,7 @@
+
+ /* ----------------------- Object type FInfo ------------------------ */
+
++#ifndef __LP64__
+ static PyTypeObject FInfo_Type;
+
+ #define FInfo_Check(x) ((x)->ob_type == &FInfo_Type || PyObject_TypeCheck((x), &FInfo_Type))
+@@ -682,6 +711,7 @@
+ FInfo_tp_free, /* tp_free */
+ };
+
++#endif /* !__LP64__ */
+ /* --------------------- End object type FInfo ---------------------- */
+
+
+@@ -729,6 +759,7 @@
+ self->ob_type->tp_free((PyObject *)self);
+ }
+
++#ifndef __LP64__
+ static PyObject *Alias_ResolveAlias(AliasObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -818,6 +849,7 @@
+ wasChanged);
+ return _res;
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *Alias_FSResolveAliasWithMountFlags(AliasObject *_self, PyObject *_args)
+ {
+@@ -891,6 +923,7 @@
+ }
+
+ static PyMethodDef Alias_methods[] = {
++#ifndef __LP64__
+ {"ResolveAlias", (PyCFunction)Alias_ResolveAlias, 1,
+ PyDoc_STR("(FSSpec fromFile) -> (FSSpec target, Boolean wasChanged)")},
+ {"GetAliasInfo", (PyCFunction)Alias_GetAliasInfo, 1,
+@@ -899,6 +932,7 @@
+ PyDoc_STR("(FSSpec fromFile, unsigned long mountFlags) -> (FSSpec target, Boolean wasChanged)")},
+ {"FollowFinderAlias", (PyCFunction)Alias_FollowFinderAlias, 1,
+ PyDoc_STR("(FSSpec fromFile, Boolean logon) -> (FSSpec target, Boolean wasChanged)")},
++#endif /* !__LP64__ */
+ {"FSResolveAliasWithMountFlags", (PyCFunction)Alias_FSResolveAliasWithMountFlags, 1,
+ PyDoc_STR("(FSRef fromFile, unsigned long mountFlags) -> (FSRef target, Boolean wasChanged)")},
+ {"FSResolveAlias", (PyCFunction)Alias_FSResolveAlias, 1,
+@@ -1033,6 +1067,7 @@
+
+
+ /* ----------------------- Object type FSSpec ----------------------- */
++#ifndef __LP64__
+
+ static PyTypeObject FSSpec_Type;
+
+@@ -1488,6 +1523,7 @@
+ FSSpec_tp_free, /* tp_free */
+ };
+
++#endif /* !__LP64__ */
+ /* --------------------- End object type FSSpec --------------------- */
+
+
+@@ -1568,7 +1604,9 @@
+ FSCatalogInfoBitmap whichInfo;
+ FSCatalogInfo catalogInfo;
+ FSRef newRef;
++#ifndef __LP64__
+ FSSpec newSpec;
++#endif /* !__LP64__ */
+ if (!PyArg_ParseTuple(_args, "u#lO&",
+ &nameLength__in__, &nameLength__in_len__,
+ &whichInfo,
+@@ -1580,11 +1618,20 @@
+ whichInfo,
+ &catalogInfo,
+ &newRef,
+- &newSpec);
++#ifndef __LP64__
++ &newSpec
++#else
++ NULL
++#endif /* !__LP64__ */
++ );
+ if (_err != noErr) return PyMac_Error(_err);
++#ifndef __LP64__
+ _res = Py_BuildValue("O&O&",
+ FSRef_New, &newRef,
+ FSSpec_New, &newSpec);
++#else
++ _res = Py_BuildValue("O&O", FSRef_New, &newRef, Py_None);
++#endif /* !__LP64__ */
+ return _res;
+ }
+
+@@ -1598,7 +1645,9 @@
+ FSCatalogInfoBitmap whichInfo;
+ FSCatalogInfo catalogInfo;
+ FSRef newRef;
++#ifndef __LP64__
+ FSSpec newSpec;
++#endif /* !__LP64__ */
+ UInt32 newDirID;
+ if (!PyArg_ParseTuple(_args, "u#lO&",
+ &nameLength__in__, &nameLength__in_len__,
+@@ -1611,13 +1660,25 @@
+ whichInfo,
+ &catalogInfo,
+ &newRef,
++#ifndef __LP64__
+ &newSpec,
++#else
++ NULL,
++#endif /* !__LP64__ */
+ &newDirID);
+ if (_err != noErr) return PyMac_Error(_err);
++
++#ifndef __LP64__
+ _res = Py_BuildValue("O&O&l",
+ FSRef_New, &newRef,
+ FSSpec_New, &newSpec,
+ newDirID);
++#else
++ _res = Py_BuildValue("O&Ol",
++ FSRef_New, &newRef,
++ Py_None,
++ newDirID);
++#endif /* !__LP64__ */
+ return _res;
+ }
+
+@@ -1699,7 +1760,9 @@
+ FSCatalogInfoBitmap whichInfo;
+ FSCatalogInfo catalogInfo;
+ HFSUniStr255 outName;
++#ifndef __LP64__
+ FSSpec fsSpec;
++#endif /* !__LP64__ */
+ FSRef parentRef;
+ if (!PyArg_ParseTuple(_args, "l",
+ &whichInfo))
+@@ -1708,14 +1771,26 @@
+ whichInfo,
+ &catalogInfo,
+ &outName,
++#ifndef __LP64__
+ &fsSpec,
++#else
++ NULL,
++#endif /* !__LP64__ */
+ &parentRef);
+ if (_err != noErr) return PyMac_Error(_err);
++#ifndef __LP64__
+ _res = Py_BuildValue("O&O&O&O&",
+ FSCatalogInfo_New, &catalogInfo,
+ PyMac_BuildHFSUniStr255, &outName,
+ FSSpec_New, &fsSpec,
+ FSRef_New, &parentRef);
++#else
++ _res = Py_BuildValue("O&O&OO&",
++ FSCatalogInfo_New, &catalogInfo,
++ PyMac_BuildHFSUniStr255, &outName,
++ Py_None,
++ FSRef_New, &parentRef);
++#endif /* !__LP64__ */
+ return _res;
+ }
+
+@@ -1784,7 +1859,7 @@
+ UniCharCount forkNameLength__len__;
+ int forkNameLength__in_len__;
+ SInt8 permissions;
+- SInt16 forkRefNum;
++ FSIORefNum forkRefNum;
+ if (!PyArg_ParseTuple(_args, "u#b",
+ &forkNameLength__in__, &forkNameLength__in_len__,
+ &permissions))
+@@ -2034,7 +2109,7 @@
+
+ /* --------------------- End object type FSRef ---------------------- */
+
+-
++#ifndef __LP64__
+ static PyObject *File_UnmountVol(PyObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -2562,6 +2637,7 @@
+ FSSpec_New, &spec);
+ return _res;
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *File_FSGetForkPosition(PyObject *_self, PyObject *_args)
+ {
+@@ -2785,6 +2861,7 @@
+ return _res;
+ }
+
++#ifndef __LP64__
+ static PyObject *File_NewAlias(PyObject *_self, PyObject *_args)
+ {
+ PyObject *_res = NULL;
+@@ -2933,6 +3010,7 @@
+ wasAliased);
+ return _res;
+ }
++#endif /* !__LP64__ */
+
+ static PyObject *File_FSNewAlias(PyObject *_self, PyObject *_args)
+ {
+@@ -3050,6 +3128,7 @@
+ }
+
+ static PyMethodDef File_methods[] = {
++#ifndef __LP64__
+ {"UnmountVol", (PyCFunction)File_UnmountVol, 1,
+ PyDoc_STR("(Str63 volName, short vRefNum) -> None")},
+ {"FlushVol", (PyCFunction)File_FlushVol, 1,
+@@ -3100,6 +3179,7 @@
+ PyDoc_STR("(short vRefNum, long dirID, Str255 oldName, long newDirID, Str255 newName) -> None")},
+ {"FSMakeFSSpec", (PyCFunction)File_FSMakeFSSpec, 1,
+ PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> (FSSpec spec)")},
++#endif /* !__LP64__ */
+ {"FSGetForkPosition", (PyCFunction)File_FSGetForkPosition, 1,
+ PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 position)")},
+ {"FSSetForkPosition", (PyCFunction)File_FSSetForkPosition, 1,
+@@ -3124,6 +3204,7 @@
+ PyDoc_STR("(UInt8 * path, FNMessage message, OptionBits flags) -> None")},
+ {"FNNotifyAll", (PyCFunction)File_FNNotifyAll, 1,
+ PyDoc_STR("(FNMessage message, OptionBits flags) -> None")},
++#ifndef __LP64__
+ {"NewAlias", (PyCFunction)File_NewAlias, 1,
+ PyDoc_STR("(FSSpec fromFile, FSSpec target) -> (AliasHandle alias)")},
+ {"NewAliasMinimalFromFullPath", (PyCFunction)File_NewAliasMinimalFromFullPath, 1,
+@@ -3136,6 +3217,7 @@
+ PyDoc_STR("(FSSpec fromFile, FSSpec target, AliasHandle alias) -> (Boolean wasChanged)")},
+ {"ResolveAliasFileWithMountFlagsNoUI", (PyCFunction)File_ResolveAliasFileWithMountFlagsNoUI, 1,
+ PyDoc_STR("(FSSpec theSpec, Boolean resolveAliasChains, unsigned long mountFlags) -> (FSSpec theSpec, Boolean targetIsFolder, Boolean wasAliased)")},
++#endif /* !__LP64__ */
+ {"FSNewAlias", (PyCFunction)File_FSNewAlias, 1,
+ PyDoc_STR("(FSRef fromFile, FSRef target) -> (AliasHandle inAlias)")},
+ {"FSResolveAliasFileWithMountFlags", (PyCFunction)File_FSResolveAliasFileWithMountFlags, 1,
+@@ -3150,7 +3232,7 @@
+ };
+
+
+-
++#ifndef __LP64__
+ int
+ PyMac_GetFSSpec(PyObject *v, FSSpec *spec)
+ {
+@@ -3188,12 +3270,15 @@
+ }
+ return 0;
+ }
++#endif /* !__LP64__ */
+
+ int
+ PyMac_GetFSRef(PyObject *v, FSRef *fsr)
+ {
+ OSStatus err;
++#ifndef __LP64__
+ FSSpec fss;
++#endif /* !__LP64__ */
+
+ if (FSRef_Check(v)) {
+ *fsr = ((FSRefObject *)v)->ob_itself;
+@@ -3211,6 +3296,7 @@
+ return !err;
+ }
+ /* XXXX Should try unicode here too */
++#ifndef __LP64__
+ /* Otherwise we try to go via an FSSpec */
+ if (FSSpec_Check(v)) {
+ fss = ((FSSpecObject *)v)->ob_itself;
+@@ -3219,15 +3305,18 @@
+ PyMac_Error(err);
+ return 0;
+ }
++#endif /* !__LP64__ */
+ PyErr_SetString(PyExc_TypeError, "FSRef, FSSpec or pathname required");
+ return 0;
+ }
+
++#ifndef __LP64__
+ extern PyObject *
+ PyMac_BuildFSSpec(FSSpec *spec)
+ {
+ return FSSpec_New(spec);
+ }
++#endif /* !__LP64__ */
+
+ extern PyObject *
+ PyMac_BuildFSRef(FSRef *spec)
+@@ -3242,10 +3331,11 @@
+ PyObject *d;
+
+
+-
++#ifndef __LP64__
+ PyMac_INIT_TOOLBOX_OBJECT_NEW(FSSpec *, PyMac_BuildFSSpec);
+- PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef);
+ PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec);
++#endif /* !__LP64__ */
++ PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef);
+ PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef);
+
+
+@@ -3262,6 +3352,7 @@
+ /* Backward-compatible name */
+ Py_INCREF(&FSCatalogInfo_Type);
+ PyModule_AddObject(m, "FSCatalogInfoType", (PyObject *)&FSCatalogInfo_Type);
++#ifndef __LP64__
+ FInfo_Type.ob_type = &PyType_Type;
+ if (PyType_Ready(&FInfo_Type) < 0) return;
+ Py_INCREF(&FInfo_Type);
+@@ -3269,6 +3360,7 @@
+ /* Backward-compatible name */
+ Py_INCREF(&FInfo_Type);
+ PyModule_AddObject(m, "FInfoType", (PyObject *)&FInfo_Type);
++#endif /* !__LP64__ */
+ Alias_Type.ob_type = &PyType_Type;
+ if (PyType_Ready(&Alias_Type) < 0) return;
+ Py_INCREF(&Alias_Type);
+@@ -3276,6 +3368,7 @@
+ /* Backward-compatible name */
+ Py_INCREF(&Alias_Type);
+ PyModule_AddObject(m, "AliasType", (PyObject *)&Alias_Type);
++#ifndef __LP64__
+ FSSpec_Type.ob_type = &PyType_Type;
+ if (PyType_Ready(&FSSpec_Type) < 0) return;
+ Py_INCREF(&FSSpec_Type);
+@@ -3283,6 +3376,7 @@
+ /* Backward-compatible name */
+ Py_INCREF(&FSSpec_Type);
+ PyModule_AddObject(m, "FSSpecType", (PyObject *)&FSSpec_Type);
++#endif /* !__LP64__ */
+ FSRef_Type.ob_type = &PyType_Type;
+ if (PyType_Ready(&FSRef_Type) < 0) return;
+ Py_INCREF(&FSRef_Type);
+Index: Lib/plat-mac/macresource.py
+===================================================================
+--- Lib/plat-mac/macresource.py (revision 74680)
++++ Lib/plat-mac/macresource.py (revision 74681)
+@@ -79,8 +79,8 @@
+ AppleSingle file"""
+ try:
+ refno = Res.FSpOpenResFile(pathname, 1)
+- except Res.Error, arg:
+- if arg[0] in (-37, -39):
++ except (AttributeError, Res.Error), arg:
++ if isinstance(arg, AttributeError) or arg[0] in (-37, -39):
+ # No resource fork. We may be on OSX, and this may be either
+ # a data-fork based resource file or a AppleSingle file
+ # from the CVS repository.
+@@ -106,8 +106,8 @@
+ try:
+ refno = Res.FSpOpenResFile(pathname, 1)
+ Res.CloseResFile(refno)
+- except Res.Error, arg:
+- if arg[0] in (-37, -39):
++ except (AttributeError, Res.Error), arg:
++ if isinstance(arg, AttributeError) or arg[0] in (-37, -39):
+ # No resource fork. We may be on OSX, and this may be either
+ # a data-fork based resource file or a AppleSingle file
+ # from the CVS repository.
+Index: Lib/plat-mac/applesingle.py
+===================================================================
+--- Lib/plat-mac/applesingle.py (revision 74680)
++++ Lib/plat-mac/applesingle.py (revision 74681)
+@@ -119,8 +119,13 @@
+ if not hasattr(infile, 'read'):
+ if isinstance(infile, Carbon.File.Alias):
+ infile = infile.ResolveAlias()[0]
+- if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)):
+- infile = infile.as_pathname()
++
++ if hasattr(Carbon.File, "FSSpec"):
++ if isinstance(infile, (Carbon.File.FSSpec, Carbon.File.FSRef)):
++ infile = infile.as_pathname()
++ else:
++ if isinstance(infile, Carbon.File.FSRef):
++ infile = infile.as_pathname()
+ infile = open(infile, 'rb')
+
+ asfile = AppleSingle(infile, verbose=verbose)
+Index: Mac/scripts/BuildApplet.py
+===================================================================
+--- Mac/scripts/BuildApplet.py (revision 74680)
++++ Mac/scripts/BuildApplet.py (revision 74681)
+@@ -12,7 +12,10 @@
+
+ import os
+ import MacOS
+-import EasyDialogs
++try:
++ import EasyDialogs
++except ImportError:
++ EasyDialogs = None
+ import buildtools
+ import getopt
+
+@@ -32,7 +35,10 @@
+ try:
+ buildapplet()
+ except buildtools.BuildError, detail:
+- EasyDialogs.Message(detail)
++ if EasyDialogs is None:
++ print detail
++ else:
++ EasyDialogs.Message(detail)
+
+
+ def buildapplet():
+@@ -46,6 +52,10 @@
+ # Ask for source text if not specified in sys.argv[1:]
+
+ if not sys.argv[1:]:
++ if EasyDialogs is None:
++ usage()
++ sys.exit(1)
++
+ filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:',
+ typeList=('TEXT', 'APPL'))
+ if not filename:
+Index: Lib/plat-mac/buildtools.py
+===================================================================
+--- Lib/plat-mac/buildtools.py (revision 74680)
++++ Lib/plat-mac/buildtools.py (revision 74681)
+@@ -15,7 +15,10 @@
+ import MacOS
+ import macostools
+ import macresource
+-import EasyDialogs
++try:
++ import EasyDialogs
++except ImportError:
++ EasyDialogs = None
+ import shutil
+
+
+@@ -67,9 +70,13 @@
+ rsrcname=None, others=[], raw=0, progress="default", destroot=""):
+
+ if progress == "default":
+- progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120)
+- progress.label("Compiling...")
+- progress.inc(0)
++ if EasyDialogs is None:
++ print "Compiling %s"%(os.path.split(filename)[1],)
++ process = None
++ else:
++ progress = EasyDialogs.ProgressBar("Processing %s..."%os.path.split(filename)[1], 120)
++ progress.label("Compiling...")
++ progress.inc(0)
+ # check for the script name being longer than 32 chars. This may trigger a bug
+ # on OSX that can destroy your sourcefile.
+ if '#' in os.path.split(filename)[1]:
+@@ -119,7 +126,11 @@
+ if MacOS.runtimemodel == 'macho':
+ raise BuildError, "No updating yet for MachO applets"
+ if progress:
+- progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120)
++ if EasyDialogs is None:
++ print "Updating %s"%(os.path.split(filename)[1],)
++ progress = None
++ else:
++ progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120)
+ else:
+ progress = None
+ if not output:
Modified: trunk/dports/lang/python25/files/patch-setup.py.diff
===================================================================
--- trunk/dports/lang/python25/files/patch-setup.py.diff 2009-09-10 11:54:16 UTC (rev 57387)
+++ trunk/dports/lang/python25/files/patch-setup.py.diff 2009-09-10 13:23:37 UTC (rev 57388)
@@ -39,3 +39,42 @@
# Assume we haven't found any of the libraries or include files
# The versions with dots are used on Unix, and the versions without
+--- setup.py.orig 2009-09-10 19:41:32.000000000 +1000
++++ setup.py 2009-09-10 19:48:30.000000000 +1000
+@@ -1197,7 +1197,7 @@
+ # For 8.4a2, the X11 headers are not included. Rather than include a
+ # complicated search, this is a hard-coded path. It could bail out
+ # if X11 libs are not found...
+- include_dirs.append('/usr/X11R6/include')
++ #include_dirs.append('/usr/X11R6/include')
+ frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
+
+ ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
+@@ -1262,17 +1262,17 @@
+ if platform == 'sunos5':
+ include_dirs.append('/usr/openwin/include')
+ added_lib_dirs.append('/usr/openwin/lib')
+- elif os.path.exists('/usr/X11R6/include'):
+- include_dirs.append('/usr/X11R6/include')
+- added_lib_dirs.append('/usr/X11R6/lib64')
+- added_lib_dirs.append('/usr/X11R6/lib')
+- elif os.path.exists('/usr/X11R5/include'):
+- include_dirs.append('/usr/X11R5/include')
+- added_lib_dirs.append('/usr/X11R5/lib')
+- else:
++ #elif os.path.exists('/usr/X11R6/include'):
++ # include_dirs.append('/usr/X11R6/include')
++ # added_lib_dirs.append('/usr/X11R6/lib64')
++ # added_lib_dirs.append('/usr/X11R6/lib')
++ #elif os.path.exists('/usr/X11R5/include'):
++ # include_dirs.append('/usr/X11R5/include')
++ # added_lib_dirs.append('/usr/X11R5/lib')
++ #else:
+ # Assume default location for X11
+- include_dirs.append('/usr/X11/include')
+- added_lib_dirs.append('/usr/X11/lib')
++ # include_dirs.append('/usr/X11/include')
++ # added_lib_dirs.append('/usr/X11/lib')
+
+ # If Cygwin, then verify that X is installed before proceeding
+ if platform == 'cygwin':
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090910/09fccc39/attachment-0001.html>
More information about the macports-changes
mailing list