␊ |
OPENUP_TOOL=${1%/*}/i386/openUp␊ |
␊ |
SRC_FOLDER=$DMG_ROOT/source␊ |
SRC_FOLDER=${1%/*}/source␊ |
VOLUME_NAME="Chameleon"␊ |
DMG_TEMP_NAME=${DMG_ROOT}/rw.${DMG_NAME}␊ |
DMG_TEMP_NAME=${DMG_ROOT}/rw.${VOLUME_NAME}␊ |
BACKGROUND_FILE=$DMG_ROOT/dmg/background.png␊ |
EULA_RSRC=$DMG_ROOT/dmg/EULA.rtf␊ |
␊ |
# =============================␊ |
# Setting icon and .DStore path␊ |
# =============================␊ |
␊ |
#␊ |
# ==========================␊ |
#␊ |
# To fix # DMG_DSSTORE=$DMG_ROOT/dmg/.DStore␊ |
# To fix # ICON_DOC=$DMG_ROOT/dmg/doc.icns␊ |
# To fix # ICON_I386=$DMG_ROOT/dmg/i386.icns␊ |
# To fix # ICON_PAN=$DMG_ROOT/dmg/pan.icns␊ |
# To fix # ICON_THEMES=$DMG_ROOT/dmg/tm.icns␊ |
# To fix # ICON_DMG=$DMG_ROOT/dmg/dmg.icns␊ |
# To fix # ICON_VOL=$DMG_ROOT/dmg/Volume.icns␊ |
␊ |
# =============================␊ |
# Setting color for text output ␊ |
# =============================␊ |
␊ |
COL_BLACK="\x1b[30;01m"␊ |
COL_RED="\x1b[31;01m"␊ |
COL_GREEN="\x1b[32;01m"␊ |
|
COL_BLUE="\x1b[34;01m"␊ |
COL_RESET="\x1b[39;49;00m"␊ |
␊ |
#␊ |
# ==========================␊ |
#␊ |
# ======================␊ |
# Setting Chameleon info␊ |
# ======================␊ |
␊ |
version=$( cat version )␊ |
stage=${version##*-}␊ |
|
builddate=$( grep I386BOOT_BUILDDATE sym/i386/vers.h | awk '{ print $3,$4 }' | tr -d '\"' )␊ |
timestamp=$( date -j -f "%Y-%m-%d %H:%M:%S" "${builddate}" "+%s" )␊ |
␊ |
#␊ |
# Create a read-only disk image of the contents of a folder␊ |
#␊ |
# =========================␊ |
# Start of building process␊ |
# =========================␊ |
␊ |
␉echo "=========== BUILD .DMG TEST ==========="␊ |
echo ""␉␊ |
echo -e $COL_BLACK"␉----------------------"$COL_RESET␊ |
echo -e $COL_BLACK"␉Building $VOLUME_NAME DMG"$COL_RESET␊ |
echo -e $COL_BLACK"␉----------------------"$COL_RESET␊ |
echo ""␊ |
␊ |
# <-- Remove this part from here to...␊ |
# ==================================================================␊ |
# Series of informative echos for show assigned path tools file ecc.␊ |
# ==================================================================␊ |
␊ |
␉echo -e $COL_BLACK"=========== BUILD .DMG TEST ==========="$COL_RESET␊ |
␉echo ""␊ |
␉echo "- Version:␉$version"␊ |
␉echo "- Stage:␉$stage"␊ |
␉echo "- Revision:␉$revision"␊ |
␉echo "- Build date:␉$builddate"␊ |
␉echo "- Time stamp:␉$timestamp"␊ |
␉echo -e $COL_BLUE"- Version:"$COL_RESET $COL_RED"␉␉$version"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Stage:"$COL_RESET $COL_RED"␉␉$stage"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Revision:"$COL_RESET $COL_RED"␉␉$revision"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Build date:"$COL_RESET $COL_RED"␉␉$builddate"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Time stamp:"$COL_RESET $COL_RED"␉␉$timestamp"$COL_RESET␊ |
␉echo ""␊ |
␉echo "- DMG path:␉$DMG_ROOT"␊ |
␉echo "- Source dir:␉$SRC_FOLDER"␊ |
␉echo "- Volume name:␉$VOLUME_NAME"␊ |
␉echo "- Temp dmg:␉$DMG_TEMP_NAME"␊ |
␉echo -e $COL_BLUE"- DMG path:"$COL_RESET $COL_RED"␉␉$DMG_ROOT"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Source dir:"$COL_RESET $COL_RED"␉␉$SRC_FOLDER"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Volume name:"$COL_RESET $COL_RED"␉␉$VOLUME_NAME"$COL_RESET␊ |
␉echo -e $COL_BLUE"- Temp dmg:"$COL_RESET $COL_RED"␉␉$DMG_TEMP_NAME"$COL_RESET␊ |
␉echo -e $COL_BLUE"- dmg background:"$COL_RESET $COL_RED"␉$BACKGROUND_FILE"$COL_RESET␊ |
␉echo -e $COL_BLUE"- EULA path:"$COL_RESET $COL_RED"␉␉$EULA_RSRC"$COL_RESET␊ |
␉echo ""␊ |
␉echo "- OpenUp path:␉$OPENUP_TOOL"␊ |
␉echo -e $COL_BLUE"- OpenUp path:"$COL_RESET $COL_RED"␉␉$OPENUP_TOOL"$COL_RESET␊ |
␉echo ""␊ |
␉echo "================= END ================="␊ |
␉echo -e $COL_BLACK"================= END ================="$COL_RESET␊ |
␉echo ""␊ |
␊ |
# ==================================================================␊ |
# ... to here -->␊ |
␊ |
␊ |
␊ |
# =========================================================␊ |
# Create a read-only disk image of the contents of a folder␊ |
# =========================================================␊ |
␊ |
if ! test -z "$SRC_FOLDER"; then␊ |
␉echo "␉Deleting previus existing source folder "␊ |
␉rm -R $SRC_FOLDER␊ |
fi␊ |
␊ |
# ==========================␊ |
# 1) Create the source folder␊ |
# ==========================␊ |
␉echo "␉[mkdir] Creating source folder "␊ |
␉mkdir $SRC_FOLDER␊ |
␉␊ |
# TODO --> List of command to add the needed contents into the folder content␊ |
␊ |
␉echo "␉==========================="␊ |
␊ |
# ======================================␊ |
# 2) Find the size of the folder contents␊ |
# ======================================␊ |
␉FOLDER_SIZE=`du -s $SRC_FOLDER | sed s/[^0-9].*//`␊ |
␉echo "␉==========================="␊ |
␊ |
# ===================================================␊ |
# 3) Allow for partition table and other overhead (3%)␊ |
# ===================================================␊ |
␉IMAGE_SIZE=$(($FOLDER_SIZE * 103/100))␊ |
␉echo "␉==========================="␊ |
␊ |
# ===========================================␊ |
# 4) Minimum size for an HFS+ partition is 4Mb␊ |
# ===========================================␊ |
␉[ $IMAGE_SIZE -lt 8300 ] && IMAGE_SIZE=8300␊ |
␉echo "␉==========================="␊ |
␊ |
# ================================================================␊ |
# 5) Make sure NEXT_ROOT is not set (if we're building with an SDK)␊ |
# ================================================================␊ |
␉unset NEXT_ROOT␊ |
␉echo "␉FOLDER SIZE = $FOLDER_SIZE"␊ |
␉echo "␉IMAGE SIZE = $IMAGE_SIZE"␊ |
␉echo "␉==========================="␊ |
␊ |
# ===================␊ |
# 6) Create the image␊ |
# ===================␊ |
␉echo "␉[hdutil] Creating disk image "␊ |
#␉test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}"␊ |
#␉hdiutil create -sectors $IMAGE_SIZE -fs HFS+ $DMG_TEMP_NAME -volname $VOLUME_NAME␊ |
␉echo "␉==========================="␊ |
␊ |
# ===========␊ |
# 7) Mount it␊ |
# ===========␊ |
␉echo "␉[hdutil] Mounting disk image "␊ |
#␉DEV_NAME=`hdid $DMG_TEMP_NAME | sed 1q | awk '{print $1}'`␊ |
#␉MOUNT_DIR=`hdid $DMG_TEMP_NAME | grep Apple_HFS | awk '{print $3}'`␊ |
␉echo "␉Device name:␉$DEV_NAME"␊ |
␉echo "␉Mount directory: $MOUNT_DIR"␊ |
␉echo "␉==========================="␊ |
␊ |
# ===========================================================␊ |
# 8) Adding optional Finder window layout and bakground image␊ |
# ===========================================================␊ |
#cp RightDS_Store "/Volumes/${VOLUME_NAME}/.DS_Store"␊ |
#if ! test -z "$BACKGROUND_FILE"; then␊ |
echo "␉[cp]␉Copying background file..."␊ |
# test -d "$MOUNT_DIR/.background" || mkdir "$MOUNT_DIR/.background"␊ |
# cp "$BACKGROUND_FILE" "$MOUNT_DIR/.background/$BACKGROUND_FILE_NAME"␊ |
#fi␊ |
␉echo "␉==========================="␊ |
␊ |
# =====================================␊ |
# 9) Make sure it's not world writeable␊ |
# =====================================␊ |
␊ |
␉echo "␉[chmod] Fixing permission for \"${MOUNT_DIR}\""␊ |
#chmod -Rf go-w "${MOUNT_DIR}" || true␊ |
#chmod -f a-w "${MOUNT_DIR}"/.DS_Store || true␊ |
␉echo "␉Done fixing permissions."␊ |
␉echo "␉==========================="␊ |
␊ |
# =============================================␊ |
# 10) Make the top window open itself on mount:␊ |
# =============================================␊ |
␊ |
␉echo "␉[openUp] Setting auto open flag"␊ |
#if [ -x ${OPENUP_TOOL} ]; then␊ |
␉echo "␉Applying openUp..."␊ |
# ${OPENUP_TOOL} "${MOUNT_DIR}"␊ |
#fi␊ |
␉echo "␉==========================="␊ |
␊ |
# ======================␊ |
# 11) Add icon to Volume␊ |
# ======================␊ |
␊ |
#if [ -f "${MOUNT_DIR}/.VolumeIcon.icns" ]; then␊ |
␉echo "␉Setting icon for \"${MOUNT_DIR}\""␊ |
#␉${SETFILE_TOOL} -a C "${MOUNT_DIR}"␊ |
#fi␊ |
␉echo "␉==========================="␊ |
# ===========␊ |
# 12) Unmount␊ |
# ===========␊ |
␊ |
␉echo "␉[hdutil] Unmounting disk image"␊ |
#␉hdiutil detach $DEV_NAME␊ |
␉echo "␉==========================="␊ |
␊ |
# ==================␊ |
# 13) Compress image␊ |
# ==================␊ |
␊ |
␉echo "␉[hdutil] Compressing disk image"␊ |
#␉hdiutil convert $DMG_TEMP_NAME -format UDZO -imagekey zlib-level=9 -o ${DMG_DIR}/${VOLUME_NAME}␊ |
#␉rm -f $DMG_TEMP_NAME␊ |
␉echo "␉==========================="␊ |
␊ |
# =========================␊ |
# 14) Adding EULA resources␊ |
# =========================␊ |
␊ |
#if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then␊ |
␉echo "␉[ResMerger] Adding EULA resources"␊ |
# hdiutil unflatten ${DMG_DIR}/${VOLUME_NAME}␊ |
# /Developer/Tools/ResMerger -a ${EULA_RSRC} -o ${DMG_DIR}/${VOLUME_NAME}␊ |
# hdiutil flatten ${DMG_DIR}/${VOLUME_NAME}␊ |
#fi␊ |
␉echo "␉==========================="␊ |
␉echo "␉Finish $VOLUME_NAME.dmg"␊ |
␉echo "␉==========================="␊ |
␉echo ""␊ |
␉␊ |
# ============␊ |
␊ |
exit 0␊ |