| #!/bin/sh -e |
| |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| # use this file except in compliance with the License. You may obtain a copy of |
| # the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| if test -n "$1"; then |
| version=$1 |
| else |
| echo "error: no version" |
| exit |
| fi |
| |
| if test -n "$2"; then |
| candidate=$2 |
| else |
| echo "error: no candidate number" |
| exit |
| fi |
| |
| if test -n "$3"; then |
| gpg_key=$3 |
| else |
| echo "error: no GPG key" |
| exit |
| fi |
| |
| log () { |
| printf "\033[1;31m$1\033[0m\n" |
| } |
| |
| cd `dirname $0` |
| |
| basename=`basename $0` |
| |
| log "Creating temporary directory..." |
| |
| tmp_dir=`mktemp -d /tmp/$basename.XXXXXX` || exit 1 |
| |
| echo $tmp_dir |
| |
| build_file=$tmp_dir/build.mk |
| |
| cat > $build_file <<EOF |
| GIR_URL=https://git-wip-us.apache.org/repos/asf/couchdb.git |
| |
| SVN_DEV_URL=https://dist.apache.org/repos/dist/dev/couchdb |
| |
| SVN_RELEASE_URL=https://dist.apache.org/repos/dist/release/couchdb |
| |
| TMP_DIR=$tmp_dir |
| |
| GIT_DIR=\$(TMP_DIR)/git |
| |
| RC_FILE=\$(TMP_DIR)/rc.txt |
| |
| ISH_FILE=\$(TMP_DIR)/ish.txt |
| |
| VERSION=$version |
| |
| CANDIDATE=$candidate |
| |
| GPG_KEY=$gpg_key |
| |
| PACKAGE=apache-couchdb-\$(VERSION) |
| |
| VERSION_DEV_URL=\$(SVN_DEV_URL)/source/\$(VERSION) |
| |
| VERSION_RELEASE_URL=\$(SVN_RELEASE_URL)/source/\$(VERSION) |
| |
| CANDIDATE_DEV_URL=\$(VERSION_DEV_URL)/rc.\$(CANDIDATE) |
| |
| CANDIDATE_ISH_DEV_URL=\$(CANDIDATE_DEV_URL)/\$(PACKAGE).tar.gz.ish |
| |
| COMMIT_MSG_TAG="Apache CouchDB \$(VERSION)" |
| |
| COMMIT_MSG_DIR="Copy \$(VERSION) source dir" |
| |
| all: |
| |
| release: |
| svn cp \$(CANDIDATE_DEV_URL) \$(VERSION_RELEASE_URL) \ |
| -m \$(COMMIT_MSG_DIR) |
| echo "Release dist directory: \$(VERSION_RELEASE_URL)" |
| |
| tag: \$(GIT_DIR) |
| cd \$(GIT_DIR) && \ |
| git tag -u \$(GPG_KEY) \$(VERSION) \ |
| \`cat \$(ISH_FILE)\` -m \$(COMMIT_MSG_TAG) |
| cd \$(GIT_DIR) && \ |
| git push origin \$(VERSION) |
| |
| \$(GIT_DIR): check |
| git clone \$(GIR_URL) \$@ |
| |
| check: \$(ISH_FILE) |
| test "\`cat \$(RC_FILE)\`" = "rc.\$(CANDIDATE)/" |
| svn info \$(VERSION_RELEASE_URL) > /dev/null 2>&1; \ |
| test "\$\$?" -eq 1 |
| |
| \$(ISH_FILE): \$(RC_FILE) |
| svn cat \$(CANDIDATE_ISH_DEV_URL) > \$@ |
| |
| \$(RC_FILE): \$(SVN_DOT_DIR) |
| svn ls \$(VERSION_DEV_URL) | sort -r | head -n 1 > \$@ |
| EOF |
| |
| log "Tagging candidate..." |
| |
| make -f $build_file tag |
| |
| log "Copying candidate to the release dist directory..." |
| |
| make -f $build_file release |
| |
| echo "Files in: $tmp_dir" |