From de4433298a5e25512aee559c1cb8f1d369aea611 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Tue, 21 Mar 2017 13:58:13 -0700 Subject: Add a release creation script One TBD left is the signing of the tarballs. Signed-off-by: Alexey Neyman diff --git a/.gitignore b/.gitignore index 98480b0..daedcdd 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ build.log targets/ # .. and log for 'build-all' .build-all +# .. and release creation +release diff --git a/Makefile.in b/Makefile.in index 4304098..3d2c607 100644 --- a/Makefile.in +++ b/Makefile.in @@ -360,8 +360,8 @@ install-doc-message: install-doc-real: $(DESTDIR)$(docdir) - @echo " INST 'docs/*.txt'" - @for doc_file in docs/*.txt; do \ + @echo " INST 'docs/manual/*.md'" + @for doc_file in docs/manual/*.md; do \ $(install) -m 644 "$${doc_file}" "$(DESTDIR)$(docdir)"; \ done diff --git a/maintainer/README b/maintainer/README new file mode 100644 index 0000000..d0d174a --- /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 0000000..b04747e --- /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 diff --git a/scripts/functions b/scripts/functions index ab141d5..0ba96b4 100644 --- a/scripts/functions +++ b/scripts/functions @@ -422,7 +422,7 @@ CT_SanitizeVarDir() { } if (!seencomp && !isabs && !trail) { # Eliminated all components, but no trailing slash - - # if the result is appened with /foo, must not become absolute + # if the result is appended with /foo, must not become absolute printf "."; } if ((!seencomp && isabs) || (seencomp && trail)) { -- cgit v0.10.2-6-g49f6