Statistics
| Branch: | Revision:

root / scripts / refresh-pxe-roms.sh @ a74cdab4

History | View | Annotate | Download (2.5 kB)

1 36d8d02d Alex Williamson
#!/bin/bash
2 36d8d02d Alex Williamson
3 36d8d02d Alex Williamson
# PXE ROM build script
4 36d8d02d Alex Williamson
#
5 36d8d02d Alex Williamson
# This program is free software; you can redistribute it and/or modify
6 36d8d02d Alex Williamson
# it under the terms of the GNU General Public License as published by
7 36d8d02d Alex Williamson
# the Free Software Foundation; either version 2 of the License, or
8 36d8d02d Alex Williamson
# (at your option) any later version.
9 36d8d02d Alex Williamson
#
10 36d8d02d Alex Williamson
# This program is distributed in the hope that it will be useful,
11 36d8d02d Alex Williamson
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12 36d8d02d Alex Williamson
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 36d8d02d Alex Williamson
# GNU General Public License for more details.
14 36d8d02d Alex Williamson
#
15 36d8d02d Alex Williamson
# You should have received a copy of the GNU General Public License
16 36d8d02d Alex Williamson
# along with this program; if not, see <http://www.gnu.org/licenses/>.
17 36d8d02d Alex Williamson
#
18 36d8d02d Alex Williamson
# Copyright (C) 2011 Red Hat, Inc.
19 36d8d02d Alex Williamson
#   Authors: Alex Williamson <alex.williamson@redhat.com>
20 36d8d02d Alex Williamson
#
21 36d8d02d Alex Williamson
# Usage: Run from root of qemu tree
22 36d8d02d Alex Williamson
# ./scripts/refresh-pxe-roms.sh
23 36d8d02d Alex Williamson
24 36d8d02d Alex Williamson
QEMU_DIR=$PWD
25 36d8d02d Alex Williamson
ROM_DIR="pc-bios"
26 36d8d02d Alex Williamson
BUILD_DIR="roms/ipxe"
27 36d8d02d Alex Williamson
LOCAL_CONFIG="src/config/local/general.h"
28 36d8d02d Alex Williamson
29 36d8d02d Alex Williamson
function cleanup ()
30 36d8d02d Alex Williamson
{
31 36d8d02d Alex Williamson
    if [ -n "$SAVED_CONFIG" ]; then
32 36d8d02d Alex Williamson
        cp "$SAVED_CONFIG" "$BUILD_DIR"/"$LOCAL_CONFIG"
33 36d8d02d Alex Williamson
        rm "$SAVED_CONFIG"
34 36d8d02d Alex Williamson
    fi
35 36d8d02d Alex Williamson
    cd "$QEMU_DIR"
36 36d8d02d Alex Williamson
}
37 36d8d02d Alex Williamson
38 36d8d02d Alex Williamson
function make_rom ()
39 36d8d02d Alex Williamson
{
40 36d8d02d Alex Williamson
    cd "$BUILD_DIR"/src
41 36d8d02d Alex Williamson
42 36d8d02d Alex Williamson
    BUILD_LOG=$(mktemp)
43 36d8d02d Alex Williamson
44 36d8d02d Alex Williamson
    echo Building "$2"...
45 36d8d02d Alex Williamson
    make bin/"$1".rom > "$BUILD_LOG" 2>&1
46 36d8d02d Alex Williamson
    if [ $? -ne 0 ]; then
47 36d8d02d Alex Williamson
        echo Build failed
48 36d8d02d Alex Williamson
        tail --lines=100 "$BUILD_LOG"
49 36d8d02d Alex Williamson
        rm "$BUILD_LOG"
50 36d8d02d Alex Williamson
        cleanup
51 36d8d02d Alex Williamson
        exit 1
52 36d8d02d Alex Williamson
    fi
53 36d8d02d Alex Williamson
    rm "$BUILD_LOG"
54 36d8d02d Alex Williamson
55 36d8d02d Alex Williamson
    cp bin/"$1".rom "$QEMU_DIR"/"$ROM_DIR"/"$2"
56 36d8d02d Alex Williamson
57 36d8d02d Alex Williamson
    cd "$QEMU_DIR"
58 36d8d02d Alex Williamson
}
59 36d8d02d Alex Williamson
60 36d8d02d Alex Williamson
if [ ! -d "$QEMU_DIR"/"$ROM_DIR" ]; then
61 36d8d02d Alex Williamson
    echo "error: can't find $ROM_DIR directory," \
62 36d8d02d Alex Williamson
         "run me from the root of the qemu tree"
63 36d8d02d Alex Williamson
    exit 1
64 36d8d02d Alex Williamson
fi
65 36d8d02d Alex Williamson
66 36d8d02d Alex Williamson
if [ ! -d "$BUILD_DIR"/src ]; then
67 36d8d02d Alex Williamson
    echo "error: $BUILD_DIR not populated, try:"
68 36d8d02d Alex Williamson
    echo "  git submodule init $BUILD_DIR"
69 36d8d02d Alex Williamson
    echo "  git submodule update $BUILD_DIR"
70 36d8d02d Alex Williamson
    exit 1
71 36d8d02d Alex Williamson
fi
72 36d8d02d Alex Williamson
73 36d8d02d Alex Williamson
if [ -e "$BUILD_DIR"/"$LOCAL_CONFIG" ]; then
74 36d8d02d Alex Williamson
    SAVED_CONFIG=$(mktemp)
75 36d8d02d Alex Williamson
    cp "$BUILD_DIR"/"$LOCAL_CONFIG" "$SAVED_CONFIG"
76 36d8d02d Alex Williamson
fi
77 36d8d02d Alex Williamson
78 36d8d02d Alex Williamson
echo "#undef BANNER_TIMEOUT" > "$BUILD_DIR"/"$LOCAL_CONFIG"
79 36d8d02d Alex Williamson
echo "#define BANNER_TIMEOUT 0" >> "$BUILD_DIR"/"$LOCAL_CONFIG"
80 36d8d02d Alex Williamson
81 36d8d02d Alex Williamson
IPXE_VERSION=$(cd "$BUILD_DIR" && git describe --tags)
82 36d8d02d Alex Williamson
if [ -z "$IPXE_VERSION" ]; then
83 36d8d02d Alex Williamson
    echo "error: unable to retrieve git version"
84 36d8d02d Alex Williamson
    cleanup
85 36d8d02d Alex Williamson
    exit 1
86 36d8d02d Alex Williamson
fi
87 36d8d02d Alex Williamson
88 36d8d02d Alex Williamson
echo "#undef PRODUCT_NAME" >> "$BUILD_DIR"/"$LOCAL_CONFIG"
89 36d8d02d Alex Williamson
echo "#define PRODUCT_NAME \"iPXE $IPXE_VERSION\"" >> "$BUILD_DIR"/"$LOCAL_CONFIG"
90 36d8d02d Alex Williamson
91 36d8d02d Alex Williamson
make_rom 8086100e pxe-e1000.rom
92 36d8d02d Alex Williamson
make_rom 80861209 pxe-eepro100.rom
93 36d8d02d Alex Williamson
make_rom 10500940 pxe-ne2k_pci.rom
94 36d8d02d Alex Williamson
make_rom 10222000 pxe-pcnet.rom
95 36d8d02d Alex Williamson
make_rom 10ec8139 pxe-rtl8139.rom
96 36d8d02d Alex Williamson
make_rom 1af41000 pxe-virtio.rom
97 36d8d02d Alex Williamson
98 36d8d02d Alex Williamson
echo done
99 36d8d02d Alex Williamson
cleanup