X-Git-Url: https://git.grml.org/?p=grml2usb.git;a=blobdiff_plain;f=grml2iso;h=dc2303600f77c32fd6dbcaa54ca8c197d1bfde82;hp=c4c13eeb1ae166c4705444b2c9cd90b0593f5460;hb=f1cfc39202809f9172c7c1b833f6392f0ac23e5d;hpb=a1ca17bdb73f73e3b8b49dca4bee1da2460db329 diff --git a/grml2iso b/grml2iso index c4c13ee..dc23036 100755 --- a/grml2iso +++ b/grml2iso @@ -78,7 +78,7 @@ Options: case $name in o) ISOFILE="$OPTARG";; b) GRML2USB_OPTS+=(--bootoptions="$OPTARG");; - c) DIR="$OPTARG";; + c) DIR="$(readlink -f "$OPTARG")";; f) FORCE='true';; r) GRML2USB_OPTS+=(--remove-bootoption="$OPTARG");; p) GRML2USB_OPTS+=("$OPTARG");; @@ -203,9 +203,42 @@ Options: # copy specified directory to cd {{{ if [ -n "$DIR" ] ; then echo >&2 "Copying ${DIR} to generated ISO" - rsync -a ${DIR}/ . + for param in GRML_NAME VERSION RELEASENAME DATE SHORT_NAME \ + VERSION BOOTID RELEASE_INFO ; do + EXCLUDE_PARAM="$EXCLUDE_PARAM --exclude **%${param}%**" + done + rsync -a ${DIR}/ $EXCLUDE_PARAM . fi + # adjust files from overlay directory + for GRML_VERSION_FILE in $(find . -name grml-version) ; do + GRML_NAME=$(awk '{print $1}' "$GRML_VERSION_FILE") + VERSION=$(awk '{print $2}' "$GRML_VERSION_FILE") + RELEASENAME=$(sed 's/.*- \(.*\).*\[.*/\1/' "$GRML_VERSION_FILE") + DATE=$(sed 's/.*\[\(.*\)].*/\1/' "$GRML_VERSION_FILE") + SHORT_NAME="$(echo $GRML_NAME | tr -d ',./;\- ')" + RELEASE_INFO="$GRML_NAME $VERSION - $RELEASENAME" + BOOTID=$(cat conf/bootid.txt) + + for param in GRML_NAME VERSION RELEASENAME DATE SHORT_NAME \ + RELEASE_INFO BOOTID ; do + value="$(eval echo '$'"$param")" + + # copy parameterized files from the overlay directory + for file in $(find ${DIR} -name "*%$param%*") ; do + file=${file##$DIR/} + target_dir="$(dirname ${file})" + mkdir -p "$target_dir" || true + cp -r ${DIR}/${file} ./${target_dir}/"$(basename ${file/\%${param}\%/$value})" + done + + # adjust config files + for file in ./boot/isolinux/*.cfg ./boot/isolinux/*.msg \ + ./boot/grub/*.cfg ; do + sed -i "s/%$param%/$value/g" ${file} 2>/dev/null || true + done + done + done # }}} # generate the CD/DVD ISO {{{ @@ -215,8 +248,8 @@ Options: # pad the output ISO to multiples of 256 KiB for partition table support {{{ siz=$($getfilesize "$ISOFILE") - cyls=$(echo "$siz / 512 / 32 / 16 + 1" | bc) # C=$cyls H=16 S=32 - ofs=$(echo "$cyls * 16 * 32 * 512 - 1" | bc) # padding offset (size - 1) + cyls=$(($siz / 512 / 32 / 16 + 1)) # C=$cyls H=16 S=32 + ofs=$(($cyls * 16 * 32 * 512 - 1)) # padding offset (size - 1) dd if=/dev/zero bs=1 count=1 seek=$ofs of="$ISOFILE" 2>/dev/null # }}}