Update tools and instructions for building a signed Mac DMG

This updates the bundle to include the mime.cache and a library that
somehow isn't picked up by the bundle tool.

It also updates the README on how all this is supposed to work and puts
some of the automation into the existing shell script.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-02-15 01:17:27 -08:00
parent b472712162
commit 61066b9ea9
3 changed files with 87 additions and 22 deletions

View file

@ -4,23 +4,27 @@ Creating a Subsurface bundle
(we now have a small shell script that should automate this process;
look for make-package.sh)
install gtk-mac-bundler (this has been tested with version 0.7.0) and run
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 a self-contained Subsurface application under
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 - in that case you need to rebuild MacPorts with
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 misses 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:
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 \
@ -32,10 +36,23 @@ 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
You still need to manually build a DMG if you want to easily distribute this.
Next you should sign your binaries if you plan to use them 10.8 (or later).
cd ../../..
hdiutil create -volname Subsurface -srcfolder staging Subsurface-<version>.dmg
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
-------
@ -44,7 +61,9 @@ Caveats
$ 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.
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
@ -53,6 +72,6 @@ Also note the comment above about the -prefix
$ sudo cp /usr/lib/charset.alias /opt/local/lib
* libdivecomputer needs to be configured with --with-prefix=/opt/local
(or /Applications/Subsurface.app/Contents/Resources for localized builds)
* libdivecomputer needs to be configured with
--with-prefix=/Applications/Subsurface.app/Contents/Resources
as well.