diff options
Diffstat (limited to 'resources/scripts/build/release/src')
-rwxr-xr-x | resources/scripts/build/release/src | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/resources/scripts/build/release/src b/resources/scripts/build/release/src new file mode 100755 index 00000000..dc8bc75f --- /dev/null +++ b/resources/scripts/build/release/src @@ -0,0 +1,120 @@ +#!/bin/bash + +# +# helper script: generate release archive (source code) +# +# Copyright (C) 2020,2021 Leah Rowe <info@minifree.org> +# +# 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 working directory is the root +# of git or release archive + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +projectname="$(cat projectname)" + +version="version-unknown" +if [ -f version ]; then + version="$(cat version)" +fi +versiondate="version-date-unknown" +if [ -f versiondate ]; then + versiondate="$(cat versiondate)" +fi + +reldir="release/${version}" +dirname="${projectname}-${version}_src" +srcdir="${reldir}/${dirname}" + +printf "Building source code archive, version %s\n" "${version}" + +[ ! -d "release/" ] && mkdir -p release/ +[ ! -d "${reldir}/" ] && mkdir -p "${reldir}/" +[ -d "${srcdir}/" ] && \ + rm -Rf "${srcdir}/" +[ -f "${srcdir}.tar.xz" ] && \ + rm -f "${srcdir}.tar.xz/" + +mkdir -p "${srcdir}/" + +printf "%s" "${version}" > "${srcdir}"/version + +modlist="coreboot flashrom grub memtest86plus seabios ich9utils" +dirlist="resources" +filelist="download build README COPYING Makefile" + +if [ ! -d "coreboot/default/payloads/external/tianocore/tianocore" ]; then + ./download tianocore +fi + +for modname in ${modlist}; do + if [ ! -d "${modname}/" ]; then + ./download ${modname} + fi +done + +for dir in ${modlist} ${dirlist}; do + cp -R "${dir}/" "${srcdir}/" +done + +for i in ${filelist}; do + if [ ! -f "${i}" ]; then + printf "build/release/src: ERROR: file '%s' does not exist.\n" "${i}" + rm -Rf "${srcdir}" + exit 1 + fi + cp ${i} "${srcdir}/" +done + +( + cd "${srcdir}/coreboot/" + for i in *; do + [ ! -d "${i}" ] && continue + ( + cd "${i}/" + make distclean + ) + done +) + +( + cd "${srcdir}/" + ./build clean all + + rm -Rf coreboot/coreboot/ + rm -Rf .git* */.git* coreboot/*/.git* coreboot/*/3rdparty/*/.git* + rm -Rf coreboot/*/util/nvidia/cbootimage/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/CryptoPkg/Library/OpensslLib/openssl/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/ArmPkg/Library/ArmSoftFloatLib/"berkeley-softfloat-3"/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/UnitTestFrameworkPkg/Library/CmockaLib/cmocka/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.git* + rm -Rf coreboot/*/payloads/external/tianocore/tianocore/BaseTools/Source/C/BrotliCompress/brotli/.git* +) + +( +cd "${reldir}/" +printf "%s\n" "${version}" > "${dirname}/version" +printf "%s\n" "${versiondate}" > "${dirname}/versiondate" +printf "%s\n" "${projectname}" > "${dirname}/projectname" +tar -c "${dirname}/" | xz -9e >"${dirname}.tar.xz" +rm -Rf "${dirname}/" +) + +printf "Source code archive available at %s.tar.xz\n\n" "${srcdir}" + |