Index: branches/iFabio/Chameleon/i386/libsaio/ati.c =================================================================== --- branches/iFabio/Chameleon/i386/libsaio/ati.c (revision 329) +++ branches/iFabio/Chameleon/i386/libsaio/ati.c (revision 330) @@ -448,6 +448,7 @@ { 0x68F9, 0x5470174B, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5470", kNull }, { 0x68F9, 0x5490174B, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5490", kNull }, { 0x68F9, 0x5530174B, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5530", kNull }, + { 0x68F9, 0x20091787, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5450", kEulemur }, /* Northen Islands */ { 0x6718, 0x0B001002, CHIP_FAMILY_CAYMAN, "AMD Radeon HD 6970", kNull }, @@ -1148,8 +1149,7 @@ if (!card->info->device_id || !card->info->cfg_name) { - printf("Unsupported card!\nUse AtiConfig key to specify a framebuffer for your card.\nIf still unsupported, report dev id, subsys id and vendor."); - pause(); + printf("Unsupported card!\n"); return false; } Index: branches/iFabio/Chameleon/package/buildpkg =================================================================== --- branches/iFabio/Chameleon/package/buildpkg (revision 329) +++ branches/iFabio/Chameleon/package/buildpkg (revision 330) @@ -1,478 +0,0 @@ -#!/bin/bash - -# $1 Path to store built package - -packagesidentity="org.chameleon" - -packagename="Chameleon" - -pkgroot="${0%/*}" - -COL_BLACK="\x1b[30;01m" -COL_RED="\x1b[31;01m" -COL_GREEN="\x1b[32;01m" -COL_YELLOW="\x1b[33;01m" -COL_MAGENTA="\x1b[35;01m" -COL_CYAN="\x1b[36;01m" -COL_WHITE="\x1b[37;01m" -COL_BLUE="\x1b[34;01m" -COL_RESET="\x1b[39;49;00m" - -#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" ) - -# ================= - -develop=" Crazor, Dense, fassl, fxtentacle, iNDi, JrCs, Kabyl, kaitek, mackerintel, mercurysquad, munky, Slice, meklort, mozodojo, rekursor, Turbo, cparm, valv & zef " - -credits=" andyvand, asereBLN, Azimut, bumby, cosmo1t, dfe, Galaxy, kalyway, Krazubu, MasterChief, netkas, sckevyn, smith@@, THeKiNG, blackosx, .: ErmaC :., scrax, DutchHockeyPro & Andy" - -# ================= - -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 "" -echo -e $COL_BLACK" ----------------------------------"$COL_RESET -echo -e $COL_BLACK" Building $packagename Install Package"$COL_RESET -echo -e $COL_BLACK" ----------------------------------"$COL_RESET -echo "" - -outline[$((outlinecount++))]="${indent[$xmlindent]}" - -# build core package - echo "================= Core =================" - ((xmlindent++)) - packagesidentity="org.chameleon.core" - 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/usr/standalone/i386/modules - cp -R ${1%/*}/i386/modules ${1}/Core/Root/usr/standalone/i386 - 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/boot0md ${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 -f ${1%/*}/i386/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 " [BUILD] i386 " - buildpackage "${1}/Core" "/" "0" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 - -# build Chameleon package - echo "================= Chameleon =================" - 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 " [BUILD] Standard " - buildpackage "${1}/Standard" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"upgrade_allowed()\" selected=\"exclusive(choices['EFI']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 - # End build standard package - - # build efi package - mkdir -p ${1}/EFI/Root - mkdir -p ${1}/EFI/Scripts/Tools - cp -f ${pkgroot}/Scripts/EFI/* ${1}/EFI/Scripts - # ditto --arch i386 `which SetFile` ${1}/EFI/Scripts/Tools/SetFile - echo " [BUILD] EFI " - buildpackage "${1}/EFI" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 - # End build efi package - - # build reset choice package - mkdir -p ${1}/noboot/Root - echo " [BUILD] Reset choice " - buildpackage "${1}/noboot" "/tmpcham" "" "start_visible=\"true\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['EFI'])\"" >/dev/null 2>&1 - # End build reset choice package - - # build Modules package - echo "================= Modules =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - packagesidentity="org.chameleon.module" - modules=($( find "${pkgroot}/Scripts/Modules" -type d -depth 1 -not -name '.svn' )) - for (( i = 0 ; i < ${#modules[@]} ; i++ )) - do - mkdir -p "${1}/${modules[$i]##*/}/Root" - mkdir -p "${1}/${modules[$i]##*/}/Scripts" - ditto --noextattr --noqtn "${modules[$i]}/postinstall" "${1}/${modules[$i]##*/}/Scripts/postinstall" - echo " [BUILD] ${modules[$i]##*/} " - buildpackage "${1}/${modules[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 - rm -R -f "${1}/${i##*/}" - done - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - # End build Modules packages - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" -# End build Chameleon package - -# build Extras package - echo "================= Extras =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - packagesidentity="org.chameleon.extras.com" - - # build utility package - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - packagesidentity="org.chameleon.utility.com" - - # build package for Chameleon PrefPanel - mkdir -p "${1}/PrefPanel/Root" - ditto --noextattr --noqtn "${pkgroot}/Configuration/PrefPanel/Chameleon.prefPane" "${1}/PrefPanel/Root" - echo " [BUILD] Chameleon Preference Panel " - buildpackage "${1}/PrefPanel" "/Library/PreferencePanes/Chameleon.prefPane" "" "start_selected=\"false\"" >/dev/null 2>&1 - # 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 " [BUILD] SMBIOSDefault " - buildpackage "${1}/SMBIOSDefault" "/Extra/Example" "" "start_selected=\"false\"" >/dev/null 2>&1 - # 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 " [BUILD] EFIMounter " - buildpackage "${1}/EFIMounter" "/Applications/EFI Mounter.app" "" "start_selected=\"false\"" >/dev/null 2>&1 - # 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 " [BUILD] Documentation " - buildpackage "${1}/Documentation" "/Library/Documentation/Chameleon2RC5" "" "start_selected=\"false\"" >/dev/null 2>&1 - # End build package for Documentation - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - # End utility package - - # build options packages - echo "================= Options =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - - # build base options packages - packagesidentity="org.chameleon.options.com" - - 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 " [BUILD] ${options[$i]##*/} " - buildpackage "${1}/${options[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 - done - # End build base options packages - - # build resolution packages - echo "================= Res. Options =================" - 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 " [BUILD] ${resolutions[$i]##*/} " - buildpackage "${1}/${resolutions[$i]##*/}" "/tmpcham" "" "start_selected=\"false\"" >/dev/null 2>&1 - done - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - # End build resolution packages - - # build Advanced packages - echo "================= Adv. Options =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - - packagesidentity="org.chameleon.advanced.options.pkg" - 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 " [BUILD] ${optionsadv[$i]##*/} " - buildpackage "${1}/${optionsadv[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 - done - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - # End build Advanced packages - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - - # End build options packages - - # build theme packages - echo "================= Themes =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - packagesidentity="org.chameleon.theme.pkg" - 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/" - rsync -r --exclude=.svn "${themes[$i]}" "${1}/${themes[$i]##*/}/Root/${theme}" - # #### Comment out thx meklort - # 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 " [BUILD] ${themes[$i]##*/} " - buildpackage "${1}/${theme}" "/Extra/Themes" "" "start_selected=\"false\"" >/dev/null 2>&1 - rm -R -f "${1}/${i##*/}" - done - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - # End build theme packages - - # build kext packages - echo "================= Kexts =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - packagesidentity="org.chameleon.kext.pkg" - 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 " [BUILD] ${filename%.kext} " - buildpackage "${1}/${filename%.kext}" "/Extra/Extensions" "" "start_selected=\"false\"" >/dev/null 2>&1 - 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 - echo "================= Post =================" - mkdir -p ${1}/Post/Root - mkdir -p ${1}/Post/Scripts - cp -f ${pkgroot}/Scripts/Post/* ${1}/Post/Scripts - echo " [BUILD] Post " - buildpackage "${1}/Post" "/" "" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 - 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` -# - -# Adding Developer and credits - perl -i -p -e "s/%DEVELOP%/${develop}/g" `find "${1}/${packagename}/Resources" -type f` - perl -i -p -e "s/%CREDITS%/${credits}/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}-r${revision}.pkg" --compression none . - popd >/dev/null - -# Here is the place for assign a Icon to the pkg -# command use to generate the file: -# ditto -c -k --sequesterRsrc --keepParent Icon.icns Icon.zip - ditto -xk "${pkgroot}/Icons/pkg.zip" "${pkgroot}/Icons/" - DeRez -only icns "${pkgroot}/Icons/Icons/pkg.icns" > tempicns.rsrc - Rez -append tempicns.rsrc -o "${1%/*}/${packagename// /}-${version}-r${revision}.pkg" - SetFile -a C "${1%/*}/${packagename// /}-${version}-r${revision}.pkg" - rm -f tempicns.rsrc - rm -rf "${pkgroot}/Icons/Icons" -# End - - md5=$( md5 "${1%/*}/${packagename// /}-${version}-r${revision}.pkg" | awk {'print $4'} ) - echo "MD5 (${packagename// /}-${version}-r${revision}.pkg) = ${md5}" > "${1%/*}/${packagename// /}-${version}-r${revision}.pkg.md5" - echo "" - - echo -e $COL_BLACK" --------------------------"$COL_RESET - echo -e $COL_BLACK" Building process complete!"$COL_RESET - echo -e $COL_BLACK" --------------------------"$COL_RESET - echo "" - echo -e $COL_BLACK" Build info." - echo -e $COL_BLACK" ===========" - echo -e $COL_BLUE" Package name: "$COL_BLACK"$packagename-${version}-r$revision.pkg"$COL_RESET - echo -e $COL_BLUE" MD5: "$COL_BLACK"$md5"$COL_RESET - echo -e $COL_BLUE" Version: "$COL_BLACK"$version"$COL_RESET - echo -e $COL_BLUE" Stage: "$COL_BLACK"$stage"$COL_RESET - echo -e $COL_BLUE" Date/Time: "$COL_BLACK"$builddate"$COL_RESET - echo "" - -} - -main "${1}" "${2}" "${3}" "${4}" "${5}" - Index: branches/iFabio/Chameleon/package/slimpkg =================================================================== --- branches/iFabio/Chameleon/package/slimpkg (revision 329) +++ branches/iFabio/Chameleon/package/slimpkg (revision 330) @@ -1,286 +0,0 @@ -#!/bin/bash - -# $1 Path to store built package - -packagesidentity="org.chameleon" - -packagename="Chameleon" - -pkgroot="${0%/*}" - -COL_BLACK="\x1b[30;01m" -COL_RED="\x1b[31;01m" -COL_GREEN="\x1b[32;01m" #COL_GREEN="\x1b[32;01m" -COL_YELLOW="\x1b[33;01m" -COL_MAGENTA="\x1b[35;01m" -COL_CYAN="\x1b[36;01m" -COL_WHITE="\x1b[37;01m" -COL_BLUE="\x1b[34;01m" -COL_RESET="\x1b[39;49;00m" - -#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" ) - -# ================= - -develop=" Crazor, Dense, fassl, fxtentacle, iNDi, JrCs, Kabyl, kaitek, mackerintel, mercurysquad, munky, Slice, meklort, mozodojo, rekursor, Turbo, cparm, valv & zef " - -credits=" andyvand, asereBLN, Azimut, bumby, cosmo1t, dfe, Galaxy, kalyway, Krazubu, MasterChief, netkas, sckevyn, smith@@, THeKiNG, blackosx, .: ErmaC :., scrax, DutchHockeyPro & Andy" - -# ================= - -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 "" -echo -e $COL_BLACK" ---------------------"$COL_RESET -echo -e $COL_BLACK" Building Slim Package"$COL_RESET -echo -e $COL_BLACK" ---------------------"$COL_RESET -echo "" - -outline[$((outlinecount++))]="${indent[$xmlindent]}" - -# build core package - echo "================= Core =================" - ((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/usr/standalone/i386/modules - cp -R ${1%/*}/i386/modules ${1}/Core/Root/usr/standalone/i386 - 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/boot0md ${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 - fixperms "${1}/Core/Root/" - cp -f ${1%/*}/i386/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 " [BUILD] i386 " - buildpackage "${1}/Core" "/" "0" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 - -# build Chameleon package - echo "================= Chameleon =================" - 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 " [BUILD] Standard " - buildpackage "${1}/Standard" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"upgrade_allowed()\" selected=\"exclusive(choices['EFI']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 - # End build standard package - - # build efi package - mkdir -p ${1}/EFI/Root - mkdir -p ${1}/EFI/Scripts/Tools - cp -f ${pkgroot}/Scripts/EFI/* ${1}/EFI/Scripts - # ditto --arch i386 `which SetFile` ${1}/EFI/Scripts/Tools/SetFile - echo " [BUILD] EFI " - buildpackage "${1}/EFI" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 - # End build efi package - - # build reset choice package - mkdir -p ${1}/noboot/Root - echo " [BUILD] Reset choice " - buildpackage "${1}/noboot" "/tmpcham" "" "start_visible=\"true\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['EFI'])\"" >/dev/null 2>&1 - # End build reset choice package - - # build Modules package - echo "================= Modules =================" - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - choices[$((choicescount++))]="\n\n" - ((xmlindent++)) - packagesidentity="org.chameleon.module" - modules=($( find "${pkgroot}/Scripts/Modules" -type d -depth 1 -not -name '.svn' )) - for (( i = 0 ; i < ${#modules[@]} ; i++ )) - do - mkdir -p "${1}/${modules[$i]##*/}/Root" - mkdir -p "${1}/${modules[$i]##*/}/Scripts" - ditto --noextattr --noqtn "${modules[$i]}/postinstall" "${1}/${modules[$i]##*/}/Scripts/postinstall" - echo " [BUILD] ${modules[$i]##*/} " - buildpackage "${1}/${modules[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 - rm -R -f "${1}/${i##*/}" - done - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" - # End build Modules packages - - ((xmlindent--)) - outline[$((outlinecount++))]="${indent[$xmlindent]}\t" -# End build Chameleon package - -# build post install package - echo "================= Post =================" - mkdir -p ${1}/Post/Root - mkdir -p ${1}/Post/Scripts - cp -f ${pkgroot}/Scripts/Post/* ${1}/Post/Scripts - echo " [BUILD] Post " - buildpackage "${1}/Post" "/" "" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 - 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 Developer and credits - perl -i -p -e "s/%DEVELOP%/${develop}/g" `find "${1}/${packagename}/Resources" -type f` - perl -i -p -e "s/%CREDITS%/${credits}/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.pkg" --compression none . - popd >/dev/null - -# Here is the place for assign a Icon to the pkg -ditto -xk "${pkgroot}/Icons/pkg.zip" "${pkgroot}/Icons/" -DeRez -only icns "${pkgroot}/Icons/Icons/pkg.icns" > tempicns.rsrc -Rez -append tempicns.rsrc -o "${1%/*}/$packagename.pkg" -SetFile -a C "${1%/*}/$packagename.pkg" -rm -f tempicns.rsrc -rm -rf "${pkgroot}/Icons/Icons" -# End - -} - -main "${1}" "${2}" "${3}" "${4}" "${5}" - Index: branches/iFabio/Chameleon/package/builddmg =================================================================== --- branches/iFabio/Chameleon/package/builddmg (revision 329) +++ branches/iFabio/Chameleon/package/builddmg (revision 330) @@ -1,214 +0,0 @@ -#!/bin/bash - -# $1 Path to store built dmg - -pkgroot="${0%/*}" -SYM_ROOT="${1%/*}" -DMG_ROOT=$SYM_ROOT - -OPENUP_TOOL=${1%/*}/i386/openUp - -SRC_FOLDER=${1%/*}/source -VOLUME_NAME="Chameleon" -TEMP_NAME="rw.dmg" -DMG_TEMP_NAME=${DMG_ROOT}/${TEMP_NAME} -TEMPLATE_DMG=${pkgroot}/dmg/ro.dmg -EULA_RSRC=${pkgroot}/dmg/SLAResources - - -# ============================= -# Setting color for text output -# ============================= - -COL_BLACK="\x1b[30;01m" -COL_RED="\x1b[31;01m" -COL_GREEN="\x1b[32;01m" -COL_YELLOW="\x1b[33;01m" -COL_MAGENTA="\x1b[35;01m" -COL_CYAN="\x1b[36;01m" -COL_WHITE="\x1b[37;01m" -COL_BLUE="\x1b[34;01m" -COL_RESET="\x1b[39;49;00m" - -# ====================== -# Setting Chameleon info -# ====================== - -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" ) - -# ========================= -# Start of building process -# ========================= - -echo "" -echo -e $COL_BLACK" ----------------------"$COL_RESET -echo -e $COL_BLACK" Building $VOLUME_NAME DMG"$COL_RESET -echo -e $COL_BLACK" ----------------------"$COL_RESET -echo "" - -# ================================= -# 1) Clean previus builded contents -# ================================= - - if [ -x ${SRC_FOLDER} ]; then - echo " Deleting previus existing source folder/content " - rm -R ${SRC_FOLDER} - rm -f ${DMG_TEMP_NAME} - fi - -# =========================== -# 2) Create the source folder -# =========================== - - echo " [mkdir] Creating source folder " - mkdir "${SRC_FOLDER}" - -# ================================== -# 3) Copy content into source folder -# ================================== - - ditto -xk "${pkgroot}/Icons/i386.zip" "${SRC_FOLDER}/" - ditto -xk "${pkgroot}/Icons/doc.zip" "${SRC_FOLDER}/" - ditto -xk "${pkgroot}/Icons/pan.zip" "${SRC_FOLDER}/" - ditto -xk "${pkgroot}/Icons/tm.zip" "${SRC_FOLDER}/" - - mv ${SYM_ROOT}/${VOLUME_NAME}.pkg ${SRC_FOLDER}/${VOLUME_NAME}.pkg - cp -r ${pkgroot}/doc/* ${SRC_FOLDER}/Documentation/ - cp -r ${pkgroot}/Configuration/PrefPanel/* ${SRC_FOLDER}/PrefPanel/ - cp -r ${SYM_ROOT}/i386/* ${SRC_FOLDER}/i386/ - cp -r ${SYM_ROOT%/*}/artwork/themes/* ${SRC_FOLDER}/Themes/ - rm -rf ${SRC_FOLDER}`find . -type d -name .svn` - -# ======================================= -# 4) Find the size of the folder contents -# ======================================= - - FOLDER_SIZE=`/usr/bin/du -s "${SRC_FOLDER}" | sed s/[^0-9].*//` - -# ===================================================== -# 4) Allow for partition table and other overhead (10%) -# ===================================================== - - IMAGE_SIZE=$(($FOLDER_SIZE * 110/100)) - -# ============================================ -# 5) Minimum size for an HFS+ partition is 4Mb -# ============================================ - - [ $IMAGE_SIZE -lt 19960 ] && IMAGE_SIZE=19960 # [ $IMAGE_SIZE -lt 8300 ] && IMAGE_SIZE=8300 - -# ================================================================= -# 6) Make sure NEXT_ROOT is not set (if we're building with an SDK) -# ================================================================= - - unset NEXT_ROOT - echo " Source folder size = $FOLDER_SIZE" - echo " DMG image size (+10%) = $IMAGE_SIZE" - echo " " - -# ======================================= -# 7) Convert the DMG template into RW-DMG -# ======================================= - - echo " [hdutil] Creating disk image " - test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}" - - hdiutil convert $TEMPLATE_DMG -format UDRW -o "${DMG_TEMP_NAME}" >/dev/null 2>&1 - hdiutil resize -limits "${DMG_TEMP_NAME}" >/dev/null 2>&1 - hdiutil resize -size 15m "${DMG_TEMP_NAME}" >/dev/null 2>&1 - echo " " - -# =========== -# 8) Mount it -# =========== - - echo " [hdutil] Mounting disk image " - MOUNT_DIR=/Volumes/$VOLUME_NAME - DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}') >/dev/null 2>&1 - - echo " Device name: $DEV_NAME" - echo " Mount directory: $MOUNT_DIR" - echo " " - -# ===================================== -# 9) Make sure it's not world writeable -# ===================================== - - mv ${SRC_FOLDER}/${VOLUME_NAME}.pkg ${MOUNT_DIR}/${VOLUME_NAME}.pkg - cp -R ${SRC_FOLDER}/Documentation ${MOUNT_DIR}/ - cp -R ${SRC_FOLDER}/PrefPanel ${MOUNT_DIR}/ - cp -R ${SRC_FOLDER}/i386 ${MOUNT_DIR}/ - cp -R ${SRC_FOLDER}/Themes ${MOUNT_DIR}/ - - 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}" >/dev/null 2>&1 -fi - echo " " - -# =========== -# 11) Unmount -# =========== - - echo " [hdutil] Unmounting disk image" - hdiutil detach "${DEV_NAME}" >/dev/null 2>&1 - echo " " - -# ================== -# 12) Compress image -# ================== - - test -f "${DMG_ROOT}/${VOLUME_NAME}.dmg" && rm -f "${DMG_ROOT}/${VOLUME_NAME}.dmg" - echo " [hdutil] Compressing disk image" - hdiutil convert ${DMG_TEMP_NAME} -format UDZO -imagekey zlib-level=9 -o ${DMG_ROOT}/${VOLUME_NAME} >/dev/null 2>&1 - rm -f "${DMG_TEMP_NAME}" - echo " " - -# ========================= -# 13) Adding EULA resources -# ========================= - -if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then - echo " [ResMerger] Adding EULA resources" - hdiutil unflatten ${DMG_ROOT}/${VOLUME_NAME}.dmg >/dev/null 2>&1 - ResMerger -a ${EULA_RSRC} -o ${DMG_ROOT}/${VOLUME_NAME}.dmg - hdiutil flatten ${DMG_ROOT}/${VOLUME_NAME}.dmg >/dev/null 2>&1 -fi - -# ======================= -# 14) Adding Icon to .dmg -# ======================= - - ditto -xk ${pkgroot}/Icons/dmg.zip "${pkgroot}/Icons" - DeRez -only icns ${pkgroot}/Icons/Icons/dmg.icns > tempicns.rsrc - Rez -append tempicns.rsrc -o ${DMG_ROOT}/${VOLUME_NAME}.dmg - SetFile -a C ${DMG_ROOT}/${VOLUME_NAME}.dmg - rm -f tempicns.rsrc - rm -rf "${pkgroot}/Icons/Icons" - rm -R ${SRC_FOLDER} - -# === -# END -# === - - echo " ====================" - echo " Finish $VOLUME_NAME.dmg" - echo " ====================" - echo "" -#----- -exit 0 Index: branches/iFabio/Chameleon/package/slimpkg.sh =================================================================== --- branches/iFabio/Chameleon/package/slimpkg.sh (revision 0) +++ branches/iFabio/Chameleon/package/slimpkg.sh (revision 330) @@ -0,0 +1,286 @@ +#!/bin/bash + +# $1 Path to store built package + +packagesidentity="org.chameleon" + +packagename="Chameleon" + +pkgroot="${0%/*}" + +COL_BLACK="\x1b[30;01m" +COL_RED="\x1b[31;01m" +COL_GREEN="\x1b[32;01m" #COL_GREEN="\x1b[32;01m" +COL_YELLOW="\x1b[33;01m" +COL_MAGENTA="\x1b[35;01m" +COL_CYAN="\x1b[36;01m" +COL_WHITE="\x1b[37;01m" +COL_BLUE="\x1b[34;01m" +COL_RESET="\x1b[39;49;00m" + +#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" ) + +# ================= + +develop=" Crazor, Dense, fassl, fxtentacle, iNDi, JrCs, Kabyl, kaitek, mackerintel, mercurysquad, munky, Slice, meklort, mozodojo, rekursor, Turbo, cparm, valv & zef " + +credits=" andyvand, asereBLN, Azimut, bumby, cosmo1t, dfe, Galaxy, kalyway, Krazubu, MasterChief, netkas, sckevyn, smith@@, THeKiNG, blackosx, .: ErmaC :., scrax, DutchHockeyPro & Andy" + +# ================= + +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 "" +echo -e $COL_BLACK" ---------------------"$COL_RESET +echo -e $COL_BLACK" Building Slim Package"$COL_RESET +echo -e $COL_BLACK" ---------------------"$COL_RESET +echo "" + +outline[$((outlinecount++))]="${indent[$xmlindent]}" + +# build core package + echo "================= Core =================" + ((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/usr/standalone/i386/modules + cp -R ${1%/*}/i386/modules ${1}/Core/Root/usr/standalone/i386 + 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/boot0md ${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 + fixperms "${1}/Core/Root/" + cp -f ${1%/*}/i386/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 " [BUILD] i386 " + buildpackage "${1}/Core" "/" "0" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 + +# build Chameleon package + echo "================= Chameleon =================" + 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 " [BUILD] Standard " + buildpackage "${1}/Standard" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"upgrade_allowed()\" selected=\"exclusive(choices['EFI']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 + # End build standard package + + # build efi package + mkdir -p ${1}/EFI/Root + mkdir -p ${1}/EFI/Scripts/Tools + cp -f ${pkgroot}/Scripts/EFI/* ${1}/EFI/Scripts + # ditto --arch i386 `which SetFile` ${1}/EFI/Scripts/Tools/SetFile + echo " [BUILD] EFI " + buildpackage "${1}/EFI" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 + # End build efi package + + # build reset choice package + mkdir -p ${1}/noboot/Root + echo " [BUILD] Reset choice " + buildpackage "${1}/noboot" "/tmpcham" "" "start_visible=\"true\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['EFI'])\"" >/dev/null 2>&1 + # End build reset choice package + + # build Modules package + echo "================= Modules =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + packagesidentity="org.chameleon.module" + modules=($( find "${pkgroot}/Scripts/Modules" -type d -depth 1 -not -name '.svn' )) + for (( i = 0 ; i < ${#modules[@]} ; i++ )) + do + mkdir -p "${1}/${modules[$i]##*/}/Root" + mkdir -p "${1}/${modules[$i]##*/}/Scripts" + ditto --noextattr --noqtn "${modules[$i]}/postinstall" "${1}/${modules[$i]##*/}/Scripts/postinstall" + echo " [BUILD] ${modules[$i]##*/} " + buildpackage "${1}/${modules[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 + rm -R -f "${1}/${i##*/}" + done + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + # End build Modules packages + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" +# End build Chameleon package + +# build post install package + echo "================= Post =================" + mkdir -p ${1}/Post/Root + mkdir -p ${1}/Post/Scripts + cp -f ${pkgroot}/Scripts/Post/* ${1}/Post/Scripts + echo " [BUILD] Post " + buildpackage "${1}/Post" "/" "" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 + 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 Developer and credits + perl -i -p -e "s/%DEVELOP%/${develop}/g" `find "${1}/${packagename}/Resources" -type f` + perl -i -p -e "s/%CREDITS%/${credits}/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.pkg" --compression none . + popd >/dev/null + +# Here is the place for assign a Icon to the pkg +ditto -xk "${pkgroot}/Icons/pkg.zip" "${pkgroot}/Icons/" +DeRez -only icns "${pkgroot}/Icons/Icons/pkg.icns" > tempicns.rsrc +Rez -append tempicns.rsrc -o "${1%/*}/$packagename.pkg" +SetFile -a C "${1%/*}/$packagename.pkg" +rm -f tempicns.rsrc +rm -rf "${pkgroot}/Icons/Icons" +# End + +} + +main "${1}" "${2}" "${3}" "${4}" "${5}" + Property changes on: branches/iFabio/Chameleon/package/slimpkg.sh ___________________________________________________________________ Added: svn:executable + * Index: branches/iFabio/Chameleon/package/builddmg.sh =================================================================== --- branches/iFabio/Chameleon/package/builddmg.sh (revision 0) +++ branches/iFabio/Chameleon/package/builddmg.sh (revision 330) @@ -0,0 +1,214 @@ +#!/bin/bash + +# $1 Path to store built dmg + +pkgroot="${0%/*}" +SYM_ROOT="${1%/*}" +DMG_ROOT=$SYM_ROOT + +OPENUP_TOOL=${1%/*}/i386/openUp + +SRC_FOLDER=${1%/*}/source +VOLUME_NAME="Chameleon" +TEMP_NAME="rw.dmg" +DMG_TEMP_NAME=${DMG_ROOT}/${TEMP_NAME} +TEMPLATE_DMG=${pkgroot}/dmg/ro.dmg +EULA_RSRC=${pkgroot}/dmg/SLAResources + + +# ============================= +# Setting color for text output +# ============================= + +COL_BLACK="\x1b[30;01m" +COL_RED="\x1b[31;01m" +COL_GREEN="\x1b[32;01m" +COL_YELLOW="\x1b[33;01m" +COL_MAGENTA="\x1b[35;01m" +COL_CYAN="\x1b[36;01m" +COL_WHITE="\x1b[37;01m" +COL_BLUE="\x1b[34;01m" +COL_RESET="\x1b[39;49;00m" + +# ====================== +# Setting Chameleon info +# ====================== + +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" ) + +# ========================= +# Start of building process +# ========================= + +echo "" +echo -e $COL_BLACK" ----------------------"$COL_RESET +echo -e $COL_BLACK" Building $VOLUME_NAME DMG"$COL_RESET +echo -e $COL_BLACK" ----------------------"$COL_RESET +echo "" + +# ================================= +# 1) Clean previus builded contents +# ================================= + + if [ -x ${SRC_FOLDER} ]; then + echo " Deleting previus existing source folder/content " + rm -R ${SRC_FOLDER} + rm -f ${DMG_TEMP_NAME} + fi + +# =========================== +# 2) Create the source folder +# =========================== + + echo " [mkdir] Creating source folder " + mkdir "${SRC_FOLDER}" + +# ================================== +# 3) Copy content into source folder +# ================================== + + ditto -xk "${pkgroot}/Icons/i386.zip" "${SRC_FOLDER}/" + ditto -xk "${pkgroot}/Icons/doc.zip" "${SRC_FOLDER}/" + ditto -xk "${pkgroot}/Icons/pan.zip" "${SRC_FOLDER}/" + ditto -xk "${pkgroot}/Icons/tm.zip" "${SRC_FOLDER}/" + + mv ${SYM_ROOT}/${VOLUME_NAME}.pkg ${SRC_FOLDER}/${VOLUME_NAME}.pkg + cp -r ${pkgroot}/doc/* ${SRC_FOLDER}/Documentation/ + cp -r ${pkgroot}/Configuration/PrefPanel/* ${SRC_FOLDER}/PrefPanel/ + cp -r ${SYM_ROOT}/i386/* ${SRC_FOLDER}/i386/ + cp -r ${SYM_ROOT%/*}/artwork/themes/* ${SRC_FOLDER}/Themes/ + rm -rf ${SRC_FOLDER}`find . -type d -name .svn` + +# ======================================= +# 4) Find the size of the folder contents +# ======================================= + + FOLDER_SIZE=`/usr/bin/du -s "${SRC_FOLDER}" | sed s/[^0-9].*//` + +# ===================================================== +# 4) Allow for partition table and other overhead (10%) +# ===================================================== + + IMAGE_SIZE=$(($FOLDER_SIZE * 110/100)) + +# ============================================ +# 5) Minimum size for an HFS+ partition is 4Mb +# ============================================ + + [ $IMAGE_SIZE -lt 19960 ] && IMAGE_SIZE=19960 # [ $IMAGE_SIZE -lt 8300 ] && IMAGE_SIZE=8300 + +# ================================================================= +# 6) Make sure NEXT_ROOT is not set (if we're building with an SDK) +# ================================================================= + + unset NEXT_ROOT + echo " Source folder size = $FOLDER_SIZE" + echo " DMG image size (+10%) = $IMAGE_SIZE" + echo " " + +# ======================================= +# 7) Convert the DMG template into RW-DMG +# ======================================= + + echo " [hdutil] Creating disk image " + test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}" + + hdiutil convert $TEMPLATE_DMG -format UDRW -o "${DMG_TEMP_NAME}" >/dev/null 2>&1 + hdiutil resize -limits "${DMG_TEMP_NAME}" >/dev/null 2>&1 + hdiutil resize -size 15m "${DMG_TEMP_NAME}" >/dev/null 2>&1 + echo " " + +# =========== +# 8) Mount it +# =========== + + echo " [hdutil] Mounting disk image " + MOUNT_DIR=/Volumes/$VOLUME_NAME + DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}') >/dev/null 2>&1 + + echo " Device name: $DEV_NAME" + echo " Mount directory: $MOUNT_DIR" + echo " " + +# ===================================== +# 9) Make sure it's not world writeable +# ===================================== + + mv ${SRC_FOLDER}/${VOLUME_NAME}.pkg ${MOUNT_DIR}/${VOLUME_NAME}.pkg + cp -R ${SRC_FOLDER}/Documentation ${MOUNT_DIR}/ + cp -R ${SRC_FOLDER}/PrefPanel ${MOUNT_DIR}/ + cp -R ${SRC_FOLDER}/i386 ${MOUNT_DIR}/ + cp -R ${SRC_FOLDER}/Themes ${MOUNT_DIR}/ + + 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}" >/dev/null 2>&1 +fi + echo " " + +# =========== +# 11) Unmount +# =========== + + echo " [hdutil] Unmounting disk image" + hdiutil detach "${DEV_NAME}" >/dev/null 2>&1 + echo " " + +# ================== +# 12) Compress image +# ================== + + test -f "${DMG_ROOT}/${VOLUME_NAME}.dmg" && rm -f "${DMG_ROOT}/${VOLUME_NAME}.dmg" + echo " [hdutil] Compressing disk image" + hdiutil convert ${DMG_TEMP_NAME} -format UDZO -imagekey zlib-level=9 -o ${DMG_ROOT}/${VOLUME_NAME} >/dev/null 2>&1 + rm -f "${DMG_TEMP_NAME}" + echo " " + +# ========================= +# 13) Adding EULA resources +# ========================= + +if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then + echo " [ResMerger] Adding EULA resources" + hdiutil unflatten ${DMG_ROOT}/${VOLUME_NAME}.dmg >/dev/null 2>&1 + ResMerger -a ${EULA_RSRC} -o ${DMG_ROOT}/${VOLUME_NAME}.dmg + hdiutil flatten ${DMG_ROOT}/${VOLUME_NAME}.dmg >/dev/null 2>&1 +fi + +# ======================= +# 14) Adding Icon to .dmg +# ======================= + + ditto -xk ${pkgroot}/Icons/dmg.zip "${pkgroot}/Icons" + DeRez -only icns ${pkgroot}/Icons/Icons/dmg.icns > tempicns.rsrc + Rez -append tempicns.rsrc -o ${DMG_ROOT}/${VOLUME_NAME}.dmg + SetFile -a C ${DMG_ROOT}/${VOLUME_NAME}.dmg + rm -f tempicns.rsrc + rm -rf "${pkgroot}/Icons/Icons" + rm -R ${SRC_FOLDER} + +# === +# END +# === + + echo " ====================" + echo " Finish $VOLUME_NAME.dmg" + echo " ====================" + echo "" +#----- +exit 0 Property changes on: branches/iFabio/Chameleon/package/builddmg.sh ___________________________________________________________________ Added: svn:executable + * Index: branches/iFabio/Chameleon/package/buildpkg.sh =================================================================== --- branches/iFabio/Chameleon/package/buildpkg.sh (revision 0) +++ branches/iFabio/Chameleon/package/buildpkg.sh (revision 330) @@ -0,0 +1,478 @@ +#!/bin/bash + +# $1 Path to store built package + +packagesidentity="org.chameleon" + +packagename="Chameleon" + +pkgroot="${0%/*}" + +COL_BLACK="\x1b[30;01m" +COL_RED="\x1b[31;01m" +COL_GREEN="\x1b[32;01m" +COL_YELLOW="\x1b[33;01m" +COL_MAGENTA="\x1b[35;01m" +COL_CYAN="\x1b[36;01m" +COL_WHITE="\x1b[37;01m" +COL_BLUE="\x1b[34;01m" +COL_RESET="\x1b[39;49;00m" + +#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" ) + +# ================= + +develop=" Crazor, Dense, fassl, fxtentacle, iNDi, JrCs, Kabyl, kaitek, mackerintel, mercurysquad, munky, Slice, meklort, mozodojo, rekursor, Turbo, cparm, valv & zef " + +credits=" andyvand, asereBLN, Azimut, bumby, cosmo1t, dfe, Galaxy, kalyway, Krazubu, MasterChief, netkas, sckevyn, smith@@, THeKiNG, blackosx, .: ErmaC :., scrax, DutchHockeyPro & Andy" + +# ================= + +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 "" +echo -e $COL_BLACK" ----------------------------------"$COL_RESET +echo -e $COL_BLACK" Building $packagename Install Package"$COL_RESET +echo -e $COL_BLACK" ----------------------------------"$COL_RESET +echo "" + +outline[$((outlinecount++))]="${indent[$xmlindent]}" + +# build core package + echo "================= Core =================" + ((xmlindent++)) + packagesidentity="org.chameleon.core" + 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/usr/standalone/i386/modules + cp -R ${1%/*}/i386/modules ${1}/Core/Root/usr/standalone/i386 + 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/boot0md ${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 -f ${1%/*}/i386/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 " [BUILD] i386 " + buildpackage "${1}/Core" "/" "0" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 + +# build Chameleon package + echo "================= Chameleon =================" + 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 " [BUILD] Standard " + buildpackage "${1}/Standard" "/" "${coresize}" "start_enabled=\"true\" start_selected=\"upgrade_allowed()\" selected=\"exclusive(choices['EFI']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 + # End build standard package + + # build efi package + mkdir -p ${1}/EFI/Root + mkdir -p ${1}/EFI/Scripts/Tools + cp -f ${pkgroot}/Scripts/EFI/* ${1}/EFI/Scripts + # ditto --arch i386 `which SetFile` ${1}/EFI/Scripts/Tools/SetFile + echo " [BUILD] EFI " + buildpackage "${1}/EFI" "/" "${coresize}" "start_visible=\"systemHasGPT()\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['noboot'])\"" >/dev/null 2>&1 + # End build efi package + + # build reset choice package + mkdir -p ${1}/noboot/Root + echo " [BUILD] Reset choice " + buildpackage "${1}/noboot" "/tmpcham" "" "start_visible=\"true\" start_selected=\"false\" selected=\"exclusive(choices['Standard']) && exclusive(choices['EFI'])\"" >/dev/null 2>&1 + # End build reset choice package + + # build Modules package + echo "================= Modules =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + packagesidentity="org.chameleon.module" + modules=($( find "${pkgroot}/Scripts/Modules" -type d -depth 1 -not -name '.svn' )) + for (( i = 0 ; i < ${#modules[@]} ; i++ )) + do + mkdir -p "${1}/${modules[$i]##*/}/Root" + mkdir -p "${1}/${modules[$i]##*/}/Scripts" + ditto --noextattr --noqtn "${modules[$i]}/postinstall" "${1}/${modules[$i]##*/}/Scripts/postinstall" + echo " [BUILD] ${modules[$i]##*/} " + buildpackage "${1}/${modules[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 + rm -R -f "${1}/${i##*/}" + done + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + # End build Modules packages + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" +# End build Chameleon package + +# build Extras package + echo "================= Extras =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + packagesidentity="org.chameleon.extras.com" + + # build utility package + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + packagesidentity="org.chameleon.utility.com" + + # build package for Chameleon PrefPanel + mkdir -p "${1}/PrefPanel/Root" + ditto --noextattr --noqtn "${pkgroot}/Configuration/PrefPanel/Chameleon.prefPane" "${1}/PrefPanel/Root" + echo " [BUILD] Chameleon Preference Panel " + buildpackage "${1}/PrefPanel" "/Library/PreferencePanes/Chameleon.prefPane" "" "start_selected=\"false\"" >/dev/null 2>&1 + # 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 " [BUILD] SMBIOSDefault " + buildpackage "${1}/SMBIOSDefault" "/Extra/Example" "" "start_selected=\"false\"" >/dev/null 2>&1 + # 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 " [BUILD] EFIMounter " + buildpackage "${1}/EFIMounter" "/Applications/EFI Mounter.app" "" "start_selected=\"false\"" >/dev/null 2>&1 + # 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 " [BUILD] Documentation " + buildpackage "${1}/Documentation" "/Library/Documentation/Chameleon2RC5" "" "start_selected=\"false\"" >/dev/null 2>&1 + # End build package for Documentation + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + # End utility package + + # build options packages + echo "================= Options =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + + # build base options packages + packagesidentity="org.chameleon.options.com" + + 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 " [BUILD] ${options[$i]##*/} " + buildpackage "${1}/${options[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 + done + # End build base options packages + + # build resolution packages + echo "================= Res. Options =================" + 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 " [BUILD] ${resolutions[$i]##*/} " + buildpackage "${1}/${resolutions[$i]##*/}" "/tmpcham" "" "start_selected=\"false\"" >/dev/null 2>&1 + done + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + # End build resolution packages + + # build Advanced packages + echo "================= Adv. Options =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + + packagesidentity="org.chameleon.advanced.options.pkg" + 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 " [BUILD] ${optionsadv[$i]##*/} " + buildpackage "${1}/${optionsadv[$i]##*/}" "/" "" "start_selected=\"false\"" >/dev/null 2>&1 + done + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + # End build Advanced packages + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + + # End build options packages + + # build theme packages + echo "================= Themes =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + packagesidentity="org.chameleon.theme.pkg" + 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/" + rsync -r --exclude=.svn "${themes[$i]}" "${1}/${themes[$i]##*/}/Root/${theme}" + # #### Comment out thx meklort + # 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 " [BUILD] ${themes[$i]##*/} " + buildpackage "${1}/${theme}" "/Extra/Themes" "" "start_selected=\"false\"" >/dev/null 2>&1 + rm -R -f "${1}/${i##*/}" + done + + ((xmlindent--)) + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + # End build theme packages + + # build kext packages + echo "================= Kexts =================" + outline[$((outlinecount++))]="${indent[$xmlindent]}\t" + choices[$((choicescount++))]="\n\n" + ((xmlindent++)) + packagesidentity="org.chameleon.kext.pkg" + 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 " [BUILD] ${filename%.kext} " + buildpackage "${1}/${filename%.kext}" "/Extra/Extensions" "" "start_selected=\"false\"" >/dev/null 2>&1 + 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 + echo "================= Post =================" + mkdir -p ${1}/Post/Root + mkdir -p ${1}/Post/Scripts + cp -f ${pkgroot}/Scripts/Post/* ${1}/Post/Scripts + echo " [BUILD] Post " + buildpackage "${1}/Post" "/" "" "start_visible=\"false\" start_selected=\"true\"" >/dev/null 2>&1 + 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` +# + +# Adding Developer and credits + perl -i -p -e "s/%DEVELOP%/${develop}/g" `find "${1}/${packagename}/Resources" -type f` + perl -i -p -e "s/%CREDITS%/${credits}/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}-r${revision}.pkg" --compression none . + popd >/dev/null + +# Here is the place for assign a Icon to the pkg +# command use to generate the file: +# ditto -c -k --sequesterRsrc --keepParent Icon.icns Icon.zip + ditto -xk "${pkgroot}/Icons/pkg.zip" "${pkgroot}/Icons/" + DeRez -only icns "${pkgroot}/Icons/Icons/pkg.icns" > tempicns.rsrc + Rez -append tempicns.rsrc -o "${1%/*}/${packagename// /}-${version}-r${revision}.pkg" + SetFile -a C "${1%/*}/${packagename// /}-${version}-r${revision}.pkg" + rm -f tempicns.rsrc + rm -rf "${pkgroot}/Icons/Icons" +# End + + md5=$( md5 "${1%/*}/${packagename// /}-${version}-r${revision}.pkg" | awk {'print $4'} ) + echo "MD5 (${packagename// /}-${version}-r${revision}.pkg) = ${md5}" > "${1%/*}/${packagename// /}-${version}-r${revision}.pkg.md5" + echo "" + + echo -e $COL_BLACK" --------------------------"$COL_RESET + echo -e $COL_BLACK" Building process complete!"$COL_RESET + echo -e $COL_BLACK" --------------------------"$COL_RESET + echo "" + echo -e $COL_BLACK" Build info." + echo -e $COL_BLACK" ===========" + echo -e $COL_BLUE" Package name: "$COL_BLACK"$packagename-${version}-r$revision.pkg"$COL_RESET + echo -e $COL_BLUE" MD5: "$COL_BLACK"$md5"$COL_RESET + echo -e $COL_BLUE" Version: "$COL_BLACK"$version"$COL_RESET + echo -e $COL_BLUE" Stage: "$COL_BLACK"$stage"$COL_RESET + echo -e $COL_BLUE" Date/Time: "$COL_BLACK"$builddate"$COL_RESET + echo "" + +} + +main "${1}" "${2}" "${3}" "${4}" "${5}" + Property changes on: branches/iFabio/Chameleon/package/buildpkg.sh ___________________________________________________________________ Added: svn:executable + Index: branches/iFabio/Chameleon/CREDITS =================================================================== --- branches/iFabio/Chameleon/CREDITS (revision 329) +++ branches/iFabio/Chameleon/CREDITS (revision 330) @@ -3,36 +3,9 @@ Developers: ---------- - Crazor - Dense - fassl - iNDi - JrCs - Kabyl - kaitek - mackerintel - mercurysquad - munky - meklort - mozodojo - rekursor - Turbo - valv - zef - cparm +zef, Turbo, dfe, netkas, mackerintel, fassl, Kabyl, kaitek, iNDi, asereBLN, mozodojo, meklort, AzimutZ, Slice Thanks to: --------- - asereBLN - Azimutz - bumby - cosmo1t - dfe - Galaxy - kalyway - Krazubu - MasterChief - netkas - sckevyn - smith@@ - THeKiNG +JrCs, mercurysquad, munky, rekursor, cosmolt, kalyway, Krazubu, THeKiNG, XyZ, blackosx, DHP, cparm + Index: branches/iFabio/Chameleon/Makefile =================================================================== --- branches/iFabio/Chameleon/Makefile (revision 329) +++ branches/iFabio/Chameleon/Makefile (revision 330) @@ -19,6 +19,7 @@ PRODUCT = Chameleon-$(VERSION)-r$(REVISION) CDLABEL = ${PRODUCT} ISOIMAGE = ${SYMROOT}/${CDLABEL}.iso +DISTFILE = ${SYMROOT}/${PRODUCT} EXCLUDE = --exclude=.svn --exclude=.DS_Store --exclude=sym --exclude=obj \ --exclude=package --exclude=archive --exclude=User_Guide_src --exclude=*.sh @@ -89,6 +90,35 @@ fi; \ done +dist image: all + @echo "================= Distrib =================" + @echo "\t[RM] ${IMGROOT}" + @rm -rf ${IMGROOT} + @echo "\t[MKDIR] ${IMGROOT}/usr/standalone/i386" + @mkdir -p ${IMGROOT}/usr/standalone/i386 + @echo "\t[MKDIR] ${IMGROOT}/Extra/modules" + @mkdir -p ${IMGROOT}/Extra/modules + @if [ -e "$(IMGSKELROOT)" ]; then \ + @echo "\t[CP] ${IMGROOTSKEL} ${IMGROOT}" \ + @cp -R -f "${IMGSKELROOT}"/* "${IMGROOT}"; \ + fi; + @cp -f ${SYMROOT}/i386/cdboot ${CDBOOT} + @cp -f ${SYMROOT}/i386/modules/* ${IMGROOT}/Extra/modules + @cp -f ${SYMROOT}/i386/boot ${IMGROOT}/usr/standalone/i386 + @cp -f ${SYMROOT}/i386/boot0 ${IMGROOT}/usr/standalone/i386 + @cp -f ${SYMROOT}/i386/boot0md ${IMGROOT}/usr/standalone/i386 + @cp -f ${SYMROOT}/i386/boot1h ${IMGROOT}/usr/standalone/i386 + @cp -f ${SYMROOT}/i386/boot1f32 ${IMGROOT}/usr/standalone/i386 + @echo "\t[HDIUTIL] ${ISOIMAGE}" + @hdiutil makehybrid -iso -joliet -hfs -hfs-volume-name \ + ${CDLABEL} -eltorito-boot ${CDBOOT} -no-emul-boot -ov -o \ + "${ISOIMAGE}" ${IMGROOT} -quiet + @echo "\t[GZ] ${DISTFILE}.tar.gz" + @rm -f ${DISTFILE}.tar.gz + @tar -cf ${DISTFILE}.tar ${IMGROOT} + @gzip --best ${DISTFILE}.tar + + $(SYMROOT)/i386/vers.h: version @echo "#define I386BOOT_VERSION \"5.0.132\"" > $@ @echo "#define I386BOOT_BUILDDATE \"`date \"+%Y-%m-%d %H:%M:%S\"`\"" >> $@ @@ -97,17 +127,18 @@ pkg: all @if [ -e "$(SYMROOT)" ]; then \ - "${SRCROOT}/package/buildpkg" "${SYMROOT}/package"; \ + ${SRCROOT}/package/buildpkg.sh ${SYMROOT}/package; \ fi; dmg: all @if [ -e "$(SYMROOT)" ]; then \ - "${SRCROOT}/package/slimpkg" "${SYMROOT}/package"; \ - "${SRCROOT}/package/builddmg" "${SYMROOT}/package"; \ + ${SRCROOT}/package/slimpkg.sh ${SYMROOT}/package; \ + ${SRCROOT}/package/builddmg.sh ${SYMROOT}/package; \ fi; .PHONY: $(SYMROOT)/i386/vers.h .PHONY: config .PHONY: clean +.PHONY: image .PHONY: pkg .PHONY: dmg