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