-U <username> arrange output to be owned by specified username
-v <version_number> specify version number of the release
-V increase verbosity in the build process
+ -w <date> wayback machine, build system using Debian archives
+ from specified date
-z use ZLIB instead of LZMA/XZ compression
Usage examples:
# }}}
# command line parsing {{{
-while getopts "a:C:c:d:D:e:g:i:I:o:r:s:S:t:U:v:AbBFhnNqQuVz" opt; do
+while getopts "a:C:c:d:D:e:g:i:I:o:r:s:S:t:U:v:w:AbBFhnNqQuVz" opt; do
case "$opt" in
a) ARCH="$OPTARG" ;;
A) CLEAN_ARTIFACTS=1 ;;
u) UPDATE=1 ;;
U) CHOWN_USER="$OPTARG" ;;
V) VERBOSE="-v" ;;
+ w) export WAYBACK_DATE="$OPTARG" ;;
z) SQUASHFS_ZLIB=1 ;;
?) echo "invalid option -$OPTARG" >&2; usage; bailout 1 ;;
esac
# generate nfsroot configuration for FAI on the fly
if [ -z "$FAI_DEBOOTSTRAP" ] ; then
- FAI_DEBOOTSTRAP="$SUITE http://http.debian.net/debian"
+ if [ -n "$WAYBACK_DATE" ] ; then
+ FAI_DEBOOTSTRAP="$SUITE http://snapshot.debian.org/archive/debian/$WAYBACK_DATE/"
+ else
+ FAI_DEBOOTSTRAP="$SUITE http://ftp.debian.org/debian"
+ fi
fi
if [ -z "$FAI_DEBOOTSTRAP_OPTS" ] ; then
- FAI_DEBOOTSTRAP_OPTS="--exclude=info,tasksel,tasksel-data --arch $ARCH"
+ FAI_DEBOOTSTRAP_OPTS="--exclude=info,tasksel,tasksel-data --include=aptitude --arch $ARCH"
fi
# create backup of old (not yet automatically generated) config file
mount --bind "${OUTPUT}/grml_sources/" "${CHROOT_OUTPUT}/grml-live/sources/"
log "Executed FAI command line:"
- log "BUILD_ONLY=$BUILD_ONLY BOOTSTRAP_ONLY=$BOOTSTRAP_ONLY GRML_LIVE_CONFIG=$CONFIGDUMP fai $VERBOSE -C $GRML_FAI_CONFIG -s file:///$GRML_FAI_CONFIG/config -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS"
+ log "BUILD_ONLY=$BUILD_ONLY BOOTSTRAP_ONLY=$BOOTSTRAP_ONLY GRML_LIVE_CONFIG=$CONFIGDUMP WAYBACK_DATE=$WAYBACK_DATE fai $VERBOSE -C $GRML_FAI_CONFIG -s file:///$GRML_FAI_CONFIG/config -c$CLASSES -u $HOSTNAME $FAI_ACTION $CHROOT_OUTPUT $FAI_ARGS"
BUILD_ONLY="$BUILD_ONLY" BOOTSTRAP_ONLY="$BOOTSTRAP_ONLY" GRML_LIVE_CONFIG="$CONFIGDUMP" fai $VERBOSE \
-C "$GRML_FAI_CONFIG" -s "file:///$GRML_FAI_CONFIG/config" -c"$CLASSES" \
-u "$HOSTNAME" "$FAI_ACTION" "$CHROOT_OUTPUT" $FAI_ARGS | tee -a $LOGFILE
grep 'FAILED with exit code' $CHECKLOG/shell.log >> $LOGFILE && ERROR=6
fi
+ if [ -r "$CHECKLOG/fai.log" ] ; then
+ grep 'updatebase.*FAILED with exit code' "$CHECKLOG/fai.log" >> "$LOGFILE" && ERROR=7
+ grep 'instsoft.*FAILED with exit code' "$CHECKLOG/fai.log" >> "$LOGFILE" && ERROR=8
+ fi
+
if [ -n "$ERROR" ] ; then
log "Error: there was a critical error [${ERROR}] during execution of stage 'fai dirinstall' [$(date)]"
eerror "Error: there was a critical error during execution of stage 'fai dirinstall'"
<testsuite name="grml-live-missing-packages" tests="${package_count}" time="1" failures="${package_errors}" errors="${package_errors}" skipped="0" assertions="0">
EOF
- for package in $(awk '{print $1}' "${CHECKLOG}/package_errors.log") ; do
+ for package in $(awk '{print $1}' "${CHECKLOG}/package_errors.log" | sed 's;/;\\/;') ; do
failure_reason="$(awk "/$package/ {print \$2}" "${CHECKLOG}/package_errors.log")"
cat >> "${REPORT_MISSING_PACKAGES}" << EOF
<testcase name="test_missing_packages_${package}" time="0" assertions="0">
# copy _required_ isolinux files
if [ -d "${CHROOT_OUTPUT}/usr/lib/ISOLINUX" ] ; then
copy_addon_file isolinux.bin /usr/lib/ISOLINUX isolinux
- copy_addon_file ifcpu64.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file ldlinux.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file libcom32.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file libutil.c32 /usr/lib/syslinux/modules/bios/ isolinux
- copy_addon_file vesamenu.c32 /usr/lib/syslinux/modules/bios/ isolinux
+ for file in ${CHROOT_OUTPUT}/usr/lib/syslinux/modules/bios/*.c32 ; do
+ copy_addon_file "$(basename "$file")" /usr/lib/syslinux/modules/bios/ isolinux
+ done
else # syslinux versions <= 3:4.05+dfsg-6+deb8u1
copy_addon_file isolinux.bin /usr/lib/syslinux isolinux
copy_addon_file ifcpu64.c32 /usr/lib/syslinux isolinux
else
syslinux_modules_dir=/usr/lib/syslinux
fi
- for file in memdisk chain.c32 hdt.c32 mboot.c32 menu.c32; do
+ for file in chain.c32 hdt.c32 mboot.c32 menu.c32; do
copy_addon_file "${file}" "${syslinux_modules_dir}" addons
done
+ copy_addon_file memdisk /usr/lib/syslinux addons
+
# make memtest filename FAT16/8.3 compatible
mv "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" \
"${BUILD_OUTPUT}/boot/addons/memtest"
fi
elif [ "$HYBRID_METHOD" = "isohybrid" ] ; then
if ! which isohybrid >/dev/null 2>&1 ; then
- bailout 12 "isohybrid binary not found - please install syslinux/syslinux-common"
+ bailout 12 "isohybrid binary not found - please install syslinux/syslinux-common/syslinux-utils"
else
log "Creating hybrid ISO file with isohybrid method"
einfo "Creating hybrid ISO file with isohybrid method"
cp "${CHROOT_OUTPUT}"/boot/initrd.img-* "$WORKING_DIR"/initrd.img
cp "${CHROOT_OUTPUT}/${pxelinux_dir}/pxelinux.0" "${WORKING_DIR}/pxelinux.0"
+ if [ -r "${CHROOT_OUTPUT}"/usr/lib/syslinux/modules/bios/ldlinux.c32 ] ; then
+ cp "${CHROOT_OUTPUT}"/usr/lib/syslinux/modules/bios/ldlinux.c32 "${WORKING_DIR}"/
+ fi
+
mkdir -p "${WORKING_DIR}/pxelinux.cfg"
if [ -r "${BUILD_OUTPUT}/boot/isolinux/netboot.cfg" ] ; then
cp "${BUILD_OUTPUT}/boot/isolinux/netboot.cfg" "${WORKING_DIR}/pxelinux.cfg/default"