summaryrefslogtreecommitdiffstats
path: root/resources/scripts/helpers/build/release
diff options
context:
space:
mode:
Diffstat (limited to 'resources/scripts/helpers/build/release')
-rwxr-xr-xresources/scripts/helpers/build/release/archives388
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 ----------------------