Armahg's page
MacPorts Developers page
MacPorts GUI GSoC 2009 "FAQ"
This page is an attempt to collate all the information relevant to the 2009 GSoC MacPorts GUI project in one place.
If you haven't done so already, please thoroughly read Dr. Ernie's blog post on building a MacPorts GUI. It contains a lot of relevant information. There are currently some existing MacPorts GUI's: PortAuthority and Porticus being two examples. Neither of these is native Cocoa and fully open source (as Dr. Ernie mentions in his post). There also currently exists a MacPorts GUI called Pallet developed by Randall Wood. It is a good starting place to get an idea for what the code base of a GUI would entail.
For GSoC 2008, work was done on a MacPorts Framework (a project originally started by Randall Wood). The Framework although far from perfect is currently functional and can serve as a basis for the MacPorts GUI project. It currently offers the following features:
- Support for non-default MacPort install locations
- Support for basic port operations like Install, Uninstall, Configure, Activate, DeActivate etc. Adding new port operations involves modifying a Tcl file and adding the appropriate method to the Framework's MPPort class. It is a fairly simple process.
- Support for Authorized port operations i.e. operations that require 'sudo' based off Apple's BetterAuthorizationSample
- A notifications mechanism for tracking progress of port operations. This is greatly simplified when consuming the Framework from a GUI client since it relies on Notifications and Run Loops.
To get a better idea of what has already been done it would be good to do the following. (It is assumed that you already have MacPorts installed in the default location):
- Items 1, 2, 3, and 4 in Dr. Ernie's blog post.
- Download and build the source code for the Framework from https://svn.macports.org/repository/macports/contrib/MacPorts_Framework
- Download and build the source code for Pallet from https://svn.macports.org/repository/macports/branches/gsoc08-framework/Pallet .
You might encounter some permissions issues whilst building Pallet which will cause XCode to fail to copy some of Pallet's binary dependencies. The workaround for this is to either do a Clean All and then build OR to manually delete any binary files already in the output folders for "Debug" or "Release" mode of your build (whichever you happen to be building for). - Download and build the Macports Source: GetMacPortsSource
- See if you can link and build Pallet against the Macports.Framework you built
Also, you are free to and encouraged to submit original GSoC ideas. You should discuss them with the GSoC mentors and larger MacPorts community first (of course). I will be interested in mentoring any good ideas that are MacPorts + Cocoa / CocoaTouch.
Good Luck!