You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/12/05 02:54:04 UTC
[2/9] hbase git commit: HBASE-19420 Backport HBASE-19152 Update
refguide 'how to build an RC' and the make_rc.sh script
HBASE-19420 Backport HBASE-19152 Update refguide 'how to build an RC' and the make_rc.sh script
Removes src.xml used building src tgz via hbase-assembly.
Use git archive instead going forward. Updates developer release candidate
documentation and the make_rc.sh script.
Slight modifications to developer.adoc for branch-1
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/14318d73
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/14318d73
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/14318d73
Branch: refs/heads/branch-1
Commit: 14318d734ef5974785c5c493f3b259b82b04beb4
Parents: 1fe75f9
Author: Andrew Purtell <ap...@apache.org>
Authored: Mon Dec 4 12:17:15 2017 -0800
Committer: Andrew Purtell <ap...@apache.org>
Committed: Mon Dec 4 16:35:13 2017 -0800
----------------------------------------------------------------------
dev-support/make_rc.sh | 97 +-
hbase-assembly/src/main/assembly/src.xml | 136 ---
src/main/asciidoc/_chapters/developer.adoc | 1168 +++++++++++++----------
3 files changed, 751 insertions(+), 650 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/14318d73/dev-support/make_rc.sh
----------------------------------------------------------------------
diff --git a/dev-support/make_rc.sh b/dev-support/make_rc.sh
index b88a984..19f906f 100755
--- a/dev-support/make_rc.sh
+++ b/dev-support/make_rc.sh
@@ -28,8 +28,17 @@
set -e
-devsupport=`dirname "$0"`
-devsupport=`cd "$devsupport">/dev/null; pwd`
+# Script checks out a tag, cleans the checkout and then builds src and bin
+# tarballs. It then deploys to the apache maven repository.
+# Presumes run from git dir.
+
+# Need a git tag to build.
+if [ "$1" = "" ]
+then
+ echo -n "Usage: $0 TAG_TO_PACKAGE"
+ exit 1
+fi
+git_tag=$1
# Set mvn and mvnopts
mvn=mvn
@@ -41,45 +50,67 @@ if [ "$MAVEN_OPTS" != "" ]; then
mvnopts="${MAVEN_OPTS}"
fi
-# Make a dir to save tgzs in.
+# Ensure we are inside a git repo before making progress
+# The below will fail if outside git.
+git -C . rev-parse
+
+# Checkout git_tag
+git checkout "${git_tag}"
+
+# Get mvn protject version
+#shellcheck disable=SC2016
+version=$(${mvn} -q -N -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec)
+hbase_name="hbase-${version}"
+
+# Make a dir to save tgzs into.
d=`date -u +"%Y%m%dT%H%M%SZ"`
-archivedir="$(pwd)/../`basename $0`.$d"
-echo "Archive dir ${archivedir}"
-mkdir -p "${archivedir}"
+output_dir="/${TMPDIR}/$hbase_name.$d"
+mkdir -p "${output_dir}"
+
-function tgz_mover {
- mv ./hbase-assembly/target/hbase-*.tar.gz "${archivedir}"
+# Build src tgz.
+function build_src {
+ git archive --format=tar.gz --output="${output_dir}/${hbase_name}-src.tar.gz" --prefix="${hbase_name}/" "${git_tag}"
}
-function deploy {
- MAVEN_OPTS="${mvnopts}" ${mvn} clean install -DskipTests -Prelease \
- -Dmaven.repo.local=${archivedir}/repository
- MAVEN_OPTS="${mvnopts}" ${mvn} install -DskipTests post-site assembly:single -Prelease \
- -Dmaven.repo.local=${archivedir}/repository
- tgz_mover
- MAVEN_OPTS="${mvnopts}" ${mvn} deploy -DskipTests -Papache-release -Prelease \
- -Dmaven.repo.local=${archivedir}/repository
+# Build bin tgz
+function build_bin {
+ MAVEN_OPTS="${mvnopts}" ${mvn} clean install -DskipTests -Papache-release -Prelease \
+ -Dmaven.repo.local=${output_dir}/repository
+ MAVEN_OPTS="${mvnopts}" ${mvn} install -DskipTests site assembly:single -Papache-release -Prelease \
+ -Dmaven.repo.local=${output_dir}/repository
+ mv ./hbase-assembly/target/hbase-*.tar.gz "${output_dir}"
}
-# Build src tarball
-# run clean separate from assembly:single because it fails to clean shaded modules correctly
+# Make sure all clean.
+git clean -f -x -d
MAVEN_OPTS="${mvnopts}" ${mvn} clean
-MAVEN_OPTS="${mvnopts}" ${mvn} install -DskipTests assembly:single \
- -Dassembly.file="$(pwd)/hbase-assembly/src/main/assembly/src.xml" \
- -Prelease -Dmaven.repo.local=${archivedir}/repository
-
-tgz_mover
# Now do the two builds, one for hadoop1, then hadoop2
-deploy
-
-echo "DONE"
-echo "Check the content of ${archivedir}. If good, sign and push to dist.apache.org"
-echo " cd ${archivedir}"
-echo ' for i in *.tar.gz; do echo $i; gpg --print-mds $i > $i.mds ; done'
-echo ' for i in *.tar.gz; do echo $i; gpg --print-md MD5 $i > $i.md5 ; done'
-echo ' for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha ; done'
+# Run a rat check.
+${mvn} apache-rat:check
+
+#Build src.
+build_src
+
+# Build bin product
+build_bin
+
+# Deploy to mvn repository
+# Depends on build_bin having populated the local repository
+# If the below upload fails, you will probably have to clean the partial
+# upload from repository.apache.org by 'drop'ping it from the staging
+# repository before restart.
+MAVEN_OPTS="${mvnopts}" ${mvn} deploy -DskipTests -Papache-release -Prelease \
+ -Dmaven.repo.local=${output_dir}/repository
+
+# Do sha1 and md5
+cd ${output_dir}
+for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha ; done
+for i in *.tar.gz; do echo $i; gpg --print-md MD5 $i > $i.md5 ; done
+
+echo "Check the content of ${output_dir}. If good, sign and push to dist.apache.org"
+echo " cd ${output_dir}"
echo ' for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done'
-echo ' rsync -av ${archivedir}/*.gz ${archivedir}/*.mds ${archivedir}/*.asc ~/repos/dist-dev/hbase-VERSION/'
+echo ' rsync -av ${output_dir}/*.gz ${output_dir}/*.md5 ${output_dir}/*.sha ${output_dir}/*.asc ${APACHE_HBASE_DIST_DEV_DIR}/${hbase_name}/'
echo "Check the content deployed to maven. If good, close the repo and record links of temporary staging repo"
-echo "If all good tag the RC"
http://git-wip-us.apache.org/repos/asf/hbase/blob/14318d73/hbase-assembly/src/main/assembly/src.xml
----------------------------------------------------------------------
diff --git a/hbase-assembly/src/main/assembly/src.xml b/hbase-assembly/src/main/assembly/src.xml
deleted file mode 100644
index b13967e..0000000
--- a/hbase-assembly/src/main/assembly/src.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0"?>
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-<!--
-/**
- * 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.
- */
--->
-
- <!--Copies over all you need to build hbase-->
- <id>src</id>
- <formats>
- <format>tar.gz</format>
- </formats>
- <moduleSets>
- <moduleSet>
- <!-- Enable access to all projects in the current multimodule build. Eclipse
- says this is an error, but builds from the command line just fine. -->
- <useAllReactorProjects>true</useAllReactorProjects>
- <includes>
- <include>org.apache.hbase:hbase-annotations</include>
- <include>org.apache.hbase:hbase-archetypes</include>
- <include>org.apache.hbase:hbase-assembly</include>
- <include>org.apache.hbase:hbase-checkstyle</include>
- <include>org.apache.hbase:hbase-client</include>
- <include>org.apache.hbase:hbase-common</include>
- <include>org.apache.hbase:hbase-examples</include>
- <include>org.apache.hbase:hbase-external-blockcache</include>
- <include>org.apache.hbase:hbase-hadoop2-compat</include>
- <include>org.apache.hbase:hbase-hadoop-compat</include>
- <include>org.apache.hbase:hbase-it</include>
- <include>org.apache.hbase:hbase-prefix-tree</include>
- <include>org.apache.hbase:hbase-procedure</include>
- <include>org.apache.hbase:hbase-protocol</include>
- <include>org.apache.hbase:hbase-rest</include>
- <include>org.apache.hbase:hbase-resource-bundle</include>
- <include>org.apache.hbase:hbase-server</include>
- <include>org.apache.hbase:hbase-shaded</include>
- <include>org.apache.hbase:hbase-shell</include>
- <include>org.apache.hbase:hbase-testing-util</include>
- <include>org.apache.hbase:hbase-thrift</include>
- </includes>
- <!-- Include all the sources in the top directory -->
- <sources>
- <excludeSubModuleDirectories>false</excludeSubModuleDirectories>
- <fileSets>
- <fileSet>
- <includes>
- <include>**</include>
- </includes>
- <!--Make sure this excludes is same as the hbase-hadoop2-compat
- excludes below-->
- <excludes>
- <exclude>target/</exclude>
- <exclude>test/</exclude>
- <exclude>.classpath</exclude>
- <exclude>.project</exclude>
- <exclude>.settings/</exclude>
- </excludes>
- </fileSet>
- </fileSets>
- </sources>
- </moduleSet>
- </moduleSets>
- <fileSets>
- <!--This one is weird. When we assemble src, it'll be default profile which
- at the moment is hadoop1. But we should include the hadoop2 compat module
- too so can build hadoop2 from src -->
- <fileSet>
- <directory>${project.basedir}/../hbase-hadoop2-compat</directory>
- <outputDirectory>hbase-hadoop2-compat</outputDirectory>
- <fileMode>0644</fileMode>
- <directoryMode>0755</directoryMode>
- <excludes>
- <exclude>target/</exclude>
- <exclude>test/</exclude>
- <exclude>.classpath</exclude>
- <exclude>.project</exclude>
- <exclude>.settings/</exclude>
- </excludes>
- </fileSet>
- <!--Include dev tools-->
- <fileSet>
- <directory>${project.basedir}/../dev-support</directory>
- <outputDirectory>dev-support</outputDirectory>
- <fileMode>0644</fileMode>
- <directoryMode>0755</directoryMode>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/../src</directory>
- <outputDirectory>src</outputDirectory>
- <fileMode>0644</fileMode>
- <directoryMode>0755</directoryMode>
- </fileSet>
- <!-- Include the top level conf directory -->
- <fileSet>
- <directory>${project.basedir}/../conf</directory>
- <outputDirectory>conf</outputDirectory>
- <fileMode>0644</fileMode>
- <directoryMode>0755</directoryMode>
- </fileSet>
- <!-- Include top level bin directory -->
- <fileSet>
- <directory>${project.basedir}/../bin</directory>
- <outputDirectory>bin</outputDirectory>
- <fileMode>0755</fileMode>
- <directoryMode>0755</directoryMode>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/..</directory>
- <outputDirectory>.</outputDirectory>
- <includes>
- <include>pom.xml</include>
- <include>LICENSE.txt</include>
- <include>NOTICE.txt</include>
- <include>CHANGES.txt</include>
- <include>README.txt</include>
- <include>.pylintrc</include>
- </includes>
- <fileMode>0644</fileMode>
- </fileSet>
-</fileSets>
-</assembly>