Index: branches/iFabio/Chameleon/package/buildpkgOLD
===================================================================
--- branches/iFabio/Chameleon/package/buildpkgOLD (revision 269)
+++ branches/iFabio/Chameleon/package/buildpkgOLD (revision 270)
@@ -1,405 +0,0 @@
-#!/bin/bash
-
-# $1 Path to store built package
-
-packagesidentity="org.chameleon"
-
-packagename="Chameleon"
-
-pkgroot="${0%/*}"
-
-#version=$( grep I386BOOT_CHAMELEONVERSION sym/i386/vers.h | awk '{ print $3 }' | tr -d '\"' )
-version=$( cat version )
-stage=${version##*-}
-revision=$( grep I386BOOT_CHAMELEONREVISION sym/i386/vers.h | awk '{ print $3 }' | tr -d '\"' )
-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" )
-
-distributioncount=0
-xmlindent=0
-
-indent[0]="\t"
-indent[1]="\t\t"
-indent[2]="\t\t\t"
-indent[3]="\t\t\t\t"
-
-main ()
-{
-
-# clean up the destination path
-
- rm -R -f "${1}"
-
- echo "Building $packagename Install Package v${version%%-*} $stage r$revision $builddate"
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}"
-
-# build core package
-
- ((xmlindent++))
- packagesidentity="org.chameleon"
- mkdir -p ${1}/Core/Root/usr/sbin
-# mkdir -p ${1}/Core/Root/usr/local/bin
- mkdir -p ${1}/Core/Root/usr/standalone/i386
-# mkdir -p ${1}/Core/Root/Extra
- cp -f ${1%/*}/i386/boot ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot0 ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot0hfs ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1f32 ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1h ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1he ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1hp ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/cdboot ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/chain0 ${1}/Core/Root/usr/standalone/i386
- fixperms "${1}/Core/Root/"
-# cp -Rf ${pkgroot}/Configuration/Chameleon.prefPane ${1}/Core/Root/Library/PreferencePanes
-# cp -f ${pkgroot}/Configuration/smbios.plist ${1}/Core/Root/Extra
- cp -f ${pkgroot}/fdisk440 ${1}/Core/Root/usr/sbin
- cp -f ${1%/*}/i386/bdmesg ${1}/Core/Root/usr/sbin
- local coresize=$( du -hkc "${1}/Core/Root" | tail -n1 | awk {'print $1'} )
- buildpackage "${1}/Core" "/" "0" "start_visible=\"false\" start_selected=\"true\""
-
-
-# build Chameleon package
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
-
-# build standard package
-
- mkdir -p ${1}/Standard/Root
- mkdir -p ${1}/Standard/Scripts/Tools
- cp -f ${pkgroot}/Scripts/Standard/* ${1}/Standard/Scripts
- ditto --arch i386 `which SetFile` ${1}/Standard/Scripts/Tools/SetFile
- buildpackage "${1}/Standard" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"upgrade_allowed()\" selected=\"exclusive(choices['EnhancedHFS']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedFAT'])\""
-
-# build standard package with boot0hfs
-
- mkdir -p ${1}/Standardhfs/Root
- mkdir -p ${1}/Standardhfs/Scripts/Tools
- cp -f ${pkgroot}/Scripts/Standardhfs/* ${1}/Standardhfs/Scripts
- ditto --arch i386 `which SetFile` ${1}/Standardhfs/Scripts/Tools/SetFile
- buildpackage "${1}/Standardhfs" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"false\" selected=\"exclusive(choices['EnhancedHFS']) && exclusive(choices['Standard']) && exclusive(choices['EnhancedFAT'])\""
-
-
-# build efi fat32 package
-
- mkdir -p ${1}/EnhancedFAT/Root
- mkdir -p ${1}/EnhancedFAT/Scripts/Tools
- cp -f ${pkgroot}/Scripts/FAT/* ${1}/EnhancedFAT/Scripts
- ditto --arch i386 `which SetFile` ${1}/EnhancedFAT/Scripts/Tools/SetFile
- buildpackage "${1}/EnhancedFAT" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedHFS'])\""
-
-# build efi hfs package
-
- mkdir -p ${1}/EnhancedHFS/Root
- mkdir -p ${1}/EnhancedHFS/Scripts/Tools
- cp -f ${pkgroot}/Scripts/HFS/* ${1}/EnhancedHFS/Scripts
- ditto --arch i386 `which SetFile` ${1}/EnhancedHFS/Scripts/Tools/SetFile
- buildpackage "${1}/EnhancedHFS" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedFAT'])\""
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
-
-# build PrefPanel package
-
-# mkdir -p ${1}/PrefPanel/Root
-# mkdir -p ${1}/PrefPanel/Root/Library/PreferencePanes
-# cp -Rf ${pkgroot}/Configuration/Chameleon.prefPane ${1}/PrefPanel/Root/Library/PreferencePanes
-# buildpackage "${1}/PrefPanel" "/" "${coresize}" "start_visible=\"true\" start_selected=\"false\""
-
-# build utility package
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon"
-
- # build package for bdmesg
-# mkdir -p "${1}/bdmesg/Root"
-# ditto --noextattr --noqtn "${1%/*}/i386/bdmesg" "${1}/bdmesg/Root"
-# echo "Building bdmesg package"
-# buildpackage "${1}/bdmesg" "/usr/sbin" "" "start_selected=\"false\""
- # End build package for bdmesg
-
- # build package for Chameleon PrefPanel
- mkdir -p "${1}/PrefPanel/Root/"
- ditto --noextattr --noqtn "${pkgroot}/Configuration/PrefPanel/Chameleon.prefPane" "${1}/PrefPanel/Root"
- echo "Building Chameleon Preference Panel package"
- buildpackage "${1}/PrefPanel" "/Library/PreferencePanes/Chameleon.prefPane" "" "start_selected=\"false\""
- # End build package for Chameleon PrefPanel
-
- # build package for SMBIOSDefault
- mkdir -p "${1}/SMBIOSDefault/Root/"
- ditto --noextattr --noqtn "${pkgroot}/Configuration/SMBIOSDefault/smbios.plist" "${1}/SMBIOSDefault/Root"
- echo "Building SMBIOSDefault package"
- buildpackage "${1}/SMBIOSDefault" "/Extra/Example" "" "start_selected=\"false\""
- # End build package for SMBIOSDefault
-
- # build package for EFIMounter
- mkdir -p "${1}/EFIMounter/Root/"
- ditto --noextattr --noqtn "${pkgroot}/Configuration/EFIMounter/EFI Mounter.app" "${1}/EFIMounter/Root"
- echo "Building EFIMounter package"
- buildpackage "${1}/EFIMounter" "/Applications/EFI Mounter.app" "" "start_selected=\"false\""
- # End build package for EFIMounter
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-# End utility package
-
-# build Documentation package
-# outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-# choices[$((choicescount++))]="\n\n"
-# ((xmlindent++))
-# packagesidentity="org.chameleon"
-
- # build package for Documentation
-# mkdir -p "${1}/Documentation/Root"
-# cp -f ${pkgroot}/doc/BootHelp.txt ${1}/Documentation/Root
-# cp -f ${pkgroot}/doc/README ${1}/Documentation/Root
-# cp -f ${pkgroot}/doc/Users_Guide0.5.pdf ${1}/Documentation/Root
-# echo "Building Documentation package"
-# buildpackage "${1}/Documentation" "/Documentation/Chameleon2RC5" "" "start_selected=\"false\""
- # End build package for bdmesg
-
-# ((xmlindent--))
-# outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-# End utility package
-
-# build options packages
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon"
- options=($( find "${pkgroot}/Scripts/Options" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#options[@]} ; i++ ))
- do
- mkdir -p "${1}/${options[$i]##*/}/Root"
- mkdir -p "${1}/${options[$i]##*/}/Scripts"
-
- ditto --noextattr --noqtn "${options[$i]}/postinstall" "${1}/${options[$i]##*/}/Scripts/postinstall"
-
- buildpackage "${1}/${options[$i]##*/}" "/" "" "start_selected=\"false\""
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
-# build resolution packages
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon.resolution"
- resolutions=($( find "${pkgroot}/Scripts/Resolutions" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#resolutions[@]} ; i++ ))
- do
- mkdir -p "${1}/${resolutions[$i]##*/}/Root/"
- mkdir -p "${1}/${resolutions[$i]##*/}/Scripts/"
- ditto --noextattr --noqtn "${resolutions[$i]}/postinstall" "${1}/${resolutions[$i]##*/}/Scripts/postinstall"
-
- buildpackage "${1}/${resolutions[$i]##*/}" "/" "" "start_selected=\"false\""
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
-# build theme packages
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon.theme"
- artwork="${1%/*}"
- themes=($( find "${artwork%/*}/artwork/themes" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#themes[@]} ; i++ ))
- do
- theme=$( echo ${themes[$i]##*/} | awk 'BEGIN{OFS=FS=""}{$1=toupper($1);print}' )
- mkdir -p "${1}/${theme}/Root/"
- ditto --noextattr --noqtn "${themes[$i]}" "${1}/${themes[$i]##*/}/Root/${theme}"
- find "${1}/${themes[$i]##*/}" -name '.DS_Store' -or -name '.svn' -exec rm -R {} \+
- find "${1}/${themes[$i]##*/}" -type f -exec chmod 644 {} \+
-
- buildpackage "${1}/${theme}" "/.Chameleon/Extra/Themes" "" "start_selected=\"false\""
- rm -R -f "${1}/${i##*/}"
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
-
- ((xmlindent++))
-
-# build kext packages
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon"
- kexts=($( find "${pkgroot}/Kexts" -type d -name '*.kext' -depth 1 ))
- for (( i = 0 ; i < ${#kexts[@]} ; i++ ))
- do
- filename="${kexts[$i]##*/}"
- mkdir -p "${1}/${filename%.kext}/Root/"
- ditto --noextattr --noqtn --arch i386 "${kexts[$i]}" "${1}/${filename%.kext}/Root/${filename}"
- find "${1}/${filename%.kext}" -name '.DS_Store' -or -name '.svn' -exec rm -R -f {} \; 2>/dev/null
- fixperms "${1}/${filename%.kext}/Root/"
- chown 501:20 "${1}/${filename%.kext}/Root/"
- buildpackage "${1}/${filename%.kext}" "/.Chameleon/Extra/Extensions" "" "start_selected=\"false\""
- rm -R -f "${1}/${filename%.kext}"
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
-# build post install package
-
- mkdir -p ${1}/Post/Root
- mkdir -p ${1}/Post/Scripts
- cp -f ${pkgroot}/Scripts/Post/* ${1}/Post/Scripts
- buildpackage "${1}/Post" "/" "" "start_visible=\"false\" start_selected=\"true\""
- outline[$((outlinecount++))]="${indent[$xmlindent]}"
-
-# build meta package
-
- makedistribution "${1}" "${2}" "${3}" "${4}" "${5}"
-
-# clean up
-
- rm -R -f "${1}"
-
-}
-
-fixperms ()
-{
- # $1 path
- find "${1}" -type f -exec chmod 644 {} \;
- find "${1}" -type d -exec chmod 755 {} \;
- chown -R 0:0 "${1}"
-}
-
-buildpackage ()
-{
-# $1 Path to package to build containing Root and or Scripts
-# $2 Install Location
-# $3 Size
-# $4 Options
-
-if [ -d "${1}/Root" ] && [ "${1}/Scripts" ]; then
-
- local packagename="${1##*/}"
- local identifier=$( echo ${packagesidentity}.${packagename//_/.} | tr [:upper:] [:lower:] )
- find "${1}" -name '.DS_Store' -delete
- local filecount=$( find "${1}/Root" | wc -l )
- if [ "${3}" ]; then
- local installedsize="${3}"
- else
- local installedsize=$( du -hkc "${1}/Root" | tail -n1 | awk {'print $1'} )
- fi
- local header="\n\n"
- header+="\t\n"
- rm -R -f "${1}/Temp"
-
- [ -d "${1}/Temp" ] || mkdir -m 777 "${1}/Temp"
- [ -d "${1}/Root" ] && mkbom "${1}/Root" "${1}/Temp/Bom"
-
- if [ -d "${1}/Scripts" ]; then
- header+="\t\n"
- for script in $( find "${1}/Scripts" -type f \( -name 'pre*' -or -name 'post*' \) )
- do
- header+="\t\t<${script##*/} file=\"./${script##*/}\"/>\n"
- done
- header+="\t\n"
- chown -R 0:0 "${1}/Scripts"
- pushd "${1}/Scripts" >/dev/null
- find . -print | cpio -o -z -H cpio > "../Temp/Scripts"
- popd >/dev/null
- fi
-
- header+=""
- echo -e "${header}" > "${1}/Temp/PackageInfo"
- pushd "${1}/Root" >/dev/null
- find . -print | cpio -o -z -H cpio > "../Temp/Payload"
- popd >/dev/null
- pushd "${1}/Temp" >/dev/null
-
- xar -c -f "${1%/*}/${packagename// /}.pkg" --compression none .
-
- popd >/dev/null
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
- if [ "${4}" ]; then
- local choiceoptions="${indent[$xmlindent]}${4}\n"
- fi
- choices[$((choicescount++))]="\n\t#${packagename// /}.pkg\n\n"
-
- rm -R -f "${1}"
-fi
-}
-
-makedistribution ()
-{
- rm -f "${1%/*}/${packagename// /}"*.pkg
-
- find "${1}" -type f -name '*.pkg' -depth 1 | while read component
- do
- mkdir -p "${1}/${packagename}/${component##*/}"
- pushd "${1}/${packagename}/${component##*/}" >/dev/null
- xar -x -f "${1%}/${component##*/}"
- popd >/dev/null
- done
-
- ditto --noextattr --noqtn "${pkgroot}/Distribution" "${1}/${packagename}/Distribution"
- ditto --noextattr --noqtn "${pkgroot}/Resources" "${1}/${packagename}/Resources"
-
- find "${1}/${packagename}/Resources" -type d -name '.svn' -exec rm -R -f {} \; 2>/dev/null
-
- for (( i=0; i < ${#outline[*]} ; i++));
- do
- echo -e "${outline[$i]}" >> "${1}/${packagename}/Distribution"
- done
-
- for (( i=0; i < ${#choices[*]} ; i++));
- do
- echo -e "${choices[$i]}" >> "${1}/${packagename}/Distribution"
- done
-
- echo "" >> "${1}/${packagename}/Distribution"
-
- perl -i -p -e "s/%CHAMELEONVERSION%/${version%%-*}/g" `find "${1}/${packagename}/Resources" -type f`
- perl -i -p -e "s/%CHAMELEONREVISION%/${revision}/g" `find "${1}/${packagename}/Resources" -type f`
-# Adding Package type test (not translated)
- perl -i -p -e "s/%PKGTYPE%/TEST/g" `find "${1}/${packagename}/Resources" -type f`
-#
-
- stage=${stage/RC/Release Candidate }
- stage=${stage/FINAL/2.0 Final}
- perl -i -p -e "s/%CHAMELEONSTAGE%/${stage}/g" `find "${1}/${packagename}/Resources" -type f`
-
- find "${1}/${packagename}" -name '.DS_Store' -delete
- pushd "${1}/${packagename}" >/dev/null
- xar -c -f "${1%/*}/${packagename// /}-${version}-INSTALLER-r${revision}.pkg" --compression none .
- popd >/dev/null
-
- md5=$( md5 "${1%/*}/${packagename// /}-${version}-INSTALLER-r${revision}.pkg" | awk {'print $4'} )
- echo "MD5 (${packagename// /}-${version}-INSTALLER-r${revision}.pkg) = ${md5}" > "${1%/*}/${packagename// /}-${version}-INSTALLER-r${revision}.pkg.md5"
-}
-
-main "${1}" "${2}" "${3}" "${4}" "${5}"
-
Index: branches/iFabio/Chameleon/package/buildpkg
===================================================================
--- branches/iFabio/Chameleon/package/buildpkg (revision 269)
+++ branches/iFabio/Chameleon/package/buildpkg (revision 270)
@@ -1,412 +0,0 @@
-#!/bin/bash
-
-# $1 Path to store built package
-
-packagesidentity="org.chameleon"
-
-packagename="Chameleon"
-
-pkgroot="${0%/*}"
-
-#version=$( grep I386BOOT_CHAMELEONVERSION sym/i386/vers.h | awk '{ print $3 }' | tr -d '\"' )
-version=$( cat version )
-stage=${version##*-}
-revision=$( grep I386BOOT_CHAMELEONREVISION sym/i386/vers.h | awk '{ print $3 }' | tr -d '\"' )
-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" )
-
-distributioncount=0
-xmlindent=0
-
-indent[0]="\t"
-indent[1]="\t\t"
-indent[2]="\t\t\t"
-indent[3]="\t\t\t\t"
-
-main ()
-{
-
-# clean up the destination path
-
-rm -R -f "${1}"
-
-echo "Building $packagename Install Package v${version%%-*} $stage r$revision $builddate"
-
-outline[$((outlinecount++))]="${indent[$xmlindent]}"
-
-# build core package
-
- ((xmlindent++))
- packagesidentity="org.chameleon"
- mkdir -p ${1}/Core/Root/usr/sbin
-# mkdir -p ${1}/Core/Root/usr/local/bin
- mkdir -p ${1}/Core/Root/usr/standalone/i386
-# mkdir -p ${1}/Core/Root/Extra
- cp -f ${1%/*}/i386/boot ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot0 ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot0hfs ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1f32 ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1h ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1he ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/boot1hp ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/cdboot ${1}/Core/Root/usr/standalone/i386
- cp -f ${1%/*}/i386/chain0 ${1}/Core/Root/usr/standalone/i386
- fixperms "${1}/Core/Root/"
-# cp -Rf ${pkgroot}/Configuration/Chameleon.prefPane ${1}/Core/Root/Library/PreferencePanes
-# cp -f ${pkgroot}/Configuration/smbios.plist ${1}/Core/Root/Extra
- cp -f ${pkgroot}/fdisk440 ${1}/Core/Root/usr/sbin
- cp -f ${1%/*}/i386/bdmesg ${1}/Core/Root/usr/sbin
- local coresize=$( du -hkc "${1}/Core/Root" | tail -n1 | awk {'print $1'} )
- echo "Building core package"
- buildpackage "${1}/Core" "/" "0" "start_visible=\"false\" start_selected=\"true\""
-# buildpackage "${1}/Core" "/" "0" "start_visible=\"true\" start_selected=\"true\""
-
-
-# build Chameleon package
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
-
- # build standard package
- mkdir -p ${1}/Standard/Root
- mkdir -p ${1}/Standard/Scripts/Tools
- cp -f ${pkgroot}/Scripts/Standard/* ${1}/Standard/Scripts
- ditto --arch i386 `which SetFile` ${1}/Standard/Scripts/Tools/SetFile
- echo "Building boot0 package"
- buildpackage "${1}/Standard" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"upgrade_allowed()\" selected=\"exclusive(choices['EnhancedHFS']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedFAT']) && exclusive(choices['noboot'])\""
- # End build standard package
-
- # build standard package with boot0hfs
- mkdir -p ${1}/Standardhfs/Root
- mkdir -p ${1}/Standardhfs/Scripts/Tools
- cp -f ${pkgroot}/Scripts/Standardhfs/* ${1}/Standardhfs/Scripts
- ditto --arch i386 `which SetFile` ${1}/Standardhfs/Scripts/Tools/SetFile
- echo "Building boot0hfs package"
- buildpackage "${1}/Standardhfs" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"false\" selected=\"exclusive(choices['EnhancedHFS']) && exclusive(choices['Standard']) && exclusive(choices['EnhancedFAT']) && exclusive(choices['noboot'])\""
- # End build standard package with boot0hfs
-
- # build efi fat32 package
- mkdir -p ${1}/EnhancedFAT/Root
- mkdir -p ${1}/EnhancedFAT/Scripts/Tools
- cp -f ${pkgroot}/Scripts/FAT/* ${1}/EnhancedFAT/Scripts
- ditto --arch i386 `which SetFile` ${1}/EnhancedFAT/Scripts/Tools/SetFile
- echo "Building efi fat32 package"
- buildpackage "${1}/EnhancedFAT" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedHFS']) && exclusive(choices['noboot'])\""
- # End build efi fat32 package
-
- # build efi hfs package
- mkdir -p ${1}/EnhancedHFS/Root
- mkdir -p ${1}/EnhancedHFS/Scripts/Tools
- cp -f ${pkgroot}/Scripts/HFS/* ${1}/EnhancedHFS/Scripts
- ditto --arch i386 `which SetFile` ${1}/EnhancedHFS/Scripts/Tools/SetFile
- echo "Building efi hfs package"
- buildpackage "${1}/EnhancedHFS" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedFAT']) && exclusive(choices['noboot'])\""
- # End build efi hfs package
-
- # build reset choice package
- mkdir -p ${1}/noboot/Root
- echo "Building reset choice package"
- buildpackage "${1}/noboot" "/binaries" "" "start_visible=\"true\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['Standardhfs']) && exclusive(choices['EnhancedFAT']) && exclusive(choices['EnhancedHFS'])\""
- # End build reset choice package
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-# End build Chameleon package
-
-# build Extras package
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
-
- # build utility package
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon"
-
- # build package for Chameleon PrefPanel
- mkdir -p "${1}/PrefPanel/Root/"
- ditto --noextattr --noqtn "${pkgroot}/Configuration/PrefPanel/Chameleon.prefPane" "${1}/PrefPanel/Root"
- echo "Building Chameleon Preference Panel package"
- buildpackage "${1}/PrefPanel" "/Library/PreferencePanes/Chameleon.prefPane" "" "start_selected=\"false\""
- # End build package for Chameleon PrefPanel
-
- # build package for SMBIOSDefault
- mkdir -p "${1}/SMBIOSDefault/Root/"
- ditto --noextattr --noqtn "${pkgroot}/Configuration/SMBIOSDefault/smbios.plist" "${1}/SMBIOSDefault/Root"
- echo "Building SMBIOSDefault package"
- buildpackage "${1}/SMBIOSDefault" "/Extra/Example" "" "start_selected=\"false\""
- # End build package for SMBIOSDefault
-
- # build package for EFIMounter
- mkdir -p "${1}/EFIMounter/Root/"
- ditto --noextattr --noqtn "${pkgroot}/Configuration/EFIMounter/EFI Mounter.app" "${1}/EFIMounter/Root"
- echo "Building EFIMounter package"
- buildpackage "${1}/EFIMounter" "/Applications/EFI Mounter.app" "" "start_selected=\"false\""
- # End build package for EFIMounter
-
- # build package for Documentation
- mkdir -p "${1}/Documentation/Root"
- cp -f ${pkgroot}/doc/BootHelp.txt ${1}/Documentation/Root
- cp -f ${pkgroot}/doc/README ${1}/Documentation/Root
- cp -f ${pkgroot}/doc/Users_Guide0.5.pdf ${1}/Documentation/Root
- echo "Building Documentation package"
- buildpackage "${1}/Documentation" "/Documentation/Chameleon2RC5" "" "start_selected=\"false\""
- # End build package for Documentation
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- # End utility package
-
- # build options packages
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
-
- # build base options packages
- packagesidentity="org.chameleon"
-
- options=($( find "${pkgroot}/Scripts/BaseOptions" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#options[@]} ; i++ ))
- do
- mkdir -p "${1}/${options[$i]##*/}/Root"
- mkdir -p "${1}/${options[$i]##*/}/Scripts"
- ditto --noextattr --noqtn "${options[$i]}/postinstall" "${1}/${options[$i]##*/}/Scripts/postinstall"
- echo "Building ${options[$i]##*/} package"
- buildpackage "${1}/${options[$i]##*/}" "/" "" "start_selected=\"false\""
- done
- # End build base options packages
-
- # build resolution packages
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon.resolution"
- resolutions=($( find "${pkgroot}/Scripts/Resolutions" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#resolutions[@]} ; i++ ))
- do
- mkdir -p "${1}/${resolutions[$i]##*/}/Root/"
- mkdir -p "${1}/${resolutions[$i]##*/}/Scripts/"
- ditto --noextattr --noqtn "${resolutions[$i]}/postinstall" "${1}/${resolutions[$i]##*/}/Scripts/postinstall"
- echo "Building ${resolutions[$i]##*/} package"
- buildpackage "${1}/${resolutions[$i]##*/}" "/" "" "start_selected=\"false\""
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- # End build resolution packages
-
- # build Advanced packages
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
-
- packagesidentity="org.chameleon"
- optionsadv=($( find "${pkgroot}/Scripts/Advanced" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#optionsadv[@]} ; i++ ))
- do
- mkdir -p "${1}/${optionsadv[$i]##*/}/Root"
- mkdir -p "${1}/${optionsadv[$i]##*/}/Scripts"
- ditto --noextattr --noqtn "${optionsadv[$i]}/postinstall" "${1}/${optionsadv[$i]##*/}/Scripts/postinstall"
- echo "Building ${optionsadv[$i]##*/} package"
- buildpackage "${1}/${optionsadv[$i]##*/}" "/" "" "start_selected=\"false\""
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- # End build Advanced packages
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
- # End build options packages
-
- # build theme packages
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon.theme"
- artwork="${1%/*}"
- themes=($( find "${artwork%/*}/artwork/themes" -type d -depth 1 -not -name '.svn' ))
- for (( i = 0 ; i < ${#themes[@]} ; i++ ))
- do
- theme=$( echo ${themes[$i]##*/} | awk 'BEGIN{OFS=FS=""}{$1=toupper($1);print}' )
- mkdir -p "${1}/${theme}/Root/"
- ditto --noextattr --noqtn "${themes[$i]}" "${1}/${themes[$i]##*/}/Root/${theme}"
- find "${1}/${themes[$i]##*/}" -name '.DS_Store' -or -name '.svn' -exec rm -R {} \+
- find "${1}/${themes[$i]##*/}" -type f -exec chmod 644 {} \+
- echo "Building ${themes[$i]##*/} package"
- buildpackage "${1}/${theme}" "/.Chameleon/Extra/Themes" "" "start_selected=\"false\""
- rm -R -f "${1}/${i##*/}"
- done
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- # End build theme packages
-
- # build kext packages
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- choices[$((choicescount++))]="\n\n"
- ((xmlindent++))
- packagesidentity="org.chameleon"
- kexts=($( find "${pkgroot}/Kexts" -type d -name '*.kext' -depth 1 ))
- for (( i = 0 ; i < ${#kexts[@]} ; i++ ))
- do
- filename="${kexts[$i]##*/}"
- mkdir -p "${1}/${filename%.kext}/Root/"
- ditto --noextattr --noqtn --arch i386 "${kexts[$i]}" "${1}/${filename%.kext}/Root/${filename}"
- find "${1}/${filename%.kext}" -name '.DS_Store' -or -name '.svn' -exec rm -R -f {} \; 2>/dev/null
- fixperms "${1}/${filename%.kext}/Root/"
- chown 501:20 "${1}/${filename%.kext}/Root/"
- echo "Building ${filename%.kext} package"
- buildpackage "${1}/${filename%.kext}" "/.Chameleon/Extra/Extensions" "" "start_selected=\"false\""
- rm -R -f "${1}/${filename%.kext}"
- done
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
- # End build kext packages
-
- ((xmlindent--))
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-# End build Extras package
-
-# build post install package
- mkdir -p ${1}/Post/Root
- mkdir -p ${1}/Post/Scripts
- cp -f ${pkgroot}/Scripts/Post/* ${1}/Post/Scripts
- buildpackage "${1}/Post" "/" "" "start_visible=\"false\" start_selected=\"true\""
- outline[$((outlinecount++))]="${indent[$xmlindent]}"
-# build meta package
- makedistribution "${1}" "${2}" "${3}" "${4}" "${5}"
-
-# clean up
- rm -R -f "${1}"
-
-}
-
-fixperms ()
-{
- # $1 path
- find "${1}" -type f -exec chmod 644 {} \;
- find "${1}" -type d -exec chmod 755 {} \;
- chown -R 0:0 "${1}"
-}
-
-buildpackage ()
-{
-# $1 Path to package to build containing Root and or Scripts
-# $2 Install Location
-# $3 Size
-# $4 Options
-
-if [ -d "${1}/Root" ] && [ "${1}/Scripts" ]; then
-
- local packagename="${1##*/}"
- local identifier=$( echo ${packagesidentity}.${packagename//_/.} | tr [:upper:] [:lower:] )
- find "${1}" -name '.DS_Store' -delete
- local filecount=$( find "${1}/Root" | wc -l )
- if [ "${3}" ]; then
- local installedsize="${3}"
- else
- local installedsize=$( du -hkc "${1}/Root" | tail -n1 | awk {'print $1'} )
- fi
- local header="\n\n"
- header+="\t\n"
- rm -R -f "${1}/Temp"
-
- [ -d "${1}/Temp" ] || mkdir -m 777 "${1}/Temp"
- [ -d "${1}/Root" ] && mkbom "${1}/Root" "${1}/Temp/Bom"
-
- if [ -d "${1}/Scripts" ]; then
- header+="\t\n"
- for script in $( find "${1}/Scripts" -type f \( -name 'pre*' -or -name 'post*' \) )
- do
- header+="\t\t<${script##*/} file=\"./${script##*/}\"/>\n"
- done
- header+="\t\n"
- chown -R 0:0 "${1}/Scripts"
- pushd "${1}/Scripts" >/dev/null
- find . -print | cpio -o -z -H cpio > "../Temp/Scripts"
- popd >/dev/null
- fi
-
- header+=""
- echo -e "${header}" > "${1}/Temp/PackageInfo"
- pushd "${1}/Root" >/dev/null
- find . -print | cpio -o -z -H cpio > "../Temp/Payload"
- popd >/dev/null
- pushd "${1}/Temp" >/dev/null
-
- xar -c -f "${1%/*}/${packagename// /}.pkg" --compression none .
-
- popd >/dev/null
-
- outline[$((outlinecount++))]="${indent[$xmlindent]}\t"
-
- if [ "${4}" ]; then
- local choiceoptions="${indent[$xmlindent]}${4}\n"
- fi
- choices[$((choicescount++))]="\n\t#${packagename// /}.pkg\n\n"
-
- rm -R -f "${1}"
-fi
-}
-
-makedistribution ()
-{
- rm -f "${1%/*}/${packagename// /}"*.pkg
-
- find "${1}" -type f -name '*.pkg' -depth 1 | while read component
- do
- mkdir -p "${1}/${packagename}/${component##*/}"
- pushd "${1}/${packagename}/${component##*/}" >/dev/null
- xar -x -f "${1%}/${component##*/}"
- popd >/dev/null
- done
-
- ditto --noextattr --noqtn "${pkgroot}/Distribution" "${1}/${packagename}/Distribution"
- ditto --noextattr --noqtn "${pkgroot}/Resources" "${1}/${packagename}/Resources"
-
- find "${1}/${packagename}/Resources" -type d -name '.svn' -exec rm -R -f {} \; 2>/dev/null
-
- for (( i=0; i < ${#outline[*]} ; i++));
- do
- echo -e "${outline[$i]}" >> "${1}/${packagename}/Distribution"
- done
-
- for (( i=0; i < ${#choices[*]} ; i++));
- do
- echo -e "${choices[$i]}" >> "${1}/${packagename}/Distribution"
- done
-
- echo "" >> "${1}/${packagename}/Distribution"
-
- perl -i -p -e "s/%CHAMELEONVERSION%/${version%%-*}/g" `find "${1}/${packagename}/Resources" -type f`
- perl -i -p -e "s/%CHAMELEONREVISION%/${revision}/g" `find "${1}/${packagename}/Resources" -type f`
-# Adding Package type test (not translated)
- perl -i -p -e "s/%PKGTYPE%/TEST/g" `find "${1}/${packagename}/Resources" -type f`
-#
-
- stage=${stage/RC/Release Candidate }
- stage=${stage/FINAL/2.0 Final}
- perl -i -p -e "s/%CHAMELEONSTAGE%/${stage}/g" `find "${1}/${packagename}/Resources" -type f`
-
- find "${1}/${packagename}" -name '.DS_Store' -delete
- pushd "${1}/${packagename}" >/dev/null
- xar -c -f "${1%/*}/${packagename// /}-${version}-INSTALLER-r${revision}.pkg" --compression none .
- popd >/dev/null
-
- md5=$( md5 "${1%/*}/${packagename// /}-${version}-INSTALLER-r${revision}.pkg" | awk {'print $4'} )
- echo "MD5 (${packagename// /}-${version}-INSTALLER-r${revision}.pkg) = ${md5}" > "${1%/*}/${packagename// /}-${version}-INSTALLER-r${revision}.pkg.md5"
-}
-
-main "${1}" "${2}" "${3}" "${4}" "${5}"
-