-#!/bin/sh -e
+#!/bin/bash
# release.sh: openocd release process automation
# Copyright (C) 2009 by Zachary T Welch <zw@superlucidity.net>
# Release under the GNU GPL v2 (or later versions).
+# FIXME Remove more bash-isms. Fix errors making "ash -e" lose.
+
## set these to control the build process
#CONFIG_OPTS=""
#MAKE_OPTS=""
## The default is the current user name, as found by the 'id' command.
#RELEASE_TAG="$(id -un)"
-source "tools/release/helpers.sh"
+. "tools/release/helpers.sh"
VERSION_SH="tools/release/version.sh"
build Compiles the project; runs configure, if needed.
Packaging Commands:
- changelog Generate a new ChangeLog using ${SCM}2cl.
package Produce new distributable source archives.
stage Move archives to staging area for upload.
maybe_build() { [ -f "src/openocd" ] || do_build; }
do_build_clean() { [ -f Makefile ] && make maintainer-clean >/dev/null; }
-do_changelog() {
- echo "Creating ChangeLog..."
- local CMD=tools/git2cl/git2cl
- eval ${CMD} ${OPTS} > ChangeLog
-}
-do_changelog_clean() {
- git checkout ChangeLog
-}
do_package() {
- do_changelog
maybe_build
echo "Building distribution packages..."
make ${MAKE_OPTS} distcheck 2>&1 | perl tools/logger.pl > "release-pkg.log"
mv -v "${FILE}" archives/
done
cp -a NEWS archives/
- cp -a ChangeLog archives/
}
do_stage_clean() { rm -v -f -r archives; }
do_clean() {
do_build_clean
do_package_clean
- do_changelog_clean
rm -v -f release-*.log
}
do_clean_all() {
do_version_commit() {
[ "$*" ] || die "usage: $0 commit <message>"
- git add configure.in || die "error: no version changes to commit"
- git commit -q -m "$*" configure.in
+ git add configure.ac || die "error: no version changes to commit"
+ git commit -q -m "$*" configure.ac
}
do_version_finalize() {
git mv "NEWS" "NEWS-${RELEASE_VERSION}"
cat >NEWS <<NEWS
-This file should include items worth mentioning in the
-OpenOCD ${NEXT_RELEASE_VERSION} source archive release.
-
-The following areas of OpenOCD functionality changed in this release:
+This file includes highlights of the changes made in the
+OpenOCD ${NEXT_RELEASE_VERSION} source archive release. See the
+repository history for details about what changed, including
+bugfixes and other issues not mentioned here.
JTAG Layer:
+Boundary Scan:
Target Layer:
Flash Layer:
Board, Target, and Interface Configuration Scripts:
Build and Release:
For more details about what has changed since the last release,
-see the ChangeLog associated with this source archive. For older NEWS,
-see the NEWS files associated with each release (i.e. NEWS-<version>).
+see the git repository history. With gitweb, you can browse that
+in various levels of detail.
+
+For older NEWS, see the NEWS files associated with each release
+(i.e. NEWS-<version>).
For more information about contributing test reports, bug fixes, or new
features and device support, please read the new Developer Manual (or
-the BUGS and PATCHES files in the source archive).
+the BUGS and PATCHES.txt files in the source archive).
NEWS
git add NEWS
git branch -d "${OLD_BRANCH}"
}
-do_release_step_0() { do_release_step_branch; }
-do_release_step_1() { do_release_step_tag; }
-do_release_step_2() { do_release_step_bump; }
-do_release_step_3() { do_release_step_news; }
-do_release_step_4() { do_release_step_package; }
-do_release_step_5() { do_release_step_rebranch; }
-
do_release_setup() {
echo "Starting $CMD for ${RELEASE_VERSION}..."
[ "${RELEASE_TYPE}" ] || \
do_branch() {
do_release_setup
local i=
- for i in 0 2 5; do
+ for i in branch bump rebranch; do
"do_release_step_${i}"
done
}
do_release_setup
do_release_check
local i=
- for i in $(seq 0 5); do
+ for i in branch tag bump news package rebranch; do
"do_release_step_${i}"
done
}
maybe_bootstrap
maybe_configure
do_clean_all
- git checkout configure.in
+ git checkout configure.ac
}
LONGOPTS="fast,final,start-rc,next-tag:,next:,help"
[ "${CMD}" ] || usage
shift
-ACTION_CMDS="bootstrap|configure|build|changelog|package|stage|clean"
+ACTION_CMDS="bootstrap|configure|build|package|stage|clean"
MISC_CMDS="all|info|release|branch|reset|help|usage"
-CLEAN_CMDS="build_clean|changelog_clean|package_clean|stage_clean|clean_all"
+CLEAN_CMDS="build_clean|package_clean|stage_clean|clean_all"
CMDS="|${ACTION_CMDS}|${CLEAN_CMDS}|${MISC_CMDS}|"
is_command() { echo "${CMDS}" | grep "|$1|" >/dev/null; }