summaryrefslogtreecommitdiff
path: root/resources/scripts/build/release/src
diff options
context:
space:
mode:
Diffstat (limited to 'resources/scripts/build/release/src')
-rwxr-xr-xresources/scripts/build/release/src120
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}"
+