Changes

From Gramps

Mac OS X:Application package

4,506 bytes removed, 00:30, 17 October 2010
How the Apple application bundle works: -- Deleted.
GRAMPS stores all its internal data in ~/Library/Application Support. So, to upgrade a Gramps application bundle to a newer version, just throw the old application in the Trash. Make a backup copy of your data, just in case, then download the new version of the application and just use it. If you don't like the new version and want the old one back, throw the new version in the Trash and fetch the old one back from the Trash. The Gramps version is shown in Finder if you use column view; otherwise right click on it and select Get Info.
 
== How the Apple application bundle works ==
What looks like a single file called Gramps (or Gramps.app if you have extensions turned on in Finder preferences) is really a special folder called a bundle. Inside this folder is everything Gramps needs which isn't provided by OSX. The contents of the application directory hierarchy can be seen in finder by selecting the application and choosing Show Package Contents from the context (right/control-click) menu. The contents are only hidden in Finder. If you're comfortable with the terminal command line, you likely already know that application bundles show up as directories when you list them.
 
GRAMPS is a Python interpreted application and changing the program requires no build step. It's possible to change the downloaded binary application by choosing Show Package Contents in Finder, navigating in Finder to the GRAMPS Python code in gramps.app/Contents/Resources/share/gramps, and choosing Open With... TextEdit for the .py file to change. (There seems to be a bug in the Mac implementation of the Python runtime editor "Idle". Opening the .py file with that doesn't work.) Editing the .py file and saving the new version will cause GRAMPS to use it next time it is started. It won't change a GRAMPS which is currently running. There are .pyc files also stored in the application, compiled Python byte-code, which can be ignored.
 
The binary GRAMPS application contains not only the GRAMPS Python sources and all their internationalised translations, but also a complete Python 2.6.2 interpreter, and the Python code libraries distributed with that, and the compiled C libraries for graphics features like gtk, glade and pango. These are all fixed for a particular version of the distributed binary application. The only way to change them is to download a new distributed binary GRAMPS application. This is intended to fix a major issue with earlier GRAMPS Mac implementations, where the program depended on so many different distributions that were always changing that determining what change introduced what bug was very hard.
 
One downside of the way that Mac packages work is that, to achieve a reasonable download size, some libraries and programs are missed out of the packaged application. This can cause GRAMPS crashes, or sometimes just cause some program features to be missing. Crashes of the packaged application usually produce messages on the console, which can be seen (even after the crash has finished) by choosing Finder-Applications-Utilities-Console. There is a delay of perhaps up to a minute between the crash occurring and the messages appearing on the console.
 
A simpler way to see messages from GRAMPS, should any appear, is to start it from a unix terminal. To do this, open a terminal with Finder-Applications-Utilities-Terminal, and type (for a GRAMPS application on the Desktop)
cd / ; ~/Desktop/gramps.app/Contents/MacOS/gramps
and that should run GRAMPS and produce any messages with no delay. The file ~/Desktop/gramps.app/Contents/MacOS/gramps is a shell script, as is ~/Desktop/gramps.app/Contents/MacOS/gramps-bin which it calls. gramps-bin calls the Python 2.6.2 interpreter ~/Desktop/gramps.app/Contents/MacOS/python to run the GRAMPS code which is stored in ~/Desktop/gramps.app/Contents/Resources/share/gramps. Local translations are stored in ~/Desktop/gramps.app/Contents/Resources/share/locale. Standard python code is in ~/Desktop/gramps.app/Contents/Resources/lib/python2.6, and the compiled C libraries are in ~/Desktop/gramps.app/Contents/Resources/lib/*.dylib. Only the GRAMPS Python source is shipped in the binary application. If other sources are needed, the GRAMPS build environment must be used.
 
Should GRAMPS produce a message indicating that it crashed because it could not find a particular library or source file, then do please post a message on the GRAMPS users or developers mailing list, or post a bug. These tedious issues are usually easy to fix. Packaging GRAMPS like this (as opposed to including everything and the kitchen sink) reduces the download size by more than a factor of three.
 
The binary application is built by downloading a Whole Pile of programs from various places on the web (about forty programs) and building each of them to produce a utility to help building, or a library, or something. Just one of these applications is the GRAMPS code developed with such effort by the GRAMPS developers, so it's clear just how much work has gone into the whole thing.
==Building GRAMPS from Scratch==

Navigation menu