Welcome to mirror list, hosted at ThFree Co, Russian Federation.

make-dmg-bundle.sh « MacOSX « build « main - github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ce031d56e20c04ffdbeb9ff78dc0a2ed77358b31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env bash

# Shamelessly lifted from Banshee's build process
 	
pushd $(dirname $0) &>/dev/null

DMG_APP=$1
RENDER_OP=$2

if [ -z "$DMG_APP" ]; then
	DMG_APP=MonoDevelop.app
fi

if test ! -e "$DMG_APP" ; then
	echo "Missing $DMG_APP"
	exit 1
fi

NAME=`grep -A1 CFBundleName "$DMG_APP/Contents/Info.plist"  | grep string | sed -e 's/.*<string>//' -e 's,</string>,,'`
VERSION=`grep -A1 CFBundleVersion "$DMG_APP/Contents/Info.plist"  | grep string | sed -e 's/.*<string>//' -e 's,</string>,,'`

#if we use the version in the volume name, Finder can't find the background image
#because the DS_Store depends on the volume name, and we aren't currently able
#to alter it programmatically
VOLUME_NAME="$NAME"

echo "Building bundle for $NAME $VERSION..."

DMG_FILE="$NAME-$VERSION.dmg"
MOUNT_POINT="$VOLUME_NAME.mounted"

rm -f "$DMG_FILE"
rm -f "$DMG_FILE.master"
 	
# Compute an approximated image size in MB, and bloat by 1MB
image_size=$(du -ck "$DMG_APP" | tail -n1 | cut -f1)
image_size=$((($image_size + 2000) / 1000))

echo "Creating disk image (${image_size}MB)..."
hdiutil create "$DMG_FILE" -megabytes $image_size -volname "$VOLUME_NAME" -fs HFS+ -quiet || exit $?

echo "Attaching to disk image..."
hdiutil attach "$DMG_FILE" -readwrite -noautoopen -mountpoint "$MOUNT_POINT" -quiet || exit $?

echo "Populating image..."

mv "$DMG_APP" "$MOUNT_POINT"

# This won't result in any deletions 
#find "$MOUNT_POINT" -type d -iregex '.*\.svn$' &>/dev/null | xargs rm -rf

pushd "$MOUNT_POINT" &>/dev/null
ln -s /Applications Applications
popd &>/dev/null

mkdir -p "$MOUNT_POINT/.background"
if [ "$RENDER_OP" == "norender" ]; then
	cp dmg-bg.png "$MOUNT_POINT/.background/dmg-bg.png"
else
	DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib:/lib:/usr/lib" mono render.exe "$NAME $VERSION"
	mv dmg-bg-with-version.png "$MOUNT_POINT/.background/dmg-bg.png"
fi

cp DS_Store "$MOUNT_POINT/.DS_Store"
if [ -e VolumeIcon.icns ] ; then
	cp VolumeIcon.icns "$MOUNT_POINT/.VolumeIcon.icns"
	SetFile -c icnC "$MOUNT_POINT/.VolumeIcon.icns"
fi
SetFile -a C "$MOUNT_POINT"

echo "Detaching from disk image..."
hdiutil detach "$MOUNT_POINT" -quiet || exit $?

mv "$DMG_FILE" "$DMG_FILE.master"

echo "Creating distributable image..."
hdiutil convert -quiet -format UDBZ -o "$DMG_FILE" "$DMG_FILE.master" || exit $?

echo "Built disk image $DMG_FILE"

if [ ! "x$1" = "x-m" ]; then
rm "$DMG_FILE.master"
fi

rm -rf "$MOUNT_POINT"

echo "Done."

popd &>/dev/null