buildrootschalter/fs/ext2/genext2fs.sh
Peter Korsgaard fb951b9342 fs/ext2: fix blocks/inodes calculation
With the ROOTFS_TARGET conversion, EXT2_OPTS gets evaluated very early
(before TARGET_DIR is populated with files), so the calculated
blocks/inodes numbers are wrong.

Fix it by moving the calculation to a shell script wrapper around
genext2fs, so it only gets executed just before genext2fs runs.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-04-19 14:33:14 +02:00

40 lines
732 B
Bash
Executable File

#!/bin/sh
# genext2fs wrapper calculating needed blocks/inodes values if not specified
export LC_ALL=C
CALC_BLOCKS=1
CALC_INODES=1
while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f
do
case $f in
b) CALC_BLOCKS=0 ;;
N) CALC_INODES=0 ;;
d) TARGET_DIR=$OPTARG ;;
esac
done
# calculate needed blocks
if [ $CALC_BLOCKS -eq 1 ];
then
BLOCKS=$(du -s -c -k $TARGET_DIR | grep total | sed -e "s/total//")
if [ $BLOCKS -ge 20000 ];
then
BLOCKS=$(expr $BLOCKS + 16384)
else
BLOCKS=$(expr $BLOCKS + 2400)
fi
set -- $@ -b $BLOCKS
fi
# calculate needed inodes
if [ $CALC_INODES -eq 1 ];
then
INODES=$(find $TARGET_DIR | wc -l)
INODES=$(expr $INODES + 400)
set -- $@ -N $INODES
fi
exec genext2fs $@