Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/grub/grub-update.sh

    rb1478ff r1bb43d5  
    4040grub_rev="bc220962e366b1b46769ed6f9fa5be603ba58ab5"
    4141
    42 build_ia32amd64_pc=false
    43 build_ia32amd64_efi=false
    44 build_arm64_efi=false
    45 
    4642function grub_build()
    4743{
    48         platform="$1"
    49         conf_target="$2"
    50         conf_platform="$3"
     44        target="$1"
     45        platform="$2"
    5146
    52         ./configure --prefix="$builddir/$platform" --target="$conf_target" --with-platform="$conf_platform" --disable-werror || exit 1
     47        ./configure --prefix="$builddir/$target-$platform" --target="$target" --with-platform="$platform" --disable-werror || exit 1
    5348        make clean || exit 1
    5449        make install || exit 1
     
    6055        platform="$2"
    6156
    62         echo "$grub_rev" > "$helenosdir"/boot/grub/"$gdir"/REVISION || exit 1
    63         rm -rf "$helenosdir"/boot/grub/"$gdir"/"$platform" || exit 1
    64         cp -R "$builddir"/"$platform"/lib*/grub/"$platform" "$helenosdir"/boot/grub/"$gdir" || exit 1
    65         rm -f "$helenosdir"/boot/grub/"$gdir"/"$platform"/*.image || exit 1
    66         rm -f "$helenosdir"/boot/grub/"$gdir"/"$platform"/*.module || exit 1
    67         git add "$helenosdir"/boot/grub/"$gdir"/"$platform" || exit 1
     57        rm -rf "$helenosdir"/boot/"$gdir"/"$platform" || exit 1
     58        cp -R "$builddir"/"$platform"/lib64/grub/"$platform" "$helenosdir"/boot/"$gdir" || exit 1
     59        rm -f "$helenosdir"/boot/"$gdir"/"$platform"/*.image || exit 1
     60        rm -f "$helenosdir"/boot/"$gdir"/"$platform"/*.module || exit 1
     61        git add "$helenosdir"/boot/"$gdir"/"$platform" || exit 1
    6862}
    69 
    70 function show_usage()
    71 {
    72         echo "Script to generate/update prebuild Grub2 in HelenOS source tree"
    73         echo
    74         echo "Syntax:"
    75         echo " $0 <target>"
    76         echo
    77         echo "Possible targets are:"
    78         echo " ia32+amd64-pc"
    79         echo " ia32+amd64-efi"
    80         echo " arm64-efi"
    81         echo " all             build all targets"
    82         echo
    83 
    84         exit 3
    85 }
    86 
    87 if [ "$#" -ne "1" ] ; then
    88         show_usage
    89 fi
    90 
    91 case "$1" in
    92         ia32+amd64-pc)
    93                 build_ia32amd64_pc=true
    94                 ;;
    95         ia32+amd64-efi)
    96                 build_ia32amd64_efi=true
    97                 ;;
    98         arm64-efi)
    99                 build_arm64_efi=true
    100                 ;;
    101         all)
    102                 build_ia32amd64_pc=true
    103                 build_ia32amd64_efi=true
    104                 build_arm64_efi=true
    105                 ;;
    106         *)
    107                 show_usage
    108                 ;;
    109 esac
    11063
    11164# Prepare a clone of Grub2 repo
     
    11972git reset --hard "$grub_rev" || exit 1
    12073
     74echo "$grub_rev" >"$helenosdir"/boot/grub.pc/REVISION || exit 1
     75echo "$grub_rev" > "$helenosdir"/boot/grub.efi/REVISION || exit 1
     76
     77# Build each platform to a different directory
    12178./autogen.sh || exit 1
     79grub_build i386 pc
     80grub_build i386 efi
     81grub_build x86_64 efi
    12282
    123 if $build_ia32amd64_pc ; then
    124         cd "$workdir" || exit 1
    125         grub_build i386-pc i386 pc
     83# Extract El Torrito boot image for i386-pc
     84cd "$helenosdir"/boot/grub.pc || exit 1
     85rm -f pc.img || exit 1
     86"$builddir"/i386-pc/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
    12687
    127         # Extract El Torrito boot image for i386-pc
    128         cd "$helenosdir"/boot/grub/ia32-pc || exit 1
    129         rm -f pc.img || exit 1
    130         "$builddir"/i386-pc/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
     88# Extract El Torrito boot image for i386-efi
     89cd "$helenosdir"/boot/grub.efi || exit 1
     90rm -f efi.img.gz || exit 1
     91"$builddir"/i386-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
     92mv efi.img i386-efi.img
    13193
    132         grub_files_update ia32-pc i386-pc
    133 fi
     94# Extract El Torrito boot image for x86_64-efi
     95cd "$helenosdir"/boot/grub.efi || exit 1
     96rm -f efi.img.gz || exit 1
     97"$builddir"/x86_64-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
    13498
    135 if $build_ia32amd64_efi ; then
    136         cd "$workdir" || exit 1
     99# Combine El Torrito boot images for x86_64-efi and i386-efi
     100mkdir tmp || exit 1
     101mcopy -ns -i i386-efi.img ::efi tmp || exit 1
     102mcopy -s -i efi.img tmp/* :: || exit 1
     103gzip efi.img || exit 1
     104rm -rf tmp || exit 1
     105rm -f i386-efi.img || exit 1
    137106
    138         # Build each platform to a different directory
    139         grub_build i386-efi i386 efi
    140         grub_build x86_64-efi x86_64 efi
    141 
    142         # Extract El Torrito boot image for i386-efi
    143         cd "$helenosdir"/boot/grub/ia32-efi || exit 1
    144         rm -f efi.img.gz || exit 1
    145         "$builddir"/i386-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
    146         mv efi.img i386-efi.img
    147 
    148         # Extract El Torrito boot image for x86_64-efi
    149         cd "$helenosdir"/boot/grub/ia32-efi || exit 1
    150         rm -f efi.img.gz || exit 1
    151         "$builddir"/x86_64-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
    152 
    153         # Combine El Torrito boot images for x86_64-efi and i386-efi
    154         mkdir tmp || exit 1
    155         mcopy -ns -i i386-efi.img ::efi tmp || exit 1
    156         mcopy -s -i efi.img tmp/* :: || exit 1
    157         gzip efi.img || exit 1
    158         rm -rf tmp || exit 1
    159         rm -f i386-efi.img || exit 1
    160 
    161         # Update Grub files for all platforms
    162         grub_files_update ia32-efi i386-efi
    163         grub_files_update ia32-efi x86_64-efi
    164 fi
    165 
    166 if $build_arm64_efi ; then
    167         cd "$workdir" || exit 1
    168 
    169         # Check that the expected compiler is present on PATH
    170         if ! [ -x "$(command -v aarch64-linux-gnu-gcc)" ] ; then
    171                 echo "Error: aarch64-linux-gnu-gcc is missing" >&2
    172                 exit 1
    173         fi
    174 
    175         grub_build arm64-efi aarch64-linux-gnu efi
    176 
    177         # Extract El Torrito boot image for arm64-efi
    178         cd "$helenosdir"/boot/grub/arm64-efi || exit 1
    179         rm -f efi.img.gz || exit 1
    180         "$builddir"/arm64-efi/bin/grub-mkrescue -o phony --xorriso="$origdir/getimage.sh" || exit 1
    181         gzip efi.img || exit 1
    182 
    183         grub_files_update arm64-efi arm64-efi
    184 fi
     107# Update Grub files for all platforms
     108grub_files_update grub.pc i386-pc
     109grub_files_update grub.efi i386-efi
     110grub_files_update grub.efi x86_64-efi
    185111
    186112echo "GRUB update successful."
Note: See TracChangeset for help on using the changeset viewer.