subsurface/packaging/macosx
Cristian Ionescu-Idbohrn 155228004e Consistent syntax.
Signed-off-by: Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn@axis.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-02-16 15:46:14 -08:00
..
DMG-Background.png Add Mac DMG background file 2013-02-15 02:39:29 -08:00
Info.plist.in Further automization of the Mac build process 2013-02-15 22:30:02 -08:00
make-package.sh Consistent syntax. 2013-02-16 15:46:14 -08:00
PkgInfo Use the new packaging directory for MacOSX specific files, and provide shell script workaround to make the svg icon reachable. 2011-10-31 09:49:13 +01:00
Read me first.txt Add readme file for MacOSX package 2012-10-04 03:01:27 -07:00
README Update tools and instructions for building a signed Mac DMG 2013-02-15 02:32:41 -08:00
subsurface.bundle Update tools and instructions for building a signed Mac DMG 2013-02-15 02:32:41 -08:00
Subsurface.icns Use the new packaging directory for MacOSX specific files, and provide shell script workaround to make the svg icon reachable. 2011-10-31 09:49:13 +01:00
subsurface.modules Add modules file for building prerequisites on MacOS X 2013-01-19 16:19:11 -08:00
subsurface.sh Redoing the Mac bundling 2012-10-16 21:37:43 -07:00

Creating a Subsurface bundle
============================

(we now have a small shell script that should automate this process;
 look for make-package.sh)

After you build Subsurface and install it on your Mac

make install-macosx

you need gtk-mac-bundler (this has been tested with version 0.7.3); run

  $ gtk-mac-bundler subsurface.bundle

This should install an almost self-contained Subsurface application under
./staging/Subsurface.app

Sadly because of the way gettext accesses the gtk20.mo file, this fails
for localized use - so I ended up building MacPorts with
-prefix /Applications/Subsurface.app/Contents/Resources
And then things work correctly IFF the app gets installed with that path.

What a pain.

Worse, gtk-mac-bundler fails to catch the .so files that are part of the
gdk-pixbuf loader infrastructure. So we need to manually adjust the load
paths in them:

cd packaging/macosx/staging/Subsurface.app/Contents
for i in Resources/lib/gdk-pixbuf-2.0/2.10.0/loaders/* ; do \
	~/gtk-mac-bundler/bundler/run-install-name-tool-change.sh $i \
	/Applications/Subsurface.app/Contents/Resources Resources change ; \
done

Finally, you need to change the IDs of the libraries:

for i in Resources/lib/*.dylib; do install_name_tool -id "@executable_path/../$i" $i; done

Next you should sign your binaries if you plan to use them 10.8 (or later).

Then you can use git://github.com/dirkhh/yoursway-create-dmg.git to create
a DMG (use the readlink-fix branch - unless this has been pulled into the
main project by the time you read this).

Here is roughly how I run this to create the official DMG

~/yoursway-create-dmg/create-dmg --background ./Subsurface-Background.png \
	--window-size 500 300 --icon-size 96 \
	--volname "Subsurface-${VERSION}" --app-drop-link 380 205 \
	--volicon ~/subsurface/packaging/macosx/Subsurface.icns \
	--icon "Subsurface" 110 205 ./Subsurface-${VERSION}.dmg ./staging

The --volicon doesn't appear to work for me even though it does create the
correct file in the DMG. I'm leaving it in here to remind me to
investigate this issue.

Caveats
-------

* You need (at least with MacPorts) to build pango like this:

  $ sudo port install pango +builtin_modules +no_x11 +quartz

Without the builtin modules the installed application fails to find the
modules and doesn't render any text.

Also note the comment above about the -prefix

* It seems that gtk-mac-bundler expects the charset.alias file to be
  in the ${prefix}/lib folder which it isn't with the current version of
  MacPorts. The following fixes that:

  $ sudo cp /usr/lib/charset.alias /opt/local/lib

* libdivecomputer needs to be configured with
  --with-prefix=/Applications/Subsurface.app/Contents/Resources
  as well.