From 7cfc30797cf0cfdc503d43d90cba60954107517d Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Mon, 23 May 2011 13:22:50 +0200 Subject: [PATCH] retrieve the whole modules in one shot and cherry pick later on --- macos/build-dmg.sh | 89 +++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/macos/build-dmg.sh b/macos/build-dmg.sh index 07cf801..4991570 100755 --- a/macos/build-dmg.sh +++ b/macos/build-dmg.sh @@ -49,35 +49,18 @@ COMMAND=$(basename $0) function git_url () { echo $1 | cut -d @ -f 1 ; } function git_tag () { echo $1 | cut -d @ -f 2 ; } -# go in $dest and retrieve $path part of codebase based on gitpath, e.g. -# git_retrieve \ -# git://git.onelab.eu/sface.git@sface-0.1-5 -# sface -# /Volumes/sface-skel-sn/sface.app/Contents/Resources/ -# or, with the -f (-file) option: -# git_retrieve -f \ -# git://git.onelab.eu/sface.git@sface-0.1-5 -# macos/appIcon.icns -# /Volumes/sface-skel-sn/sface.app/appIcon.icns +# go in $dest and retrieve module into provided path +# git_retrieve git://git.onelab.eu/sface.git@sface-0.1-5 /tmp/sfa-module function git_retrieve () { - filemode="" - case "$1" in -f|--file) filemode=true; shift;; esac - gitpath=$1; shift - path=$1; shift - dest=$1; shift + gitpath="$1"; shift + dest="$1"; shift giturl=$(git_url $gitpath) gittag=$(git_tag $gitpath) - if [ -z "$filemode" ] ; then - [ -d "$dest" ] || mkdir -p "$dest" - pushd "$dest" >& /dev/null - git archive --remote=${giturl} ${gittag} | tar -xf - ${path} - popd >& /dev/null - else - destdir=$(dirname "$dest") - [ -d "$destdir" ] || mkdir -p "$destdir" - git archive --remote=${giturl} ${gittag} | tar -xOf - ${path} > "${dest}" - fi + [ -d "$dest" ] || mkdir -p "$dest" + pushd "$dest" >& /dev/null + git archive --remote=${giturl} ${gittag} | tar -xf - + popd >& /dev/null } function die () { @@ -106,8 +89,16 @@ function package () { img_mnt="/Volumes/${img_mnt_name}" # check we're clear - [ -f $img_dmg ] && die "output dmg $img_dmg already exists" - [ -f $img_raw_dmg ] && die "please clean up tmp file $img_raw_dmg" + if [ -f $img_dmg ] ; then + [ -z "$FORCE_REWRITE" ] && die "output dmg $img_dmg already exists" + echo "Trashing (force_rewrite) former output $img_dmg" + rm -f $img_dmg + fi + if [ -f $img_raw_dmg ] ; then + [ -z "$FORCE_REWRITE" ] && die "please clean up tmp file $img_raw_dmg" + echo "Cleaning (force_rewrite) former tmp file $img_raw_dmg" + rm -f $img_raw_dmg + fi if [ -n "$FORCE_DOWNLOAD" ] ; then [ -d "$skel_mnt" ] && hdiutil unmount "$skel_mnt" @@ -157,32 +148,38 @@ Also make sure to trash the current one before retrying" resource_path=$app/Contents/Resources bin_path=$app/Contents/MacOS - # retrieve sfa/sfa and sface/sface in the image - rm -rf "$img_mnt"/$resource_path/{sfa,sface} - git_retrieve $sfa_GITPATH sfa "$img_mnt"/$resource_path/ - # retrieve version number from specfile - sfa_tag=$(rpm -q --specfile "$img_mnt"/$resource_path/sfa/sfa.spec --qf '%{version}-%{taglevel}') - make -C "$img_mnt"/$resource_path/sfa VERSIONTAG="${sfa_tag}" SCMURL="${sfa_GITPATH}" version + # retrieve sfa and sface full repos in a temp dir + temp=$(mktemp -d -t sface-dmg) - git_retrieve $sface_GITPATH sface "$img_mnt"/$resource_path/ - # retrieve version number from specfile - sface_tag=$(rpm -q --specfile "$img_mnt"/$resource_path/sface/sface.spec --qf '%{version}-%{taglevel}') - make -C "$img_mnt"/$resource_path/sface VERSIONTAG="${sface_tag}" SCMURL="${sface_GITPATH}" version + git_retrieve $sfa_GITPATH $temp/sfa + git_retrieve $sface_GITPATH $temp/sface + + # retrieve version number, and run make version + sfa_spec=$temp/sfa/sfa.spec + sfa_tag=$(rpm -q --specfile $sfa_spec --qf '%{version}-%{taglevel}') + make -C $temp/sfa VERSIONTAG="${sfa_tag}" SCMURL="${sfa_GITPATH}" version + sface_spec=$temp/sface/sface.spec + sface_tag=$(rpm -q --specfile $sface_spec --qf '%{version}-%{taglevel}') + make -C $temp/sface VERSIONTAG="${sface_tag}" SCMURL="${sface_GITPATH}" version + + # copy sfa/ and sface/ subdirs in image + rm -rf "$img_mnt"/$resource_path/{sfa,sface} + tar -C $temp/sfa -cf - sfa | tar -C "$img_mnt"/$resource_path/ -xf - + tar -C $temp/sface -cf - sface | tar -C "$img_mnt"/$resource_path/ -xf - # copy binaries from sface to the bin dir for bin in sface.bin sface-run; do - # don't use the --file mode as this loses the executable bit - git_retrieve $sface_GITPATH $bin "$img_mnt"/$bin_path + cp $temp/sface/$bin "$img_mnt"/$bin_path done ### install background and app icons # clean up any 'background' dir if exists rm -rf "$img_mnt"/{,.}background - git_retrieve --file $sface_GITPATH macos/graphic-install-background.png "$img_mnt"/.background/background.png - git_retrieve --file $sface_GITPATH macos/graphic-sfa.icns "$img_mnt"/$resource_path/appIcon.icns + cp $temp/sface/macos/graphic-install-background.png "$img_mnt"/.background/background.png + cp $temp/sface/macos/graphic-sfa.icns "$img_mnt"/$resource_path/appIcon.icns # the volume icons won't work - who cares -# git_retrieve --file $sface_GITPATH macos/graphic-vol-sface.icns "$img_mnt"/.background/volumeIcon.icns -# git_retrieve --file $sface_GITPATH macos/graphic-vol-sface.png "$img_mnt"/.background/volumeIcon.png +# cp $temp/sface/macos/graphic-vol-sface.icns "$img_mnt"/.background/volumeIcon.icns +# cp $temp/sface/macos/graphic-vol-sface.png "$img_mnt"/.background/volumeIcon.png # instantiate version sed -e "s,@VERSIONTAG@,$sfa_release,g" -e "s,@SCMURL@,${sfa_GITPATH},g" \ @@ -197,6 +194,8 @@ Also make sure to trash the current one before retrying" read _ fi + rm -rf $temp + hdiutil detach "$img_mnt" rm -f $img_dmg echo "Compressing..." @@ -223,6 +222,7 @@ function usage () { echo "Common options" echo " -i : interactive : let you align icons properly in the image before it gets wrapped" echo " -f : force download of the skeleton package" + echo " -F : force overwrite if output already exists" echo " -a leopard|snow-leopard" echo " -A : run on all known archs" echo " -n : dry-run" @@ -234,7 +234,7 @@ DEFAULT_BUILD_DIR=$HOME/git/build DEFAULT_TAGS_FILE=onelab-k32-tags.mk function main () { - while getopts "b:t:c:s:ifa:Anvh" opt ; do + while getopts "b:t:c:s:ifFa:Anvh" opt ; do case $opt in b) BUILD_DIR=$OPTARG;; t) TAGS_FILE=$OPTARG;; @@ -242,6 +242,7 @@ function main () { s) sfa_GITPATH=$OPTARG;; i) INTERACTIVE=true;; f) FORCE_DOWNLOAD=true;; + F) FORCE_REWRITE=true ;; a) ARCHS="$ARCHS $OPTARG";; A) ARCHS="leopard snow-leopard";; n) dry_run=true;; -- 2.43.0