For more information, please see the Python Software Activity's [PSA] Objective-C vis Python [objc-sig] page found at the following location:
http://www.python.org/sigs/objc-sig/
For those without web access, the objc-sig mailing list can be obtained via the python-sig-request@python.org adress as follows:
Here are some important addresses for using the list:
Content submissions addr: objc-sig@python.org
Subscriptions addr: objc-sig-request@python.org
List admin addr: objc-sig-admin@python.org
List owner addr: objc-sig-owner@python.org
(To get instructions on using the list, send a message containing only the word 'help' in the body to the *subscriptions* address, objc-sig-request@python.org. You can contact the list owner if you need individual help.)
Up to date binary and source distributions can usually be found at:
ftp://ftp.thoughtport.net/pub/next/lang/
---
Package Evolution
Originally as with most complex python extension modules, this package could only be built within a working copy of the python source tree because of the complexity of maintaining a project external to a working python source tree. Between python 1.4b2 and 1.4b3, Guido kindly provided a Makefile that makes the construction of modules external to the python source tree very easy.
The Misc/Makefile.pre.in makefile is an almost-verbatum copy of the Makefile.pre.in that is now included in the Misc directory within the Python source (as of version 1.4b3). Using this makefile, it is very easy to generate a Makefile that is specific to your currently installed build of Python.
Building the Module
When freshly unpacked, the first task is to build the Makefile that will be used for all subsequent builds. To do this, invoke the following make command:
make -f Misc/Makefile.pre.in boot
Once the Makefile is built, a statically linked python executable containing all of the modules mentioned in Setup.in can be built by making the target 'static'. Alternatively, the name of the resulting statically linked executable can be controlled by setting the TARGET variable's value from the make command line. The second command shown below will build a binary named 'pyobjc'.
make static
make static TARGET=pyobjc
NOTE: Once Modules/Setup.PyObjC.in is copied to Setup the first time, it will never be copied again. If you modify Setup.in, make sure to either remove or copy it to Setup before building. If you modify Setup without updating Setup.in, keep in mind that 'make distclean' will *delete* 'Setup'.
To build a module such that it is dynamically loaded into python, add the string '*shared*' to the TOP of Setup.in, copy it to Setup and make without specifying a target.
At the top of Makefile.pre.in, the modules name is defined to be PyObjC; as a result, the library produced is libPyObjC.a. This library could be used in another python module project that is based on the capabilities of this module.
Unfortunately, there currently is no support for automatically installing any of the resources that are built in a module project.
----
Package Pieces
Unless otherwise noted, all pieces are maintained by Lele Gaifax and the rest of the objc-sig community. Where noted, specific individuals are to be contacted in regards to problems, patches, and extensions to certain components.
ObjC: Ongoing efforts towards the integration of Objective-C with Python. Definitely works with NeXT's runtime and should work with GNU's (though this is largely untested). Some support for the foundation kit.
nsdefaults: Lele's NEXTSTEP defaults module.
datastream: Lele folded datastream into ObjC as ObjCStream. It now provides a unified API to stream-style I/O under the GNU or NEXT runtime.
pasteboard: An NS 3.3 specific module that provides features necessary to successfully work with Pasteboard objects from Python via the ObjC module. This includes support for named pasteboards and named types (both of which are declared as NXAtom's but neither of which appear in the NXUniqueString() database!) and several functions that write, read and query specific types to/from a pasteboard instance. (maintained by Bill Bumgarner <bbum@friday.com>)
PyServicesDelegate: An NS 3.3 specific class that acts as the glue between a Listener object and a python-implemented services delegate. See Demo/ObjC/PyServices for more information.