From 6c2f9cf3452f119f11950b29482e77fab52c0a38 Mon Sep 17 00:00:00 2001 From: Enji Cooper Date: Thu, 28 Nov 2024 13:06:34 -0800 Subject: [PATCH] admin/make-release.sh: automate release creation This does the absolute bare minimum to produce a release. This logic best resembles the expectations for legacy (pre-0.5) releases of Lutok. Various files are omitted as they are not required in order to build from a full `autoreconf`'ed source distribution. Signed-off-by: Enji Cooper --- .gitignore | 1 + admin/make-release.exclude | 11 +++++++++++ admin/make-release.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 admin/make-release.exclude create mode 100755 admin/make-release.sh diff --git a/.gitignore b/.gitignore index 5c20108..89876eb 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ config.status configure libtool lutok.pc +releases stamp-h1 diff --git a/admin/make-release.exclude b/admin/make-release.exclude new file mode 100644 index 0000000..4daea5b --- /dev/null +++ b/admin/make-release.exclude @@ -0,0 +1,11 @@ +*/.cirrus.yml +*/.github/* +*/.gitignore +*/.travis.yml +*/admin* +*/autom4te.cache/* +*/m4/libtool.m4 +*/m4/ltoptions.m4 +*/m4/ltsugar.m4 +*/m4/ltversion.m4 +*/m4/lt~obsolete.m4 diff --git a/admin/make-release.sh b/admin/make-release.sh new file mode 100755 index 0000000..8ead546 --- /dev/null +++ b/admin/make-release.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Create release artifacts from a release tag. +# +# Example: +# ./admin/make-release.sh atf-0.23 + +set -eux + +tag=$1 + +cd "$(dirname "$(dirname "$0")")" + +mkdir -p releases +release_root=$(realpath releases) + +release_dir="${release_root}/${tag}" +release_artifact="${release_root}/${tag}.tar.gz" + +rm -Rf "${release_dir}" +mkdir -p "${release_dir}" +git archive "${tag}" | tar xzvf - -C "${release_dir}" +cd "${release_dir}" +autoreconf -is +cd "${release_root}" +bsdtar \ + --exclude-from=${release_dir}/admin/make-release.exclude \ + --uname "" --gname "" \ + --uid 0 --gid 0 \ + -cvpzf "${release_artifact}" "${tag}" +sha256 "${release_artifact##*/}" > "${release_artifact}.sha256"