Chameleon

Chameleon Svn Source Tree

Root/tags/2.0/package/builddmg.sh

  • Property svn:executable set to *
Source at commit 1808 created 12 years 3 months ago.
By blackosx, Revise layout of package installer 'Welcome' file so it looks cleaner. Change the copyright notice to begin from 2009 as seen in the Chameleon 2.0 r431 installer. Should this date be set earlier?
1#!/bin/bash
2
3# $1 Path to store built dmg
4
5pkgroot="${0%/*}"
6SYM_ROOT="${1%/*}"
7DMG_ROOT=$SYM_ROOT
8
9OPENUP_TOOL=${1%/*}/i386/openUp
10
11SRC_FOLDER=${1%/*}/source
12VOLUME_NAME="Chameleon"
13TEMP_NAME="rw.dmg"
14DMG_TEMP_NAME=${DMG_ROOT}/${TEMP_NAME}
15TEMPLATE_DMG=${pkgroot}/dmg/ro.dmg
16EULA_RSRC=${pkgroot}/dmg/SLAResources
17
18
19# =============================
20# Setting color for text output
21# =============================
22
23COL_BLACK="\x1b[30;01m"
24COL_RED="\x1b[31;01m"
25COL_GREEN="\x1b[32;01m"
26COL_YELLOW="\x1b[33;01m"
27COL_MAGENTA="\x1b[35;01m"
28COL_CYAN="\x1b[36;01m"
29COL_WHITE="\x1b[37;01m"
30COL_BLUE="\x1b[34;01m"
31COL_RESET="\x1b[39;49;00m"
32
33# ======================
34# Setting Chameleon info
35# ======================
36
37version=$( cat version )
38stage=${version##*-}
39revision=$( grep I386BOOT_CHAMELEONREVISION sym/i386/vers.h | awk '{ print $3 }' | tr -d '\"' )
40builddate=$( grep I386BOOT_BUILDDATE sym/i386/vers.h | awk '{ print $3,$4 }' | tr -d '\"' )
41timestamp=$( date -j -f "%Y-%m-%d %H:%M:%S" "${builddate}" "+%s" )
42
43# =========================
44# Start of building process
45# =========================
46
47echo ""
48echo -e $COL_BLACK"----------------------"$COL_RESET
49echo -e $COL_BLACK"Building $VOLUME_NAME DMG"$COL_RESET
50echo -e $COL_BLACK"----------------------"$COL_RESET
51echo ""
52
53# =================================
54# 1) Clean previus builded contents
55# =================================
56
57if [ -x ${SRC_FOLDER} ]; then
58echo "Deleting previus existing source folder/content "
59rm -R ${SRC_FOLDER}
60rm -f ${DMG_TEMP_NAME}
61fi
62
63# ===========================
64# 2) Create the source folder
65# ===========================
66
67echo "[mkdir] Creating source folder "
68mkdir "${SRC_FOLDER}"
69
70# ==================================
71# 3) Copy content into source folder
72# ==================================
73
74ditto -xk "${pkgroot}/Icons/i386.zip" "${SRC_FOLDER}/"
75ditto -xk "${pkgroot}/Icons/doc.zip" "${SRC_FOLDER}/"
76ditto -xk "${pkgroot}/Icons/pan.zip" "${SRC_FOLDER}/"
77ditto -xk "${pkgroot}/Icons/tm.zip" "${SRC_FOLDER}/"
78
79mv ${SYM_ROOT}/${VOLUME_NAME}.pkg ${SRC_FOLDER}/${VOLUME_NAME}.pkg
80cp -r ${pkgroot}/doc/* ${SRC_FOLDER}/Documentation/
81cp -r ${pkgroot}/Configuration/PrefPanel/* ${SRC_FOLDER}/PrefPanel/
82cp -r ${SYM_ROOT}/i386/* ${SRC_FOLDER}/i386/
83cp -r ${SYM_ROOT%/*}/artwork/themes/* ${SRC_FOLDER}/Themes/
84rm -rf ${SRC_FOLDER}`find . -type d -name .svn`
85
86# =======================================
87# 4) Find the size of the folder contents
88# =======================================
89
90FOLDER_SIZE=`/usr/bin/du -s "${SRC_FOLDER}" | sed s/[^0-9].*//`
91
92# =====================================================
93# 4) Allow for partition table and other overhead (10%)
94# =====================================================
95
96IMAGE_SIZE=$(($FOLDER_SIZE * 110/100))
97
98# ============================================
99# 5) Minimum size for an HFS+ partition is 4Mb
100# ============================================
101
102[ $IMAGE_SIZE -lt 19960 ] && IMAGE_SIZE=19960 # [ $IMAGE_SIZE -lt 8300 ] && IMAGE_SIZE=8300
103
104# =================================================================
105# 6) Make sure NEXT_ROOT is not set (if we're building with an SDK)
106# =================================================================
107
108unset NEXT_ROOT
109echo "Source folder size = $FOLDER_SIZE"
110echo "DMG image size (+10%) = $IMAGE_SIZE"
111echo " "
112
113# =======================================
114# 7) Convert the DMG template into RW-DMG
115# =======================================
116
117echo "[hdutil] Creating disk image "
118test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}"
119
120hdiutil convert $TEMPLATE_DMG -format UDRW -o "${DMG_TEMP_NAME}" >/dev/null 2>&1
121hdiutil resize -limits "${DMG_TEMP_NAME}" >/dev/null 2>&1
122hdiutil resize -size 15m "${DMG_TEMP_NAME}" >/dev/null 2>&1
123echo " "
124
125# ===========
126# 8) Mount it
127# ===========
128
129echo "[hdutil] Mounting disk image "
130MOUNT_DIR=/Volumes/$VOLUME_NAME
131DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}') >/dev/null 2>&1
132
133echo "Device name:$DEV_NAME"
134echo "Mount directory: $MOUNT_DIR"
135echo " "
136
137# =====================================
138# 9) Make sure it's not world writeable
139# =====================================
140
141mv ${SRC_FOLDER}/${VOLUME_NAME}.pkg ${MOUNT_DIR}/${VOLUME_NAME}.pkg
142cp -R ${SRC_FOLDER}/Documentation ${MOUNT_DIR}/
143cp -R ${SRC_FOLDER}/PrefPanel ${MOUNT_DIR}/
144cp -R ${SRC_FOLDER}/i386 ${MOUNT_DIR}/
145cp -R ${SRC_FOLDER}/Themes ${MOUNT_DIR}/
146
147echo "[chmod] Fixing permission for \"${MOUNT_DIR}\""
148chmod -Rf go-w "${MOUNT_DIR}" || true
149chmod -f a-w "${MOUNT_DIR}"/.DS_Store || true
150echo "Done fixing permissions."
151echo " "
152
153# =============================================
154# 10) Make the top window open itself on mount:
155# =============================================
156
157echo "[openUp] Setting auto open flag"
158if [ -x ${OPENUP_TOOL} ]; then
159echo "Applying openUp..."
160 ${OPENUP_TOOL} "${MOUNT_DIR}" >/dev/null 2>&1
161fi
162echo " "
163
164# ===========
165# 11) Unmount
166# ===========
167
168echo "[hdutil] Unmounting disk image"
169hdiutil detach "${DEV_NAME}" >/dev/null 2>&1
170echo " "
171
172# ==================
173# 12) Compress image
174# ==================
175
176test -f "${DMG_ROOT}/${VOLUME_NAME}.dmg" && rm -f "${DMG_ROOT}/${VOLUME_NAME}.dmg"
177echo "[hdutil] Compressing disk image"
178hdiutil convert ${DMG_TEMP_NAME} -format UDZO -imagekey zlib-level=9 -o ${DMG_ROOT}/${VOLUME_NAME} >/dev/null 2>&1
179rm -f "${DMG_TEMP_NAME}"
180echo " "
181
182# =========================
183# 13) Adding EULA resources
184# =========================
185
186if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then
187echo "[ResMerger] Adding EULA resources"
188 hdiutil unflatten ${DMG_ROOT}/${VOLUME_NAME}.dmg >/dev/null 2>&1
189 ResMerger -a ${EULA_RSRC} -o ${DMG_ROOT}/${VOLUME_NAME}.dmg
190 hdiutil flatten ${DMG_ROOT}/${VOLUME_NAME}.dmg >/dev/null 2>&1
191fi
192
193# =======================
194# 14) Adding Icon to .dmg
195# =======================
196
197ditto -xk ${pkgroot}/Icons/dmg.zip "${pkgroot}/Icons"
198DeRez -only icns ${pkgroot}/Icons/Icons/dmg.icns > tempicns.rsrc
199Rez -append tempicns.rsrc -o ${DMG_ROOT}/${VOLUME_NAME}.dmg
200SetFile -a C ${DMG_ROOT}/${VOLUME_NAME}.dmg
201rm -f tempicns.rsrc
202rm -rf "${pkgroot}/Icons/Icons"
203rm -R ${SRC_FOLDER}
204
205# ===
206# END
207# ===
208
209echo "===================="
210echo "Finish $VOLUME_NAME.dmg"
211echo "===================="
212echo ""
213#-----
214exit 0
215

Archive Download this file

Revision: 1808