From 1a92b1b84e09956ad262587dc21209531c43665e Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sun, 31 May 2015 17:21:37 -0400 Subject: build/release/src: New script This new script: * Doesn't generate a manifest. * Changes directories as little as possible. * Uses git-describe to generate a version string instead of getting the HEAD commit ID from the master branch (which assumed the release was being made from master). * Optionally includes a version string in the archive file name. --- (limited to 'resources/scripts/helpers/build/release/src') diff --git a/resources/scripts/helpers/build/release/src b/resources/scripts/helpers/build/release/src new file mode 100755 index 0000000..7bd53b1 --- /dev/null +++ b/resources/scripts/helpers/build/release/src @@ -0,0 +1,113 @@ +#!/bin/sh + +# +# helper script: generate the source release archive +# +# Copyright (C) 2014, 2015 Francis Rowe +# Copyright (C) 2015 Patrick "P. J." McDermott +# +# 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 . +# + +[ "x${DEBUG+set}" = 'xset' ] && set -v +set -u -e + +printf 'Building the source release archive\n' + +version="$(git describe --tags HEAD)" +if [ "x${VERSION_IN_FILENAMES+set}" = 'xset' ]; then + distdir="libreboot_${version}_src" +else + distdir='libreboot_src' +fi + +printf 'Deleting old source release archives\n' +rm -f "${distdir}.tar.xz" +rm -f "release/${distdir}.tar.xz" +rm -Rf "${distdir}/" + +mkdir "${distdir}/" + +printf 'Copying sources to %s/\n' "${distdir}" +for resource in *; do + case "${resource}" in + libreboot_* | release | tobuild* | docs);; + *) cp -R "${resource}" "${distdir}/";; + esac +done + +printf '%s\n' "${version}" >"${distdir}/version" + +printf 'Cleaning files in %s/\n' "${distdir}" + +# Clean old builds. +(cd "${distdir}/" && ./build clean all) +printf '\n' + +# Delete Git repositories and properties and Subversion administrative +# directories and properties. +rm -Rf "${distdir}/bucts/".git* +rm -Rf "${distdir}/flashrom/".svn* +rm -Rf "${distdir}/grub/".git* + +# Delete useless files. +rm -Rf "${distdir}/TODO/" +rm -f "${distdir}/push" + +# Delete the deblob scripts. +# Since the source archive doesn't distribute the download scripts and already +# comes with a deblobbed coreboot, the deblobbing scripts aren't needed at all. +rm -Rf "${distdir}/resources/utilities/coreboot-libre/" + +# We don't want to encourage development to happen on the release archives. +# Development goes in Git. These scripts are not needed in the source archive, +# because the files that they download are already included and trimmed. +rm -Rf "${distdir}/resources/scripts/helpers/build/release/" +rm -f "${distdir}/download" +rm -Rf "${distdir}/resources/scripts/helpers/download/" +rm -Rf "${distdir}/resources/scripts/helpers/build/trim/" + +# Patches are not needed, because they are already applied to coreboot sources. +rm -Rf "${distdir}/resources/libreboot/patch/" + +# coreboot's crossgcc archives are distributed separately. +rm -Rf "${distdir}/coreboot/util/crossgcc/tarballs/" + +# ich9deblob: There are certain files in there that the user most likely does +# not want to share. +rm -f "${distdir}/resources/utilities/ich9deblob/deblobbed_descriptor.bin" +rm -f "${distdir}/resources/utilities/ich9deblob/factory.rom" +rm -f "${distdir}/resources/utilities/ich9deblob/libreboot.rom" +rm -f "${distdir}/resources/utilities/ich9deblob/mkdescriptor.c" +rm -f "${distdir}/resources/utilities/ich9deblob/mkdescriptor.h" +rm -f "${distdir}/resources/utilities/ich9deblob/mkgbe.c" +rm -f "${distdir}/resources/utilities/ich9deblob/mkgbe.h" +rm -f "${distdir}/resources/utilities/ich9deblob/ich9fdgbe_4m.bin" +rm -f "${distdir}/resources/utilities/ich9deblob/ich9fdgbe_8m.bin" +rm -f "${distdir}/resources/utilities/ich9deblob/demefactory_4kdescriptor.bin" +rm -f "${distdir}/mkgbe.c" +rm -f "${distdir}/mkgbe.h" +rm -f "${distdir}/ich9fdgbe_8m.bin" +rm -f "${distdir}/ich9fdgbe_4m.bin" + +printf 'Creating %s.tar.xz\n' "${distdir}" +tar -c "${distdir}/" | xz -9e >"${distdir}.tar.xz" + +# Move the archives to the release/ directory. +[ -d release/ ] || mkdir release/ +mv "${distdir}.tar.xz" release/ + +rm -Rf "${distdir}/" + +printf 'Source release archives are stored in release/\n' -- cgit v0.9.1