combined-ext-image.sh: generate image in temp dir
The new build commands operate on the input image and use it again as output image. This conflicts with the way combined-ext-image.sh was operating. It required that input and output files are different files and and that it can write freely to the output file. This can be avoided when all intermediate build steps by combined-ext-image.sh are done in a temporary directory. The output file is then only overwritten in the last step. Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
This commit is contained in:
parent
9514cde2b9
commit
1a384ac0b5
1 changed files with 23 additions and 6 deletions
|
@ -22,6 +22,8 @@
|
|||
## version history
|
||||
# * version 1: initial file format with num files / name / length / md5 checksum
|
||||
|
||||
set -e
|
||||
|
||||
ME="${0##*/}"
|
||||
|
||||
usage() {
|
||||
|
@ -38,7 +40,21 @@ IMG_OUT=$1; shift
|
|||
FILE_NUM=$(($# / 2))
|
||||
FILES=""
|
||||
|
||||
printf "CE%02x%-32s%02x" $CE_VERSION "$IMG_TYPE" $FILE_NUM > $IMG_OUT
|
||||
tmpdir="$( mktemp -d 2> /dev/null )"
|
||||
if [ -z "$tmpdir" ]; then
|
||||
# try OSX signature
|
||||
tmpdir="$( mktemp -t 'ubitmp' -d )"
|
||||
fi
|
||||
|
||||
if [ -z "$tmpdir" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap "rm -rf $tmpdir" EXIT
|
||||
|
||||
IMG_TMP_OUT="${tmpdir}/out"
|
||||
|
||||
printf "CE%02x%-32s%02x" $CE_VERSION "$IMG_TYPE" $FILE_NUM > "${IMG_TMP_OUT}"
|
||||
|
||||
while [ "$#" -gt 1 ]
|
||||
do
|
||||
|
@ -48,14 +64,15 @@ while [ "$#" -gt 1 ]
|
|||
[ ! -f "$file" ] && echo "$ME: Not a valid file: $file" && usage
|
||||
FILES="$FILES $file"
|
||||
md5=$(mkhash md5 "$file")
|
||||
printf "%-32s%08x%32s" "$filename" $(stat -c "%s" "$file") "${md5%% *}" >> $IMG_OUT
|
||||
printf "%-32s%08x%32s" "$filename" $(stat -c "%s" "$file") "${md5%% *}" >> "${IMG_TMP_OUT}"
|
||||
shift 2
|
||||
done
|
||||
|
||||
[ "$#" -eq 1 ] && echo "$ME: Filename not specified: $1" && usage
|
||||
|
||||
mv $IMG_OUT $IMG_OUT.tmp
|
||||
dd if="$IMG_OUT.tmp" of="$IMG_OUT" bs=65536 conv=sync 2>/dev/null
|
||||
rm $IMG_OUT.tmp
|
||||
mv "${IMG_TMP_OUT}" "${IMG_TMP_OUT}".tmp
|
||||
dd if="${IMG_TMP_OUT}.tmp" of="${IMG_TMP_OUT}" bs=65536 conv=sync 2>/dev/null
|
||||
rm "${IMG_TMP_OUT}".tmp
|
||||
|
||||
cat $FILES >> $IMG_OUT
|
||||
cat $FILES >> "${IMG_TMP_OUT}"
|
||||
cp "${IMG_TMP_OUT}" "${IMG_OUT}"
|
||||
|
|
Loading…
Reference in a new issue