#!/bin/bash # PXE ROM build script # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # Copyright (C) 2011 Red Hat, Inc. # Authors: Alex Williamson # # Usage: Run from root of qemu tree # ./scripts/refresh-pxe-roms.sh QEMU_DIR=$PWD ROM_DIR="pc-bios" BUILD_DIR="roms/ipxe" LOCAL_CONFIG="src/config/local/general.h" function cleanup () { if [ -n "$SAVED_CONFIG" ]; then cp "$SAVED_CONFIG" "$BUILD_DIR"/"$LOCAL_CONFIG" rm "$SAVED_CONFIG" fi cd "$QEMU_DIR" } function make_rom () { cd "$BUILD_DIR"/src BUILD_LOG=$(mktemp) echo Building "$2"... make bin/"$1".rom > "$BUILD_LOG" 2>&1 if [ $? -ne 0 ]; then echo Build failed tail --lines=100 "$BUILD_LOG" rm "$BUILD_LOG" cleanup exit 1 fi rm "$BUILD_LOG" cp bin/"$1".rom "$QEMU_DIR"/"$ROM_DIR"/"$2" cd "$QEMU_DIR" } if [ ! -d "$QEMU_DIR"/"$ROM_DIR" ]; then echo "error: can't find $ROM_DIR directory," \ "run me from the root of the qemu tree" exit 1 fi if [ ! -d "$BUILD_DIR"/src ]; then echo "error: $BUILD_DIR not populated, try:" echo " git submodule init $BUILD_DIR" echo " git submodule update $BUILD_DIR" exit 1 fi if [ -e "$BUILD_DIR"/"$LOCAL_CONFIG" ]; then SAVED_CONFIG=$(mktemp) cp "$BUILD_DIR"/"$LOCAL_CONFIG" "$SAVED_CONFIG" fi echo "#undef BANNER_TIMEOUT" > "$BUILD_DIR"/"$LOCAL_CONFIG" echo "#define BANNER_TIMEOUT 0" >> "$BUILD_DIR"/"$LOCAL_CONFIG" IPXE_VERSION=$(cd "$BUILD_DIR" && git describe --tags) if [ -z "$IPXE_VERSION" ]; then echo "error: unable to retrieve git version" cleanup exit 1 fi echo "#undef PRODUCT_NAME" >> "$BUILD_DIR"/"$LOCAL_CONFIG" echo "#define PRODUCT_NAME \"iPXE $IPXE_VERSION\"" >> "$BUILD_DIR"/"$LOCAL_CONFIG" make_rom 8086100e pxe-e1000.rom make_rom 80861209 pxe-eepro100.rom make_rom 10500940 pxe-ne2k_pci.rom make_rom 10222000 pxe-pcnet.rom make_rom 10ec8139 pxe-rtl8139.rom make_rom 1af41000 pxe-virtio.rom echo done cleanup