#!/bin/sh set -o errexit # The first argument is the shell script that initializes the variables: # sourceDir # outputDir # tmpDir # addBuildCompatibilityLibDir # # addattr # copyattr # resattr # rc # rmAttrs # unzip # generate_attribute_stores # if [ $# -gt 0 ]; then . $1 shift fi # this adds the build library dir to LD_LIBRARY_PATH eval "$addBuildCompatibilityLibDir" outputDir=$tmpDir/cdsource sPrefix= tPrefix="$outputDir/" cd=cd scd=: cp="$copyattr -d" copyAttrs="$copyattr" ln=ln mkdir=mkdir rm=rm extractFile() { # extractFile archiveFile=$1 targetExtractDir=$2 extractedSubDir=$3 echo "Extracting $archiveFile ..." extractDir=$tmpDir/extract $rmAttrs -rf "$extractDir" mkdir -p "$extractDir" case "$archiveFile" in *.zip) $unzip -q -d "$extractDir" "$archiveFile" ;; *.tgz|*.tar.gz) tar -C "$extractDir" -xf "$archiveFile" ;; *) echo "Unhandled archive extension in build_haiku_image extractFile()" exit 1 ;; esac if [ -f $extractDir/.OptionalPackageDescription ]; then cat $extractDir/.OptionalPackageDescription >> $copyrightsFile echo >> $copyrightsFile rm $extractDir/.OptionalPackageDescription fi $cp -r "$extractDir/$extractedSubDir/." "${tPrefix}$targetExtractDir" $rmAttrs -rf "$extractDir" } mkdir -p $tmpDir copyrightsFile=$tmpDir/copyrights $rmAttrs -f $copyrightsFile if [ "$optionalPackageDescriptions" ]; then cp "$optionalPackageDescriptions" $copyrightsFile fi # setup output dir $rmAttrs -rf "$outputDir" mkdir -p "$outputDir" echo "Populating CD ..." while [ $# -gt 0 ]; do . $1 shift done # install MIME database # TODO: It should be possible to do that in the build system too. mimeDBSource=$sourceDir/src/data/beos_mime mimeDBDest=${tPrefix}home/config/settings/beos_mime $rm -rf $mimeDBDest $mkdir -p $mimeDBDest mimeTmpDir=$tmpDir/mime mimeDBTmpDir=$tmpDir/mime/db mimeTmpIndex=0 mimeTmpFile=$mimeTmpDir/mimedb$$.rsrc # create tmp dir for the MIME conversion stuff mkdir -p $mimeDBTmpDir echo "Installing MIME database ..." for inSuperFile in $mimeDBSource/*.super; do superType=$(basename $inSuperFile .super) tmpSuperDir=$mimeDBTmpDir/$superType # compile rdef to rsrc file and the rsrc file to attributes $rc -o $mimeTmpFile $inSuperFile mkdir -p $tmpSuperDir $resattr -O -o $tmpSuperDir $mimeTmpFile $rmAttrs $mimeTmpFile # iterate through the sub types for inSubFile in $mimeDBSource/$superType/*; do # check, if the type exists if test -f $inSubFile && grep META:TYPE $inSubFile > /dev/null 2>&1 ; then subType=$(basename $inSubFile) tmpSubFile=$mimeDBTmpDir/$superType/$subType # compile rdef to rsrc file and the rsrc file to attributes $rc -o $mimeTmpFile $inSubFile $resattr -O -o $tmpSubFile $mimeTmpFile $rmAttrs $mimeTmpFile fi done done $cp -r $mimeDBTmpDir/. $mimeDBDest # cleanup tmp dir $rmAttrs -rf $mimeTmpDir # add the concatenated copyrights as an attribute to AboutSystem if [ -f $copyrightsFile ]; then copyrightAttrs=$tmpDir/copyrightAttrs $rmAttrs -f $copyrightAttrs touch $copyrightAttrs $addattr -f $copyrightsFile COPYRIGHTS $copyrightAttrs $copyAttrs $copyrightAttrs ${tPrefix}system/apps/AboutSystem fi # generate the attribute stores echo "Generating attribute stores ..." $generate_attribute_stores "$tPrefix" echo "Copying boot image ..." $cp "$cdBootFloppy" "$outputDir" # build the iso image echo "Building CD image ..." mkisofs -uid 0 -gid 0 -b `basename $cdBootFloppy` -R -V "$cdLabel" -o "$cdImagePath" "$tPrefix" # cleanup output dir $rmAttrs -rf "$outputDir"