123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- #!/bin/bash
- #
- # build-release script: generates libreboot_bin and libreboot_src 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/>.
- #
- 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
- # MAKE SURE THAT YOU RAN "buildall" OR "builddeps" *AT LEAST ONCE*
- # You should also run the 'build' script before running this
- # ### Delete old archives before continuing
- # ----------------------------------------------------------------------------------------------------------------------------
- echo "Deleting old release archives"
- rm -f libreboot_src.tar.xz
- rm -f libreboot_bin.tar.xz
- # Get manifest which will be used to copy everything
- find -maxdepth 1 > releasefilelist
- # ### Prepare libreboot_src archive ready for release
- # ----------------------------------------------------------------------------------------------------------------------------
- echo "Preparing libreboot_src release archive"
- mkdir libreboot_src
- for resource in $(cat releasefilelist)
- do
- if [ "$resource" != "." ]
- then
- cp -r $resource libreboot_src
- fi
- done
- cd libreboot_src/
- # clean everything
- ./cleandeps
- # 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*
- # # bucts needs .git to stay, otherwise it won't compile
- # # We don't need .git* (please submit all upstreamable changes directly to bucts upstream)
- # # removing them, to reduce the size of the archive
- # cd bucts
- # rm -rf .git
- # rm -rf .gitignore
- # cd ../
- # # it was found to cause issues when deleting:
- # # GIT_DISCOVERY_ACROSS_FILESYSTEM not set
- # coreboot:
- # the instructions for coreboot remain in getgb 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 ../
- # SeaBIOS:
- cd seabios/
- rm -rf .git
- rm -f .gitignore
- cd ../
- cd ../
- # ### Prepare libreboot_bin archive ready for release
- # ----------------------------------------------------------------------------------------------------------------------------
- echo "Preparing libreboot_bin release archive"
- mkdir libreboot_bin
- # ---------------------------------------
- # Include the ROM's in the binary archive
- # ---------------------------------------
- cp -r bin libreboot_bin/
- # ---------------
- # SeaBIOS related
- # ---------------
- # Include SeaBIOS and SeaVGABIOS option ROM in the binary archive
- cp seabios/out/vgabios.bin libreboot_bin/
- cp seabios/out/bios.bin.elf libreboot_bin/
- # Add the script for it
- cp addseabios libreboot_bin/
- # Menu entry to be added to grub configs
- cp resources/grub/config/seabios.cfg libreboot_bin/
- # --------------
- # 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
- ./builddeps-bucts static
- mkdir libreboot_bin/bucts
- mkdir libreboot_bin/bucts/"$arch"
- mv bucts/bucts libreboot_bin/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
- ./builddeps-flashrom static
- mkdir libreboot_bin/flashrom
- cd flashrom/
- mkdir ../libreboot_bin/flashrom/"$arch"
- mv flashrom ../libreboot_bin/flashrom/"$arch"
- mv flashrom_lenovobios_sst ../libreboot_bin/flashrom/"$arch"
- mv flashrom_lenovobios_macronix ../libreboot_bin/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_bin/cbfstool
- mkdir ../../../libreboot_bin/cbfstool/"$arch"
- mv cbfstool ../../../libreboot_bin/cbfstool/"$arch"/
- mv rmodtool ../../../libreboot_bin/cbfstool/"$arch"/
- if [ "$arch" = "x86_64" ]
- then
- # Now build 32-bit binaries
- make clean
- make SHARED=0 CC='gcc -static -m32'
- mkdir ../../../libreboot_bin/cbfstool/i686
- mv cbfstool ../../../libreboot_bin/cbfstool/i686/
- mv rmodtool ../../../libreboot_bin/cbfstool/i686/
- fi
- # cross-compile for ARM
- make clean
- make SHARED=0 CC='arm-linux-gnueabi-gcc -static'
- mkdir ../../../libreboot_bin/cbfstool/armv7l
- mv cbfstool ../../../libreboot_bin/cbfstool/armv7l/
- mv rmodtool ../../../libreboot_bin/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_bin/ich9deblob
- mkdir ../../../libreboot_bin/ich9deblob/"$arch"
- mv ich9deblob ../../../libreboot_bin/ich9deblob/"$arch"/
- mv ich9gen ../../../libreboot_bin/ich9deblob/"$arch"/
- if [ "$arch" = "x86_64" ]
- then
- # Now build 32-bit binaries
- make clean
- make SHARED=0 CC='gcc -static -m32'
- mkdir ../../../libreboot_bin/ich9deblob/i686
- mv ich9deblob ../../../libreboot_bin/ich9deblob/i686/
- mv ich9gen ../../../libreboot_bin/ich9deblob/i686/
- fi
- # cross-compile for ARM
- make clean
- make SHARED=0 CC='arm-linux-gnueabi-gcc -static'
- mkdir ../../../libreboot_bin/ich9deblob/armv7l
- mv ich9deblob ../../../libreboot_bin/ich9deblob/armv7l/
- mv ich9gen ../../../libreboot_bin/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_bin/nvramtool
- mkdir ../../../libreboot_bin/nvramtool/"$arch"
- mv nvramtool ../../../libreboot_bin/nvramtool/"$arch"/
- if [ "$arch" = "x86_64" ]
- then
- # Now build 32-bit binaries
- make clean
- make SHARED=0 CC='gcc -static -m32'
- mkdir ../../../libreboot_bin/nvramtool/i686
- mv nvramtool ../../../libreboot_bin/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_bin/cbmem
- mkdir ../../../libreboot_bin/cbmem/"$arch"
- mv cbmem ../../../libreboot_bin/cbmem/"$arch"/
- if [ "$arch" = "x86_64" ]
- then
- # Now build 32-bit binaries
- make clean
- make SHARED=0 CC='gcc -static -m32'
- mkdir ../../../libreboot_bin/cbmem/i686
- mv cbmem ../../../libreboot_bin/cbmem/i686/
- fi
- cd ../
- rm -rf cbmem
- mv cbmem_ cbmem
- cd ../../
- # ---------------------
- # Include documentation
- # ---------------------
- cp -r docs libreboot_bin/
- # -----------------------------------------------------------------------
- # X60/X60T/T60: Script for setting up powertop (kills high pitched noise)
- # -----------------------------------------------------------------------
- cp powertop.trisquel6 libreboot_bin/
- cp powertop.trisquel6.init libreboot_bin/
- cp powertop.trisquel7 libreboot_bin/
- cp powertop.trisquel7.init libreboot_bin/
- # -------------
- # Miscellaneous
- # -------------
- # include X60 cmos.layout file
- cp coreboot/src/mainboard/lenovo/x60/cmos.layout libreboot_bin/x60cmos.layout
- cp coreboot/src/mainboard/lenovo/t60/cmos.layout libreboot_bin/t60cmos.layout
- cp coreboot/src/mainboard/apple/macbook21/cmos.layout libreboot_bin/macbook21cmos.layout
- # FLASHING SCRIPTS
- # Flashrom script (makes flashing easier: ./flash path/to/libreboot.rom)
- cp flash libreboot_bin/
- # Brick-prone flashing script (for mismatching board names, when they change)
- cp forceflash libreboot_bin/
- # X60/T60: so that the user can use libreboot_bin to overwrite lenovo bios with libreboot
- cp lenovobios_firstflash libreboot_bin/
- cp lenovobios_secondflash libreboot_bin/
- # For initial flashing on macbook21/11
- cp macbook21_firstflash libreboot_bin/
- # ich9macchange script (change MAC address on X200 ROMs, using ich9gen)
- cp ich9macchange libreboot_bin/
- # for changing the GRUB background
- cp grub-background libreboot_bin/
- # ### Create the release tarballs
- # ----------------------------------------------------------------------------------------------------------------------------
- # Also delete the manifest
- rm -f libreboot_src/releasefilelist
- rm -f libreboot_bin/releasefilelist
- rm -f releasefilelist
- # We don't want to encourage development
- # to happen on the release archives.
- # Development goes in git.
- rm -f libreboot_src/build-release
- rm -f libreboot_src/getall
- rm -f libreboot_src/getbucts
- rm -f libreboot_src/getcb
- rm -f libreboot_src/getflashrom
- rm -f libreboot_src/getgrub
- rm -f libreboot_src/getgrubinvaders
- rm -f libreboot_src/getmt86
- rm -f libreboot_src/getseabios
- # 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
- # delete the old commitid file
- rm -f commitid
- rm -f libreboot_src/commitid
- # create file showing the commit ID from git for this archive.
- cat .git/refs/heads/master > commitid
- # include it in the release archives
- cp commitid libreboot_src/
- cp commitid libreboot_bin/
- echo "Creating compressed libreboot_src release archive"
- # create lzma compressed src archive
- tar cfJ libreboot_src.tar.xz libreboot_src
- echo "Creating compressed libreboot_bin release archive"
- # create lzma compressed bin archive
- tar cfJ libreboot_bin.tar.xz libreboot_bin
- # ### Delete the uncompressed release directories
- # ----------------------------------------------------------------------------------------------------------------------------
- echo "Deleted the uncompressed release archives"
- rm -rf libreboot_src
- rm -rf libreboot_bin
- # For those utilities that have to be built on the target
- ./mkextbuild
- # DONE. See libreboot_src.tar.xz and libreboot_bin.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 ----------------------
|