Context Navigation

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.

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).

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.