Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: tools/mac_build_editor_dmg.sh

Issue 16831019: Initial support for mac installers. Currently only on our editor builders on FYI (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« tools/mac_build_editor_bundle.sh ('K') | « tools/mac_build_editor_bundle.sh ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/mac_build_editor_dmg.sh
diff --git a/tools/mac_build_editor_dmg.sh b/tools/mac_build_editor_dmg.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2da8c0fec139963b3e1ffd4b0cdab72fd0332b58
--- /dev/null
+++ b/tools/mac_build_editor_dmg.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by
+# BSD-style license that can be found in the LICENSE file.
+
+# This is partly based on
+# https://bitbucket.org/rmacnak/nsvm/src/
+# b2de52432a2baff9c4ada099430fb16a771d34ef/vm/onebuild/installer-Darwin.gmk
+
+# Fail if a command failed
+set -e
+
+if [ $# -ne 4 ]; then
+ echo "Usage $0 <output.dmg> <app-folder> <icon.icns> <volume-name>"
+ exit 1
+fi
+
+OUTPUT_DMG_FILE=$1
+INPUT_APP_FOLDER_PATH=$2
+INPUT_ICON=$3
+INPUT_VOLUME_NAME=$4
+
+APP_FOLDER_NAME=$(basename "$INPUT_APP_FOLDER_PATH")
+VOLUME_MOUNTPOINT="/Volumes/$INPUT_VOLUME_NAME"
+SPARSEIMAGE="$OUTPUT_DMG_FILE.sparseimage"
+
+# Input validations
+if [ "${INPUT_APP_FOLDER_PATH##*.}" != "app" ]; then
+ echo "Application folder has to end in '.app' " \
+ "(but was $INPUT_APP_FOLDER_PATH)."
+ exit 1
+fi
+if [ "${INPUT_ICON##*.}" != "icns" ]; then
+ echo "Volume icon has to end in '.icns'."
+ exit 1
+fi
+
+# If an old image is still mounted, umount it
+if [ -e "$VOLUME_MOUNTPOINT" ]; then
+ hdiutil eject "$VOLUME_MOUNTPOINT"
+fi
+
+# Remove old output files
+if [ -f "$SPARSEIMAGE" ]; then
+ rm "$SPARSEIMAGE"
+fi
+if [ -f "$OUTPUT_DMG_FILE" ]; then
+ rm "$OUTPUT_DMG_FILE"
+fi
+
+# Create a new image and attach it
+hdiutil create -size 300m -type SPARSE -volname "$INPUT_VOLUME_NAME" -fs \
ricow1 2013/06/20 12:08:30 How did you determine this size? Do we want to ext
kustermann 2013/06/20 14:04:33 I just tried out what works. It seems like we alwa
+ 'Journaled HFS+' "$SPARSEIMAGE"
+hdiutil attach "$SPARSEIMAGE"
+
+# Add link to /Applications (so the user can drag-and-drop into it)
+ln -s /Applications "$VOLUME_MOUNTPOINT/"
+# Copy our application
+ditto "$INPUT_APP_FOLDER_PATH" "$VOLUME_MOUNTPOINT/$APP_FOLDER_NAME"
+# Make sure that the folder gets opened when mounting the image
+bless --folder "$VOLUME_MOUNTPOINT" --openfolder "$VOLUME_MOUNTPOINT"
+# Copy the volume icon
+cp "$INPUT_ICON" "$VOLUME_MOUNTPOINT/.VolumeIcon.icns"
+
+# Set the 'custom-icon' attribute on the volume
+SetFile -a C "$VOLUME_MOUNTPOINT"
+
+# Use an applescript to setup the layout of the folder.
+osascript << EOF
+tell application "Finder"
+ tell disk "$INPUT_VOLUME_NAME"
+ open
+ tell container window
+ set current view to icon view
+ set toolbar visible to false
+ set statusbar visible to false
+ set position to {100, 100}
+ set bounds to {100, 100, 512, 256}
+ end tell
+ tell icon view options of container window
+ set arrangement to not arranged
+ set icon size to 128
+ end tell
+ set position of item "$APP_FOLDER_NAME" to {64, 64}
+ set position of item "Applications" to {320, 64}
+ eject
+ end tell
+end tell
+EOF
+
+# Wait until the script above has umounted the image
+while [ -e "$VOLUME_MOUNTPOINT" ]; do
+ echo "Waiting for Finder to eject $VOLUME_MOUNTPOINT"
+ sleep 2
+done
+
+# Compress the sparse image
+hdiutil convert "$SPARSEIMAGE" -format UDBZ -o "$OUTPUT_DMG_FILE"
+
+# Remove sparse image
+rm "$SPARSEIMAGE"
+
« tools/mac_build_editor_bundle.sh ('K') | « tools/mac_build_editor_bundle.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698