| #!/bin/sh |
| # |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| # |
| # |
| # Script to pull together an Apache Release |
| # |
| |
| usage() |
| { |
| echo "Usage: release.sh <svn-path> <svn-revision> <version> [options]" |
| echo |
| echo "Options: Default : --prepare --svn --all --sign" |
| echo "--help |-h : Show this help" |
| echo "--prepare : Export specified tree from source control" |
| echo "--svn : Export from svn" |
| echo "--git : Export from git repository with svn metadata" |
| echo "--clean-all : Remove build artefacts and downloaded svn tree" |
| echo "--clean : Remove built artefacts" |
| echo "--all |-a : Generate all artefacts" |
| echo "--source|-e : Generate the source artefact" |
| echo "--cpp |-c : Generate the CPP artefacts" |
| echo "--java |-j : Generate the java artefacts" |
| echo "--perl |-r : Generate the Perl artefacts" |
| echo "--python|-p : Generate the python artefacts" |
| echo "--wcf |-w : Generate the WCF artefacts" |
| echo "--tools |-t : Generate the tools artefacts" |
| echo "--qmf |-q : Generate the QMF artefacts" |
| echo "--source|-e : Generate the source artefact" |
| echo "--sign |-s : Sign generated artefacts" |
| echo "--upload|-u : Upload the artifacts directory to people.apache.org as qpid-\$VER" |
| echo |
| } |
| |
| all_artefacts() |
| { |
| echo ALL_ARTEFACTS |
| |
| CPP="CPP" |
| JAVA="JAVA" |
| PERL="PERL" |
| PYTHON="PYTHON" |
| WCF="WCF" |
| TOOLS="TOOLS" |
| QMF="QMF" |
| SOURCE="SOURCE" |
| } |
| |
| REPO="SVN" |
| for arg in $* ; do |
| case $arg in |
| --help|-h) |
| HELP="HELP" |
| ;; |
| --prepare) |
| PREPARE="PREPARE" |
| ;; |
| --svn) |
| REPO="SVN" |
| ;; |
| --git) |
| REPO="GIT" |
| ;; |
| --clean-all) |
| CLEAN="CLEAN" |
| CLEAN_ARTIFACTS="CLEAN_ARTIFACTS" |
| ;; |
| --clean) |
| CLEAN_ARTIFACTS="CLEAN_ARTIFACTS" |
| ;; |
| --sign|-s) |
| SIGN="SIGN" |
| ;; |
| --all|-a) |
| all_artefacts |
| ;; |
| --cpp|-c) |
| CPP="CPP" |
| ;; |
| --java|-j) |
| JAVA="JAVA" |
| ;; |
| --perl|-r) |
| PERL="PERL" |
| ;; |
| --python|-p) |
| PYTHON="PYTHON" |
| ;; |
| --wcf|-w) |
| WCF="WCF" |
| ;; |
| --tools|-t) |
| TOOLS="TOOLS" |
| ;; |
| --qmf|-q) |
| QMF="QMF" |
| ;; |
| --source|-e) |
| SOURCE="SOURCE" |
| ;; |
| --upload|-u) |
| UPLOAD="UPLOAD" |
| ;; |
| *) |
| if [ -z "$SVN" ] ; then |
| SVN=$arg |
| continue |
| fi |
| |
| if [ -z "$REV" ] ; then |
| REV=$arg |
| continue |
| fi |
| |
| if [ -z "$VER" ] ; then |
| VER=$arg |
| continue |
| fi |
| ;; |
| esac |
| done |
| |
| if [ -n "${HELP}" ] ; then |
| usage |
| exit 0 |
| fi |
| |
| if [ -z "$SVN" -o -z "$REV" -o -z "$VER" ]; then |
| echo "Usage: release.sh <svn-path> <svn-revision> <version>" |
| exit 1 |
| fi |
| |
| echo SVN:$SVN |
| echo REV:$REV |
| echo VER:$VER |
| |
| # If nothing is specified then do it all |
| if [ -z "${CLEAN}${PREPARE}${CPP}${JAVA}${PERL}${PYTHON}${QMF}${TOOLS}${WCF}${SOURCE}${SIGN}${UPLOAD}" ] ; then |
| PREPARE="PREPARE" |
| all_artefacts |
| SIGN="SIGN" |
| fi |
| |
| set -xe |
| |
| if [ "CLEAN" == "$CLEAN" ] ; then |
| rm -rf qpid-${VER} |
| fi |
| |
| if [ "CLEAN_ARTIFACTS" == "$CLEAN_ARTIFACTS" ] ; then |
| rm -rf artifacts |
| fi |
| |
| if [ "PREPARE" == "$PREPARE" ] ; then |
| mkdir artifacts |
| case ${REPO} in |
| SVN) |
| URL=https://svn.apache.org/repos/asf/qpid/${SVN} |
| svn export -r ${REV} ${URL} qpid-${VER} |
| echo ${URL} ${REV} > artifacts/qpid-${VER}.svnversion |
| ;; |
| GIT) |
| URL=${SVN} |
| GITREV=$(GIT_DIR=${URL} git svn find-rev r${REV}) |
| git archive --remote=${URL} ${GITREV} | tar xvf - |
| mv qpid qpid-${VER} |
| echo ${REV} > artifacts/qpid-${VER}.svnversion |
| ;; |
| esac |
| fi |
| |
| if [ "SOURCE" == "$SOURCE" ] ; then |
| tar -czf artifacts/qpid-${VER}.tar.gz qpid-${VER} |
| fi |
| |
| if [ "PERL" == "$PERL" ]; then |
| mkdir qpid-${VER}/perl-qpid-${VER} |
| cp qpid-${VER}/cpp/bindings/qpid/perl/perl.i \ |
| qpid-${VER}/cpp/bindings/qpid/perl/LICENSE \ |
| qpid-${VER}/cpp/bindings/qpid/perl/Makefile.PL \ |
| qpid-${VER}/cpp/bindings/qpid/perl/t/*.t \ |
| qpid-${VER}/perl-qpid-${VER} |
| cp -r qpid-${VER}/cpp/bindings/qpid/perl/lib \ |
| qpid-${VER}/perl-qpid-${VER} |
| mkdir qpid-${VER}/perl-qpid-${VER}/examples |
| cp qpid-${VER}/cpp/bindings/qpid/examples/perl/* \ |
| qpid-${VER}/perl-qpid-${VER}/examples |
| pushd qpid-${VER} |
| tar -czf ../artifacts/perl-qpid-${VER}.tar.gz perl-qpid-${VER} |
| popd |
| fi |
| |
| if [ "PYTHON" == "$PYTHON" ] ; then |
| tar -czf artifacts/qpid-python-${VER}.tar.gz qpid-${VER}/python qpid-${VER}/specs |
| |
| # create the swigged python sources |
| mkdir qpid-${VER}/python-qpid_messaging-${VER} |
| cp qpid-${VER}/cpp/bindings/qpid/python/python.i \ |
| qpid-${VER}/cpp/bindings/qpid/python/LICENSE \ |
| qpid-${VER}/cpp/bindings/qpid/python/README \ |
| qpid-${VER}/cpp/bindings/qpid/python/ChangeLog \ |
| qpid-${VER}/cpp/bindings/qpid/python/extra_dist/CMakeLists.txt \ |
| qpid-${VER}/python-qpid_messaging-${VER} |
| # TODO: copy python examples into the directory as well |
| pushd qpid-${VER} |
| tar -czf ../artifacts/python-qpid_messaging-${VER}.tar.gz \ |
| python-qpid_messaging-${VER} |
| popd |
| fi |
| |
| if [ "WCF" == "$WCF" ] ; then |
| zip -rq artifacts/qpid-wcf-${VER}.zip qpid-${VER}/wcf |
| fi |
| |
| if [ "CPP" == "$CPP" ] ; then |
| pushd qpid-${VER}/cpp |
| ./bootstrap |
| ./configure --enable-deprecated-autotools |
| make dist -j2 |
| popd |
| |
| cp qpid-${VER}/cpp/*.tar.gz artifacts/qpid-cpp-${VER}.tar.gz |
| fi |
| |
| if [ "JAVA" == "$JAVA" ] ; then |
| # generate the java 'release' archive seperately to ensure it doesnt have any optional feature dependencies in it |
| pushd qpid-${VER}/java |
| ant clean build release -Dsvnversion.output=${REV} |
| popd |
| |
| cp qpid-${VER}/java/release/*.tar.gz artifacts/qpid-java-${VER}.tar.gz |
| |
| # now generate the binary packages, with the glue for optional features |
| pushd qpid-${VER}/java |
| ant build release-bin -Dsvnversion.output=${REV} -Doptional=true |
| ant release-mvn -Dsvnversion.output=${REV} -Doptional=true -Dmaven.snapshot=false |
| popd |
| |
| cp qpid-${VER}/java/broker/release/*.tar.gz artifacts/qpid-java-broker-${VER}.tar.gz |
| cp qpid-${VER}/java/client/release/*.tar.gz artifacts/qpid-java-client-${VER}.tar.gz |
| cp qpid-${VER}/java/amqp-1-0-client-jms/release/*.tar.gz artifacts/qpid-java-amqp-1-0-client-jms-${VER}.tar.gz |
| |
| # copy the Maven artifacts |
| cp -a qpid-${VER}/java/jca/release/maven artifacts/ |
| cp -a qpid-${VER}/java/amqp-1-0-client/release/maven artifacts/ |
| cp -a qpid-${VER}/java/amqp-1-0-client-jms/release/maven artifacts/ |
| cp -a qpid-${VER}/java/amqp-1-0-common/release/maven artifacts/ |
| cp -a qpid-${VER}/java/client/release/maven artifacts/ |
| cp -a qpid-${VER}/java/common/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker/release/maven artifacts/ |
| cp -a qpid-${VER}/java/bdbstore/release/maven artifacts/ |
| cp -a qpid-${VER}/java/management/common/release/maven artifacts/ |
| cp -a qpid-${VER}/java/amqp-1-0-common/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/access-control/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/amqp-0-8-protocol/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/amqp-0-10-protocol/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/amqp-1-0-protocol/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/amqp-msg-conv-0-10-to-1-0/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/derby-store/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/jdbc-provider-bone/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/jdbc-store/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/management-http/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/management-jmx/release/maven artifacts/ |
| cp -a qpid-${VER}/java/broker-plugins/memory-store/release/maven artifacts/ |
| cp -a qpid-${VER}/java/bdbstore/jmx/release/maven artifacts/ |
| fi |
| |
| if [ "TOOLS" = "$TOOLS" ] ; then |
| pushd qpid-${VER}/tools |
| |
| python setup.py sdist |
| |
| popd |
| |
| cp qpid-${VER}/tools/dist/*.tar.gz artifacts/qpid-tools-${VER}.tar.gz |
| fi |
| |
| if [ "QMF" = "$QMF" ]; then |
| pushd qpid-${VER}/extras/qmf |
| |
| python setup.py sdist |
| |
| popd |
| |
| cp qpid-${VER}/extras/qmf/dist/*.tar.gz artifacts/qpid-qmf-${VER}.tar.gz |
| fi |
| |
| if [ "SIGN" == "$SIGN" ] ; then |
| pushd artifacts |
| sha1sum *.zip *.gz *.svnversion > SHA1SUM |
| if [ ! -z $SIGNING_KEY ] ; then |
| KEYOPTION="--default-key $SIGNING_KEY" |
| fi |
| for i in `find . | egrep 'jar$|rar$|pom$|gz$|zip$|svnversion$|SHA1SUM'`; do gpg --sign --armor --detach $KEYOPTION $i; done; |
| popd |
| fi |
| |
| if [ "UPLOAD" == "$UPLOAD" ] ; then |
| scp -r artifacts people.apache.org:qpid-${VER} |
| fi |