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 |