+# netboot package {{{
+create_netbootpackage() {
+ local OUTPUT_FILE="${NETBOOT}/grml_netboot_package_${GRML_NAME}_${VERSION}.tar.bz2"
+
+ if [ -f "${OUTPUT_FILE}" -a -z "$UPDATE" -a -z "$BUILD_ONLY" -a -z "$BUILD_DIRTY" ] ; then
+ log "Skipping stage 'netboot' as $OUTPUT_FILE exists already."
+ ewarn "Skipping stage 'netboot' as $OUTPUT_FILE exists already." ; eend 0
+ return 0
+ elif [ -n "$SKIP_NETBOOT" ] ; then
+ log "Skipping stage 'netboot' as requested via option -Q"
+ ewarn "Skipping stage 'netboot' as requested via option -Q" ; eend 0
+ return 0
+ fi
+
+ mkdir -p "$NETBOOT"
+
+ # since syslinux v3:6.03~pre1+dfsg-4 the pxelinux.0 has been split into a
+ # separate pxelinux package
+ if [ -d "${CHROOT_OUTPUT}/usr/lib/PXELINUX/" ] ; then
+ local pxelinux_dir=/usr/lib/PXELINUX
+ else
+ local pxelinux_dir=/usr/lib/syslinux
+ fi
+
+ if ! [ -r "${CHROOT_OUTPUT}/${pxelinux_dir}/pxelinux.0" ] ; then
+ ewarn "File ${pxelinux_dir}/pxelinux.0 not found in build chroot." ; eend 0
+ eindent
+ einfo "Install syslinux[-common]/pxelinux package in chroot to get a netboot package."
+ eoutdent
+ return 0
+ fi
+
+ local OUTPUTDIR="${NETBOOT}/build_tmp"
+ local WORKING_DIR="${OUTPUTDIR}/grml_netboot_package_${GRML_NAME}_${VERSION}/tftpboot/"
+
+ mkdir -p "$WORKING_DIR"
+
+ cp "${CHROOT_OUTPUT}"/boot/vmlinuz-* "$WORKING_DIR"/vmlinuz
+ cp "${CHROOT_OUTPUT}"/boot/initrd.img-* "$WORKING_DIR"/initrd.img
+ cp "${CHROOT_OUTPUT}/${pxelinux_dir}/pxelinux.0" "${WORKING_DIR}/pxelinux.0"
+
+ 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"
+ else
+ log "File ${BUILD_OUTPUT}/boot/isolinux/netboot.cfg not found."
+ ewarn "File ${BUILD_OUTPUT}/boot/isolinux/netboot.cfg not found."
+ eindent
+ log "Hint: Are you using custom templates which do not provide netboot.cfg?"
+ ewarn "Hint: Are you using custom templates which do not provide netboot.cfg?" ; eend 0
+ eoutdent
+ fi
+
+ if tar -C "$OUTPUTDIR" -jcf "${OUTPUT_FILE}" "grml_netboot_package_${GRML_NAME}_${VERSION}" ; then
+ (
+ cd $(dirname "${OUTPUT_FILE}")
+ sha1sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha1"
+ )
+ einfo "Generated netboot package ${OUTPUT_FILE}" ; eend 0
+ rm -rf "${OUTPUTDIR}"
+ else
+ rm -rf "${OUTPUTDIR}"
+ eerror "Could not generate netboot package ${OUTPUT_FILE}" ; eend 1
+ bailout 21
+ fi
+}
+
+create_netbootpackage