|
|
| Line 31: |
Line 31: |
| | Here is some advice about how packaging is supposed to happen on the various plattforms that are supported. | | Here is some advice about how packaging is supposed to happen on the various plattforms that are supported. |
| | | | |
| − | ===General===
| + | ;[[/MacPackaging|Packaging for Mac]] |
| − | | + | |
| − | ===Linux===
| + | |
| − | | + | |
| − | ===Mac OS X===
| + | |
| − | | + | |
| − | ==== Qt-Only ====
| + | |
| − | | + | |
| − | Configure Marble with:
| + | |
| − | <pre>
| + | |
| − | cmake -DCMAKE_BUILD_TYPE=release -DQTONLY=ON -DCMAKE_INSTALL_PREFIX=/Applications/ ../marble
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | To generate a Diskimage (.dmg) one can use this script (based on parts by Tim Sutton, thanks!):
| + | |
| − | | + | |
| − | <code bash>
| + | |
| − | VERSION=0.7.1
| + | |
| − | APPNAME=Marble
| + | |
| − | | + | |
| − | VOLNAME=${APPNAME}-${VERSION}
| + | |
| − | DMGNAME=${VOLNAME}Uncompressed.dmg
| + | |
| − | COMPRESSEDDMGNAME=${VOLNAME}.dmg
| + | |
| − | | + | |
| − | function deploy_file() {
| + | |
| − | for n in $(otool -L $1 | grep Qt); do
| + | |
| − | path=`echo $n | grep Qt`
| + | |
| − | if [ $path ] ; then
| + | |
| − | name=$(basename $path)
| + | |
| − | FRAMEWORKS="$FRAMEWORKS $name"
| + | |
| − | fi
| + | |
| − | done
| + | |
| − | | + | |
| − | for framework in $FRAMEWORKS ; do
| + | |
| − | install_name_tool -change \
| + | |
| − | $framework.framework/Versions/4/$framework \
| + | |
| − | @executable_path/../Frameworks/$framework.framework/Versions/4/$framework \
| + | |
| − | $1
| + | |
| − | done
| + | |
| − | }
| + | |
| − | | + | |
| − | function deploy_plugins() {
| + | |
| − | for plugin in $1/Contents/Resources/plugins/*; do
| + | |
| − | deploy_file $plugin
| + | |
| − | done
| + | |
| − | }
| + | |
| − | | + | |
| − | function set_bundle_display_options() {
| + | |
| − | osascript <<-EOF
| + | |
| − | tell application "Finder"
| + | |
| − | set f to POSIX file ("${1}" as string) as alias
| + | |
| − | tell folder f
| + | |
| − | open
| + | |
| − | tell container window
| + | |
| − | set toolbar visible to false
| + | |
| − | set statusbar visible to false
| + | |
| − | set current view to icon view
| + | |
| − | delay 1 -- sync
| + | |
| − | set the bounds to {20, 50, 300, 400}
| + | |
| − | end tell
| + | |
| − | delay 1 -- sync
| + | |
| − | set icon size of the icon view options of container window to 64
| + | |
| − | set arrangement of the icon view options of container window to not arranged
| + | |
| − | set position of item "Marble.app" to {100,150}
| + | |
| − | set position of item "Applications" to {280, 150}
| + | |
| − | set background picture of the icon view options of container window to file "background.png" of folder "Pictures"
| + | |
| − | set the bounds of the container window to {0, 0, 300, 400}
| + | |
| − | update without registering applications
| + | |
| − | delay 5 -- sync
| + | |
| − | close
| + | |
| − | end tell
| + | |
| − | delay 5 -- sync
| + | |
| − | end tell
| + | |
| − | EOF
| + | |
| − | | + | |
| − | }
| + | |
| − | | + | |
| − | function create_symlinks() {
| + | |
| − | cd "$1/Contents/Resources"
| + | |
| − | ln -s "../MacOS/resources/data/" "data"
| + | |
| − | ln -s "../MacOS/resources/plugins/" "plugins"
| + | |
| − | cd -
| + | |
| − | }
| + | |
| − | | + | |
| − | | + | |
| − | | + | |
| − | | + | |
| − | rm ~/Desktop/${DMGNAME}
| + | |
| − | rm ~/Desktop/${COMPRESSEDDMGNAME}
| + | |
| − | hdiutil create -size 150m -fs HFS+ -volname ${VOLNAME} ~/Desktop/${DMGNAME}
| + | |
| − | | + | |
| − | # Mount the disk image
| + | |
| − | hdiutil attach ~/Desktop/${DMGNAME}
| + | |
| − | | + | |
| − | # Obtain device information
| + | |
| − | DEVS=$(hdiutil attach ~/Desktop/${DMGNAME} | cut -f 1)
| + | |
| − | DEV=$(echo $DEVS | cut -f 1 -d ' ')
| + | |
| − | VOLUME=$(mount |grep ${DEV} | cut -f 3 -d ' ')
| + | |
| − | | + | |
| − | # copy in the application bundle
| + | |
| − | cp -Rp /Applications/${APPNAME}.app ${VOLUME}/${APPNAME}.app
| + | |
| − | | + | |
| − | # fix the libs
| + | |
| − | macdeployqt ${VOLUME}/${APPNAME}.app
| + | |
| − | create_symlinks ${VOLUME}/${APPNAME}.app
| + | |
| − | deploy_file "${VOLUME}/${APPNAME}.app/Contents/MacOS/lib/libmarblewidget.7.dylib"
| + | |
| − | deploy_plugins ${VOLUME}/${APPNAME}.app
| + | |
| − | | + | |
| − | # copy in background image
| + | |
| − | mkdir -p ${VOLUME}/Pictures
| + | |
| − | # fixme: path
| + | |
| − | cp ~/Desktop/marble-dmg-background.png ${VOLUME}/Pictures/background.png
| + | |
| − | # symlink applications
| + | |
| − | ln -s /Applications/ ${VOLUME}/Applications
| + | |
| − | set_bundle_display_options ${VOLUME}
| + | |
| − | mv ${VOLUME}/Pictures ${VOLUME}/.Pictures
| + | |
| − | | + | |
| − | # Unmount the disk image
| + | |
| − | hdiutil detach $DEV
| + | |
| − |
| + | |
| − | # Convert the disk image to read-only
| + | |
| − | hdiutil convert ~/Desktop/${DMGNAME} -format UDBZ -o ~/Desktop/${COMPRESSEDDMGNAME}
| + | |
| − | </code>
| + | |
| − | | + | |
| − | | + | |
| − | It uses the macdeployqt tool which copies Qt and its plugins into the App Bundle.
| + | |
| − | macdeployqt also tells the main application to link against the libs contained in the bundle, instead of the system libs.
| + | |
| − | This does not happen to the libmarblewidget and the Marble plugins, so it has to be done by the script.
| + | |
| − | The script also sets a background Image for the dmg. (Place it at ~/Desktop/marble-dmg-background.png or change the path in the script)
| + | |
| − | | + | |
| − | After that you should have Marble-version.dmg on you Desktop.
| + | |
| − | | + | |
| − | ===Windows===
| + | |
| | | | |
| | == Programming Coordination == | | == Programming Coordination == |
Here is some advice about how packaging is supposed to happen on the various plattforms that are supported.
Summaries and logs of scheduled Marble meetings can be found on the following pages: