Browse Source
One TBD left is the signing of the tarballs. Signed-off-by: Alexey Neyman <stilor@att.net>dev-linux

5 changed files with 110 additions and 3 deletions
@ -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. |
@ -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 |
Loading…
Reference in new issue