diff options
Diffstat (limited to 'resources/scripts/helpers/build/release')
-rwxr-xr-x | resources/scripts/helpers/build/release/archives | 388 |
1 files changed, 388 insertions, 0 deletions
diff --git a/resources/scripts/helpers/build/release/archives b/resources/scripts/helpers/build/release/archives new file mode 100755 index 0000000..49a1d4d --- /dev/null +++ b/resources/scripts/helpers/build/release/archives @@ -0,0 +1,388 @@ +#!/bin/bash + +# +# helper script: generate the release archives +# +# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk> +# +# 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 3 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 <http://www.gnu.org/licenses/>. +# + +# This script assumes that the current working directory when running +# it is the root directory of the libreboot git repository clone. + +set -u -e -v + +arch="unknown" +if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ] + then + arch="i686" + echo "Running on i686. ok." + sleep 2 +elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ] + then + arch="x86_64" + echo "Running on x86_64. ok." + sleep 2 +else + echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended." + exit 1 +fi + +# ### Delete old archives before continuing +# ---------------------------------------------------------------------------------------------------------------------------- + +echo "Deleting old release archives" + +rm -f libreboot_*.tar.xz +rm -f tobuild.tar.xz + +# Get manifest which will be used to copy everything +find -maxdepth 1 > releasefilelist + +# ### Prepare libreboot_src archive ready for release +# ---------------------------------------------------------------------------------------------------------------------------- + +mkdir libreboot_src + +for resource in $(cat releasefilelist) +do + if [ "$resource" != "." ] + then + cp -r $resource libreboot_src + fi +done + +cd libreboot_src/ + +# clean everything +./build clean all + +# back to main checkout directory +cd ../ + +# ### Further work in libreboot_src: delete *.git and *.svn +# ### To save space since they are not useful in the release archives +# ### Changes to these projects should be submitted upstream +# ---------------------------------------------------------------------------------------------------------------------------- + +cd libreboot_src/ + +# These instructions will also work even if .git or .svn are already deleted +# because "rm -rf" won't complain if they are missing. It is still useful on +# the release archives (non-git), for example if the user re-downloads these programmes. + +# remove .git for libreboot project itself +rm -rf .git* + +# remove .git for bucts +cd bucts/ +rm -rf .git* +cd ../ + +# coreboot: +# the instructions for coreboot remain in the download script +# they need to stay there, because otherwise "git diff" +# will show the blobs that were deleted (which means, +# that libreboot would be distributing blobs) + +# Flashrom: +cd flashrom/ +rm -rf .svn +cd ../ + +# GRUB: +cd grub/ +rm -rf .git +rm -f .gitignore +cd ../ + +cd ../ + +# ### Version information for this release +# ---------------------------------------------------------------------------------------------------------------------------- + +# create file showing the commit ID from git for this archive. +cat .git/refs/heads/master > commitid + +# ### Prepare ROM archives ready for release +# ---------------------------------------------------------------------------------------------------------------------------- + +cd bin/ +for board in $(ls) +do + # show the libreboot commit ID in the archive + cat ../commitid > "$board"/commitid + + # create lzma compressed src archive + tar -c "$board" | xz -9e >../libreboot_"$board".tar.xz + + # delete. no longer needed + rm -f "$board"/commitid +done +cd ../ + +# ### Prepare libreboot_util archive ready for release +# ---------------------------------------------------------------------------------------------------------------------------- + +mkdir libreboot_util + +# -------------- +# BUC.TS related +# -------------- +# X60/T60: BUC.TS utility is needed to flash libreboot while Lenovo BIOS is running +# Include it statically compiled +cp -r bucts bucts_ +# make it statically compile +./build module bucts static +mkdir libreboot_util/bucts/ +mkdir libreboot_util/bucts/"$arch"/ +mv bucts/bucts libreboot_util/bucts/"$arch"/ +rm -rf bucts/ +mv bucts_/ bucts/ + +# ---------------- +# Flashrom related +# ---------------- +# Flashrom is used to install libreboot on supported targets +# Include it statically compiled +cp -r flashrom flashrom_ +# make it statically compile +./build module flashrom static +mkdir libreboot_util/flashrom +cd flashrom/ +mkdir ../libreboot_util/flashrom/"$arch" +mv flashrom ../libreboot_util/flashrom/"$arch" +mv flashrom_lenovobios_sst ../libreboot_util/flashrom/"$arch" +mv flashrom_lenovobios_macronix ../libreboot_util/flashrom/"$arch" +cd ../ +rm -rf flashrom +mv flashrom_ flashrom + +# ---------------- +# cbfstool related +# ---------------- +# build cbfstool, compiled (statically linked) and include the binary +cd coreboot/util/ +cp -r cbfstool cbfstool_ +cd cbfstool/ +make clean +make SHARED=0 CC='gcc -static' +mkdir ../../../libreboot_util/cbfstool + +mkdir ../../../libreboot_util/cbfstool/"$arch" +mv cbfstool ../../../libreboot_util/cbfstool/"$arch"/ +mv rmodtool ../../../libreboot_util/cbfstool/"$arch"/ + +if [ "$arch" = "x86_64" ] + then + # Now build 32-bit binaries + make clean + make SHARED=0 CC='gcc -static -m32' + mkdir ../../../libreboot_util/cbfstool/i686 + mv cbfstool ../../../libreboot_util/cbfstool/i686/ + mv rmodtool ../../../libreboot_util/cbfstool/i686/ +fi + +# cross-compile for ARM +make clean +make SHARED=0 CC='arm-linux-gnueabi-gcc -static' +mkdir ../../../libreboot_util/cbfstool/armv7l +mv cbfstool ../../../libreboot_util/cbfstool/armv7l/ +mv rmodtool ../../../libreboot_util/cbfstool/armv7l/ + +cd ../ +rm -rf cbfstool +mv cbfstool_ cbfstool +cd ../../ + +# ---------------- +# ich9deblob related +# ---------------- +# build ich9deblob, compiled (statically linked) and include the binary +cd resources/utilities/ +cp -r ich9deblob ich9deblob_ +cd ich9deblob/ +make clean +make SHARED=0 CC='gcc -static' +mkdir ../../../libreboot_util/ich9deblob + +mkdir ../../../libreboot_util/ich9deblob/"$arch" +mv ich9deblob ../../../libreboot_util/ich9deblob/"$arch"/ +mv ich9gen ../../../libreboot_util/ich9deblob/"$arch"/ + +if [ "$arch" = "x86_64" ] + then + # Now build 32-bit binaries + make clean + make SHARED=0 CC='gcc -static -m32' + mkdir ../../../libreboot_util/ich9deblob/i686 + mv ich9deblob ../../../libreboot_util/ich9deblob/i686/ + mv ich9gen ../../../libreboot_util/ich9deblob/i686/ +fi + +# cross-compile for ARM +make clean +make SHARED=0 CC='arm-linux-gnueabi-gcc -static' +mkdir ../../../libreboot_util/ich9deblob/armv7l +mv ich9deblob ../../../libreboot_util/ich9deblob/armv7l/ +mv ich9gen ../../../libreboot_util/ich9deblob/armv7l/ + +cd ../ +rm -rf ich9deblob +mv ich9deblob_ ich9deblob +cd ../../ + +# ----------------- +# nvramtool related +# ----------------- +# build nvramtool, compiled (statically linked) and include the binary +cd coreboot/util/ +cp -r nvramtool nvramtool_ +cd nvramtool/ +make clean +make SHARED=0 CC='gcc -static' +mkdir ../../../libreboot_util/nvramtool + +mkdir ../../../libreboot_util/nvramtool/"$arch" +mv nvramtool ../../../libreboot_util/nvramtool/"$arch"/ + +if [ "$arch" = "x86_64" ] + then + # Now build 32-bit binaries + make clean + make SHARED=0 CC='gcc -static -m32' + mkdir ../../../libreboot_util/nvramtool/i686 + mv nvramtool ../../../libreboot_util/nvramtool/i686/ +fi + +cd ../ +rm -rf nvramtool +mv nvramtool_ nvramtool +cd ../../ + +# ----------------- +# cbmem related +# ----------------- +# build cbmem, compiled (statically linked) and include the binary +cd coreboot/util/ +cp -r cbmem cbmem_ +cd cbmem/ +make clean +make SHARED=0 CC='gcc -static' +mkdir ../../../libreboot_util/cbmem + +mkdir ../../../libreboot_util/cbmem/"$arch" +mv cbmem ../../../libreboot_util/cbmem/"$arch"/ + +if [ "$arch" = "x86_64" ] + then + # Now build 32-bit binaries + make clean + make SHARED=0 CC='gcc -static -m32' + mkdir ../../../libreboot_util/cbmem/i686 + mv cbmem ../../../libreboot_util/cbmem/i686/ +fi +cd ../ +rm -rf cbmem +mv cbmem_ cbmem +cd ../../ + +# --------------------- +# Include documentation +# --------------------- +cp -r docs/ libreboot_util/ + +# ------------- +# Miscellaneous +# ------------- +# include X60 cmos.layout file +mkdir libreboot_util/cmoslayouts/ +cp coreboot/src/mainboard/apple/macbook21/cmos.layout libreboot_util/cmoslayouts/macbook21cmos.layout +cp coreboot/src/mainboard/lenovo/x60/cmos.layout libreboot_util/cmoslayouts/x60cmos.layout +cp coreboot/src/mainboard/lenovo/t60/cmos.layout libreboot_util/cmoslayouts/t60cmos.layout +cp coreboot/src/mainboard/lenovo/x200/cmos.layout libreboot_util/cmoslayouts/x200cmos.layout + +# Flashing script +cp flash libreboot_util/ + +# ich9macchange script (change MAC address on X200 ROMs, using ich9gen) +cp ich9macchange libreboot_util/ + +# for changing the GRUB background +cp grub-background libreboot_util/ + +# ### Create the release tarballs +# ---------------------------------------------------------------------------------------------------------------------------- + +# Also delete the manifest +rm -f libreboot_src/releasefilelist +rm -f libreboot_util/releasefilelist +rm -f releasefilelist + +# We don't want to encourage development +# to happen on the release archives. +# Development goes in git. These scripts are +# not needed in libreboot_src, because +# the files that they download are already included +rm -rf libreboot_src/resources/scripts/helpers/build/release +rm -f libreboot_src/download +rm -rf libreboot_src/resources/scripts/helpers/download/ + +# ich9deblob: there are certain files in there +# that the user most likely does not want to share +rm -f libreboot_src/resources/utilities/ich9deblob/deblobbed_descriptor.bin +rm -f libreboot_src/resources/utilities/ich9deblob/factory.rom +rm -f libreboot_src/resources/utilities/ich9deblob/libreboot.rom +rm -f libreboot_src/resources/utilities/ich9deblob/mkdescriptor.c +rm -f libreboot_src/resources/utilities/ich9deblob/mkdescriptor.h +rm -f libreboot_src/resources/utilities/ich9deblob/mkgbe.c +rm -f libreboot_src/resources/utilities/ich9deblob/mkgbe.h +rm -f libreboot_src/resources/utilities/ich9deblob/ich9fdgbe_4m.bin +rm -f libreboot_src/resources/utilities/ich9deblob/ich9fdgbe_8m.bin +rm -f libreboot_src/mkgbe.c +rm -f libreboot_src/mkgbe.h +rm -f libreboot_src/ich9fdgbe_8m.bin +rm -f libreboot_src/ich9fdgbe_4m.bin + +# delete the "tobuild" +rm -rf libreboot_src/tobuild/ +rm -f libreboot_src/tobuild.tar.xz + +# mention the commit ID (libreboot, git) in the release archives +cat commitid > libreboot_src/commitid +cat commitid > libreboot_util/commitid + +# create lzma compressed src archive +tar -c libreboot_src | xz -9e >libreboot_src.tar.xz + +# create lzma compressed util archive +tar -c libreboot_util | xz -9e >libreboot_util.tar.xz + +# ### Delete the uncompressed release directories +# ---------------------------------------------------------------------------------------------------------------------------- + +# The uncompressed archives are no longer needed +rm -rf libreboot_src +rm -rf libreboot_util + +# For those utilities that have to be built on the target +./build external source + +# DONE. See libreboot_src.tar.xz and libreboot_util.tar.xz +# NOTE FOR FCHMMR: don't forget to add ARM binaries for flashrom +# NOTE FOR FCHMMR: don't forget to add i386 binaries for flashrom/bucts +# The tarball tobuild.tar.xz has been created with everything needed to build these utilities + +# ------------------- DONE ---------------------- |