source: mainline/tools/grub/grub-update.sh@ 7e53c37

Last change on this file since 7e53c37 was 7e53c37, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 3 years ago

Update files with /bin/bash shebang

  • Property mode set to 100755
File size: 3.9 KB
RevLine 
[2f2dd126]1#!/bin/bash
2#
[7e53c37]3# SPDX-FileCopyrightText: 2016 Jiri Svoboda
[2f2dd126]4#
[7e53c37]5# SPDX-License-Identifier: BSD-3-Clause
[2f2dd126]6#
7
8#
9# Script to generate/update prebuilt Grub2 in HelenOS source tree
10# Be sure you know what you are doing!
11#
12
[3876300]13origdir="$(cd "$(dirname "$0")" && pwd)"
[2f2dd126]14helenosdir="$origdir/../.."
[3876300]15workdir="$origdir/grub-src"
16builddir="$origdir/grub-build"
[2f2dd126]17git_repo="git://git.savannah.gnu.org/grub.git"
18grub_rev="bc220962e366b1b46769ed6f9fa5be603ba58ab5"
19
[b1478ff]20build_ia32amd64_pc=false
21build_ia32amd64_efi=false
22build_arm64_efi=false
23
[2f2dd126]24function grub_build()
25{
[b1478ff]26 platform="$1"
27 conf_target="$2"
28 conf_platform="$3"
[2f2dd126]29
[b1478ff]30 ./configure --prefix="$builddir/$platform" --target="$conf_target" --with-platform="$conf_platform" --disable-werror || exit 1
[2f2dd126]31 make clean || exit 1
32 make install || exit 1
33}
34
35function grub_files_update()
36{
37 gdir="$1"
38 platform="$2"
39
[b1478ff]40 echo "$grub_rev" > "$helenosdir"/boot/grub/"$gdir"/REVISION || exit 1
41 rm -rf "$helenosdir"/boot/grub/"$gdir"/"$platform" || exit 1
42 cp -R "$builddir"/"$platform"/lib*/grub/"$platform" "$helenosdir"/boot/grub/"$gdir" || exit 1
43 rm -f "$helenosdir"/boot/grub/"$gdir"/"$platform"/*.image || exit 1
44 rm -f "$helenosdir"/boot/grub/"$gdir"/"$platform"/*.module || exit 1
45 git add "$helenosdir"/boot/grub/"$gdir"/"$platform" || exit 1
46}
47
48function show_usage()
49{
50 echo "Script to generate/update prebuild Grub2 in HelenOS source tree"
51 echo
52 echo "Syntax:"
53 echo " $0 <target>"
54 echo
55 echo "Possible targets are:"
56 echo " ia32+amd64-pc"
57 echo " ia32+amd64-efi"
58 echo " arm64-efi"
59 echo " all build all targets"
60 echo
61
62 exit 3
[2f2dd126]63}
64
[b1478ff]65if [ "$#" -ne "1" ] ; then
66 show_usage
67fi
68
69case "$1" in
70 ia32+amd64-pc)
71 build_ia32amd64_pc=true
72 ;;
73 ia32+amd64-efi)
74 build_ia32amd64_efi=true
75 ;;
76 arm64-efi)
77 build_arm64_efi=true
78 ;;
79 all)
80 build_ia32amd64_pc=true
81 build_ia32amd64_efi=true
82 build_arm64_efi=true
83 ;;
84 *)
85 show_usage
86 ;;
87esac
88
[2f2dd126]89# Prepare a clone of Grub2 repo
90if [ ! -d "$workdir" ] ; then
91 rm -rf "$workdir" "$builddir" || exit 1
92 git clone "$git_repo" "$workdir" || exit 1
93fi
[5b39be2]94
95cd "$workdir" || exit 1
96git pull || exit 1
97git reset --hard "$grub_rev" || exit 1
98
[2f2dd126]99./autogen.sh || exit 1
[b1478ff]100
101if $build_ia32amd64_pc ; then
102 cd "$workdir" || exit 1
103 grub_build i386-pc i386 pc
104
105 # Extract El Torrito boot image for i386-pc
106 cd "$helenosdir"/boot/grub/ia32-pc || exit 1
107 rm -f pc.img || exit 1
108 "$builddir"/i386-pc/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
109
110 grub_files_update ia32-pc i386-pc
111fi
112
113if $build_ia32amd64_efi ; then
114 cd "$workdir" || exit 1
115
116 # Build each platform to a different directory
117 grub_build i386-efi i386 efi
118 grub_build x86_64-efi x86_64 efi
119
120 # Extract El Torrito boot image for i386-efi
121 cd "$helenosdir"/boot/grub/ia32-efi || exit 1
122 rm -f efi.img.gz || exit 1
123 "$builddir"/i386-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
124 mv efi.img i386-efi.img
125
126 # Extract El Torrito boot image for x86_64-efi
127 cd "$helenosdir"/boot/grub/ia32-efi || exit 1
128 rm -f efi.img.gz || exit 1
129 "$builddir"/x86_64-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
130
131 # Combine El Torrito boot images for x86_64-efi and i386-efi
132 mkdir tmp || exit 1
133 mcopy -ns -i i386-efi.img ::efi tmp || exit 1
134 mcopy -s -i efi.img tmp/* :: || exit 1
135 gzip efi.img || exit 1
136 rm -rf tmp || exit 1
137 rm -f i386-efi.img || exit 1
138
139 # Update Grub files for all platforms
140 grub_files_update ia32-efi i386-efi
141 grub_files_update ia32-efi x86_64-efi
142fi
143
144if $build_arm64_efi ; then
145 cd "$workdir" || exit 1
146
147 # Check that the expected compiler is present on PATH
148 if ! [ -x "$(command -v aarch64-linux-gnu-gcc)" ] ; then
149 echo "Error: aarch64-linux-gnu-gcc is missing" >&2
150 exit 1
151 fi
152
153 grub_build arm64-efi aarch64-linux-gnu efi
154
155 # Extract El Torrito boot image for arm64-efi
156 cd "$helenosdir"/boot/grub/arm64-efi || exit 1
157 rm -f efi.img.gz || exit 1
158 "$builddir"/arm64-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
159 gzip efi.img || exit 1
160
161 grub_files_update arm64-efi arm64-efi
162fi
[2f2dd126]163
164echo "GRUB update successful."
Note: See TracBrowser for help on using the repository browser.