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>