diff options
author | Alexey Neyman <stilor@att.net> | 2017-03-21 13:58:13 -0700 |
---|---|---|
committer | Alexey Neyman <stilor@att.net> | 2017-03-21 14:04:12 -0700 |
commit | de4433298a5e25512aee559c1cb8f1d369aea611 (patch) | |
tree | a60f812c07aa3f59eafd2c9fd34e212f3af3dde0 /maintainer | |
parent | 3906acc00779dd31df84d4f555ecbc0d920e89f3 (diff) | |
download | crosstool-ng-de4433298a5e25512aee559c1cb8f1d369aea611.tar.gz crosstool-ng-de4433298a5e25512aee559c1cb8f1d369aea611.tar.bz2 crosstool-ng-de4433298a5e25512aee559c1cb8f1d369aea611.zip |
Add a release creation script
One TBD left is the signing of the tarballs.
Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'maintainer')
-rw-r--r-- | maintainer/README | 5 | ||||
-rwxr-xr-x | maintainer/create-release.sh | 100 |
2 files changed, 105 insertions, 0 deletions
diff --git a/maintainer/README b/maintainer/README new file mode 100644 index 00000000..d0d174a5 --- /dev/null +++ b/maintainer/README @@ -0,0 +1,5 @@ +These scripts are not of much interest to the end user. +They are used to automate everyday maintenance tasks for crosstool-NG. As such, +they are not subject to the same level of portability requirements - they can +expect to be run on a fairly modern Linux distribution, with bash, GNU sed and +grep, etc. diff --git a/maintainer/create-release.sh b/maintainer/create-release.sh new file mode 100755 index 00000000..b04747e1 --- /dev/null +++ b/maintainer/create-release.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +# Configurable portions +docs_git=https://github.com/crosstool-ng/crosstool-ng.github.io.git +docs_subdir=_pages/docs +formats=( "bz2" "xz" ) +declare -A tar_opt=( ["bz2"]=j ["xz"]=J ) +digests=( md5 sha1 sha512 ) + +do_trace() +{ + echo " --> $@" >&2 +} + +do_abort() +{ + echo "ERROR: $@" >&2 + exit 1 +} + +# Go to the top-level +topdir=`git rev-parse --show-toplevel` +if [ -z "${topdir}" ]; then + do_abort "Not in the Git clone" +fi +cd "${topdir}" + +# Determine the version. Replace the dashes with dots, as packaging +# systems don't expect dashes in versions, but they're ok in package +# name. +version=`git describe | sed -r -e 's,-,.,g' -e 's,^crosstool\.ng\.,crosstool-ng-,'` +do_trace "Creating release for ${version}" + +# Create the base working directory +if [ -e "release" -a ! -d "release" ]; then + do_abort "File 'release' already exists but is not a directory" +fi +mkdir -p "release" + +# Copy the base stuff +do_trace "Copying crosstool-NG" +rm -rf "release/${version}" +git archive --prefix="${version}/" HEAD | tar xf - -C "release" + +# Clone a repository for docs. Github does not support 'git archive --remote='. +do_trace "Checking out docs" +rm -rf "release/site" +git clone --depth=1 "${docs_git}" "release/site" + +# The rest of modifications are inside the release directory +cd "release/${version}" + +# Copy the docs instead of the MANUAL_ONLINE placeholder +do_trace "Replacing docs" +rm "docs/MANUAL_ONLINE" +mkdir -p "docs/manual" +for i in "../site/${docs_subdir}/"*.md; do + awk ' +BEGIN { skip=0; } + { + if ($0=="---") { + if (NR==1) { + skip=1 + next + } + else if (skip) { + skip=0 + next + } + } + if (!skip) { + print $0 + } + } +' < "${i}" > "docs/manual/${i##*/}" +done + +# Run bootstrap before it is removed +do_trace "Bootstrapping" +./bootstrap +rm -f bootstrap + +# Remove other things not for the end user +do_trace "Removing unreleased files" +rm -f .travis.* +find -name .gitignore | xargs rm +rm -rf autom4te.cache maintainer + +# Go back to top level +cd ../.. + +# Package up +do_trace "Packaging" +for fmt in "${formats[@]}"; do + tar c${tar_opt[$fmt]}f "release/${version}.tar.${fmt}" -C "release" "${version}" + for h in "${digests[@]}"; do + ${h}sum "release/${version}.tar.${fmt}" > "release/${version}.tar.${fmt}.${h}" + done + # TBD sign +done |