You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by ap...@apache.org on 2013/10/09 03:41:53 UTC

git commit: BIGTOP-993. Add packaging for Phoenix

Updated Branches:
  refs/heads/master d00a6bf5e -> 7c382699e


BIGTOP-993. Add packaging for Phoenix


Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo
Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/7c382699
Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/7c382699
Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/7c382699

Branch: refs/heads/master
Commit: 7c382699e95e55567ba19a144ad8ff4c81c92232
Parents: d00a6bf
Author: Andrew Purtell <ap...@apache.org>
Authored: Tue Oct 8 08:36:04 2013 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue Oct 8 08:49:19 2013 -0700

----------------------------------------------------------------------
 .../src/common/phoenix/do-component-build       |  27 ++
 .../src/common/phoenix/install_phoenix.sh       | 133 +++++++++
 bigtop-packages/src/deb/phoenix/changelog       |   1 +
 bigtop-packages/src/deb/phoenix/compat          |   1 +
 bigtop-packages/src/deb/phoenix/control         |  34 +++
 bigtop-packages/src/deb/phoenix/copyright       |  15 +
 bigtop-packages/src/deb/phoenix/phoenix.install |   1 +
 bigtop-packages/src/deb/phoenix/rules           |  56 ++++
 bigtop-packages/src/deb/phoenix/source/format   |   1 +
 bigtop-packages/src/rpm/phoenix/RPMS/.gitignore |   1 +
 .../src/rpm/phoenix/SOURCES/.gitignore          |   0
 .../src/rpm/phoenix/SPECS/.gitignore            |   3 +
 .../src/rpm/phoenix/SPECS/phoenix.spec          | 147 +++++++++
 .../src/rpm/phoenix/SRPMS/.gitignore            |   0
 bigtop-tests/test-artifacts/phoenix/pom.xml     |  33 +++
 .../itest/phoenix/smoke/TestPhoenixSmoke.groovy | 296 +++++++++++++++++++
 bigtop-tests/test-artifacts/pom.xml             |   1 +
 .../test-execution/smokes/phoenix/pom.xml       |  60 ++++
 bigtop-tests/test-execution/smokes/pom.xml      |   8 +
 bigtop.mk                                       |  13 +
 20 files changed, 831 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/common/phoenix/do-component-build
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/common/phoenix/do-component-build b/bigtop-packages/src/common/phoenix/do-component-build
new file mode 100644
index 0000000..8a7efdb
--- /dev/null
+++ b/bigtop-packages/src/common/phoenix/do-component-build
@@ -0,0 +1,27 @@
+#!/bin/bash
+# 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.
+
+set -ex
+
+. `dirname $0`/bigtop.bom
+
+mvn -DskipTests -Dhadoop.profile=2    \
+    -Dhadoop.version=$HADOOP_VERSION  \
+    -Dhbase.version=$HBASE_VERSION    \
+    clean package "$@"
+rm -rf build
+mkdir build
+tar -C build --strip-components=1 -xzf target/phoenix*.tar.gz

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/common/phoenix/install_phoenix.sh
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/common/phoenix/install_phoenix.sh b/bigtop-packages/src/common/phoenix/install_phoenix.sh
new file mode 100755
index 0000000..07da426
--- /dev/null
+++ b/bigtop-packages/src/common/phoenix/install_phoenix.sh
@@ -0,0 +1,133 @@
+#!/bin/bash
+
+# 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.
+
+set -ex
+
+usage() {
+  echo "
+usage: $0 <options>
+  Required not-so-options:
+     --build-dir=DIR             path to phoenix dist.dir
+     --prefix=PREFIX             path to install into
+
+  Optional options:
+     --doc-dir=DIR               path to install docs into [/usr/share/doc/phoenix]
+     --lib-dir=DIR               path to install phoenix home [/usr/lib/phoenix]
+     --installed-lib-dir=DIR     path where lib-dir will end up on target system
+     --bin-dir=DIR               path to install bins [/usr/bin]
+     --examples-dir=DIR          path to install examples [doc-dir/examples]
+     ... [ see source for more similar options ]
+  "
+  exit 1
+}
+
+OPTS=$(getopt \
+  -n $0 \
+  -o '' \
+  -l 'prefix:' \
+  -l 'doc-dir:' \
+  -l 'lib-dir:' \
+  -l 'installed-lib-dir:' \
+  -l 'bin-dir:' \
+  -l 'examples-dir:' \
+  -l 'conf-dir:' \
+  -l 'build-dir:' -- "$@")
+
+if [ $? != 0 ] ; then
+    usage
+fi
+
+eval set -- "$OPTS"
+while true ; do
+    case "$1" in
+        --prefix)
+        PREFIX=$2 ; shift 2
+        ;;
+        --build-dir)
+        BUILD_DIR=$2 ; shift 2
+        ;;
+        --doc-dir)
+        DOC_DIR=$2 ; shift 2
+        ;;
+        --lib-dir)
+        LIB_DIR=$2 ; shift 2
+        ;;
+        --installed-lib-dir)
+        INSTALLED_LIB_DIR=$2 ; shift 2
+        ;;
+        --bin-dir)
+        BIN_DIR=$2 ; shift 2
+        ;;
+        --examples-dir)
+        EXAMPLES_DIR=$2 ; shift 2
+        ;;
+        --conf-dir)
+        CONF_DIR=$2 ; shift 2
+        ;;
+        --)
+        shift ; break
+        ;;
+        *)
+        echo "Unknown option: $1"
+        usage
+        exit 1
+        ;;
+    esac
+done
+
+for var in PREFIX BUILD_DIR ; do
+  if [ -z "$(eval "echo \$$var")" ]; then
+    echo Missing param: $var
+    usage
+  fi
+done
+
+MAN_DIR=${MAN_DIR:-/usr/share/man/man1}
+DOC_DIR=${DOC_DIR:-/usr/share/doc/phoenix}
+LIB_DIR=${LIB_DIR:-/usr/lib/phoenix}
+BIN_DIR=${BIN_DIR:-/usr/lib/phoenix/bin}
+ETC_DIR=${ETC_DIR:-/etc/phoenix}
+CONF_DIR=${CONF_DIR:-${ETC_DIR}/conf.dist}
+
+install -d -m 0755 $PREFIX/$BIN_DIR
+install -d -m 0755 $PREFIX/$LIB_DIR
+install -d -m 0755 $PREFIX/$LIB_DIR/lib
+install -d -m 0755 $PREFIX/$DOC_DIR
+install -d -m 0755 $PREFIX/$MAN_DIR
+install -d -m 0755 $PREFIX/$ETC_DIR
+install -d -m 0755 $PREFIX/$CONF_DIR
+
+cp -ra $BUILD_DIR/lib/* $PREFIX/$LIB_DIR/lib
+cp -a $BUILD_DIR/phoenix*.jar $PREFIX/$LIB_DIR
+cp -a $BUILD_DIR/docs/* $PREFIX/$DOC_DIR
+cp -a $BUILD_DIR/examples $PREFIX/$DOC_DIR
+cp -a $BUILD_DIR/*.txt $PREFIX/$DOC_DIR
+
+cp -a $BUILD_DIR/bin/sqlline.sh $PREFIX/$BIN_DIR
+# needed for sqlline.sh
+cp -a $BUILD_DIR/bin/log4j.properties $PREFIX/$CONF_DIR
+# Fix up sqlline.sh for Bigtop install layout
+sed -i -e s#target## -e s#\$current_dir/log4j.properties#$ETC_DIR/conf/log4j.properties# $PREFIX/$BIN_DIR/sqlline.sh
+
+# Remove sources jar
+rm $PREFIX/$LIB_DIR/phoenix-*-sources.jar
+
+# Remove the executable bit from jars to avoid lintian warnings
+find $PREFIX/$LIB_DIR -name '*.jar' -exec chmod a-x {} \;
+
+# Create version independent symlinks
+ln -s `cd $PREFIX/$LIB_DIR ; ls phoenix*-client.jar` $PREFIX/$LIB_DIR/phoenix-client.jar

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/changelog
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/changelog b/bigtop-packages/src/deb/phoenix/changelog
new file mode 100644
index 0000000..547ed02
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/changelog
@@ -0,0 +1 @@
+--- This is auto-generated 

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/compat
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/compat b/bigtop-packages/src/deb/phoenix/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/compat
@@ -0,0 +1 @@
+7

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/control
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/control b/bigtop-packages/src/deb/phoenix/control
new file mode 100644
index 0000000..4eff48d
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/control
@@ -0,0 +1,34 @@
+# 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.
+
+Source: phoenix
+Section: misc
+Priority: extra
+Maintainer: Bigtop <de...@bigtop.apache.org>
+Build-Depends: debhelper (>= 7.0.50~)
+Standards-Version: 3.8.0
+Homepage: https://github.com/forcedotcom/phoenix
+
+Package: phoenix
+Architecture: all
+Depends: zookeeper, hadoop, hadoop-mapreduce, hadoop-yarn, hbase, bigtop-utils (>= 0.7)
+Description: Phoenix is a SQL skin over HBase
+ Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC driver.
+ The Phoenix query engine transforms an SQL query into one or more HBase scans,
+ and orchestrates their execution to produce standard JDBC result sets. Direct
+ use of the HBase API, along with coprocessors and custom filters, results in
+ performance on the order of milliseconds for small queries, or seconds for
+ tens of millions of rows. Applications interact with Phoenix through a
+ standard JDBC interface; all the usual interfaces are supported.

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/copyright
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/copyright b/bigtop-packages/src/deb/phoenix/copyright
new file mode 100644
index 0000000..c2b3681
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/copyright
@@ -0,0 +1,15 @@
+Format: http://dep.debian.net/deps/dep5
+Source: https://github.com/forcedotcom/phoenix
+Upstream-Name: Phoenix
+
+Files: *
+Copyright: Copyright (c) 2013, Salesforce.com, Inc.
+License: BSD-3-clause
+
+Files debian/*
+Copyright: 2013, The Apache Software Foundation
+License: Apache-2.0
+
+License: Apache-2.0
+ On Debian systems, the complete text of the Apache 2.0 license
+ can be found in "/usr/share/common-licenses/Apache-2.0".

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/phoenix.install
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/phoenix.install b/bigtop-packages/src/deb/phoenix/phoenix.install
new file mode 100644
index 0000000..123b3e9
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/phoenix.install
@@ -0,0 +1 @@
+/usr/lib/phoenix

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/rules
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/rules b/bigtop-packages/src/deb/phoenix/rules
new file mode 100755
index 0000000..03ab333
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/rules
@@ -0,0 +1,56 @@
+#!/usr/bin/make -f
+#
+# 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.
+#
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+phoenix_pkg_name=phoenix
+zookeeper_home=/usr/lib/zookeeper
+hadoop_home=/usr/lib/hadoop
+hadoop_mapreduce_home=/usr/lib/hadoop-mapreduce
+hadoop_yarn_home=/usr/lib/hadoop-yarn
+hbase_home=/usr/lib/hbase
+
+%:
+	dh $@
+
+override_dh_auto_build:
+	# we'll just use the build from the tarball.
+	mkdir -p debian/tmp/bigtop-empty
+	bash debian/do-component-build -Dmaven.repo.local=${HOME}/.m2/repository
+
+override_dh_auto_install:
+	bash -x debian/install_phoenix.sh \
+	  --build-dir=$${PWD}/build     \
+	  --prefix=debian/tmp
+	# Symlink in the dependency jars from their packages.
+	rm -f debian/tmp/usr/lib/${phoenix_pkg_name}/lib/zookeeper*.jar
+	ln -f -s ${zookeeper_home}/zookeeper.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	rm -f debian/tmp/usr/lib/${phoenix_pkg_name}/lib/hadoop*.jar
+	ln -f -s ${hadoop_home}/hadoop-annotations.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	ln -f -s ${hadoop_home}/hadoop-auth.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	ln -f -s ${hadoop_home}/hadoop-common.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	ln -f -s ${hadoop_mapreduce_home}/hadoop-mapreduce-client-core.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	ln -f -s ${hadoop_yarn_home}/hadoop-yarn-api.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	ln -f -s ${hadoop_yarn_home}/hadoop-yarn-common.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/
+	rm -f debian/tmp/usr/lib/${phoenix_pkg_name}/lib/hbase*.jar
+	ln -f -s ${hbase_home}/hbase.jar debian/tmp/usr/lib/${phoenix_pkg_name}/lib/

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/deb/phoenix/source/format
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/deb/phoenix/source/format b/bigtop-packages/src/deb/phoenix/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/bigtop-packages/src/deb/phoenix/source/format
@@ -0,0 +1 @@
+3.0 (quilt)

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/rpm/phoenix/RPMS/.gitignore
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/rpm/phoenix/RPMS/.gitignore b/bigtop-packages/src/rpm/phoenix/RPMS/.gitignore
new file mode 100644
index 0000000..1ab8c79
--- /dev/null
+++ b/bigtop-packages/src/rpm/phoenix/RPMS/.gitignore
@@ -0,0 +1 @@
+repodata

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/rpm/phoenix/SOURCES/.gitignore
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/rpm/phoenix/SOURCES/.gitignore b/bigtop-packages/src/rpm/phoenix/SOURCES/.gitignore
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/rpm/phoenix/SPECS/.gitignore
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/rpm/phoenix/SPECS/.gitignore b/bigtop-packages/src/rpm/phoenix/SPECS/.gitignore
new file mode 100644
index 0000000..caa5471
--- /dev/null
+++ b/bigtop-packages/src/rpm/phoenix/SPECS/.gitignore
@@ -0,0 +1,3 @@
+hadoop.spec
+pig.spec
+hive.spec

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/rpm/phoenix/SPECS/phoenix.spec
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/rpm/phoenix/SPECS/phoenix.spec b/bigtop-packages/src/rpm/phoenix/SPECS/phoenix.spec
new file mode 100644
index 0000000..6ef1696
--- /dev/null
+++ b/bigtop-packages/src/rpm/phoenix/SPECS/phoenix.spec
@@ -0,0 +1,147 @@
+# 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.
+%define phoenix_home /usr/lib/%{name}
+%define bin_phoenix %{phoenix_home}/bin
+%define etc_phoenix_conf %{_sysconfdir}/%{name}/conf
+%define etc_phoenix_conf_dist %{etc_phoenix_conf}.dist
+%define lib_phoenix %{phoenix_home}/lib
+%define man_dir %{_mandir}
+%define zookeeper_home /usr/lib/zookeeper
+%define hadoop_home /usr/lib/hadoop
+%define hadoop_mapreduce_home /usr/lib/hadoop-mapreduce
+%define hadoop_yarn_home /usr/lib/hadoop-yarn
+%define hbase_home /usr/lib/hbase
+
+%if  %{?suse_version:1}0
+
+# Only tested on openSUSE 11.4. le'ts update it for previous release when confirmed
+%if 0%{suse_version} > 1130
+%define suse_check \# Define an empty suse_check for compatibility with older sles
+%endif
+
+# SLES is more strict anc check all symlinks point to valid path
+# But we do point to a hadoop jar which is not there at build time
+# (but would be at install time).
+# Since our package build system does not handle dependencies,
+# these symlink checks are deactivated
+%define __os_install_post \
+    %{suse_check} ; \
+    /usr/lib/rpm/brp-compress ; \
+    %{nil}
+
+%define doc_phoenix %{_docdir}/%{name}
+%define alternatives_cmd update-alternatives
+
+%else
+
+# CentOS 5 does not have any dist macro
+# So I will suppose anything that is not Mageia or a SUSE will be a RHEL/CentOS/Fedora
+%if %{!?mgaversion:1}0
+
+# FIXME: brp-repack-jars uses unzip to expand jar files
+# Unfortunately guice-2.0.jar pulled by ivy contains some files and directories without any read permission
+# and make whole process to fail.
+# So for now brp-repack-jars is being deactivated until this is fixed.
+# See BIGTOP-294
+%define __os_install_post \
+    /usr/lib/rpm/redhat/brp-compress ; \
+    /usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} ; \
+    /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} ; \
+    /usr/lib/rpm/brp-python-bytecompile ; \
+    %{nil}
+%endif
+
+%define doc_phoenix %{_docdir}/%{name}-%{phoenix_version}
+%define alternatives_cmd alternatives
+
+%endif
+
+
+Name: phoenix
+Version: %{phoenix_version}
+Release: %{phoenix_release}
+Summary: Phoenix is a SQL skin over HBase and client-embedded JDBC driver.
+URL: https://github.com/forcedotcom/phoenix
+Group: Development/Libraries
+Buildroot: %{_topdir}/INSTALL/%{name}-%{version}
+License: APL2
+Source0: %{name}-%{phoenix_base_version}.tar.gz
+Source1: do-component-build
+Source2: install_phoenix.sh
+BuildArch: noarch
+Requires: hadoop, hadoop-mapreduce, hadoop-yarn, hbase, zookeeper
+
+%if  0%{?mgaversion}
+Requires: bsh-utils
+%else
+Requires: sh-utils
+%endif
+
+%description
+Phoenix is a SQL skin over HBase, delivered as a client-embedded JDBC driver.
+The Phoenix query engine transforms an SQL query into one or more HBase scans,
+and orchestrates their execution to produce standard JDBC result sets. Direct
+use of the HBase API, along with coprocessors and custom filters, results in
+performance on the order of milliseconds for small queries, or seconds for
+tens of millions of rows. Applications interact with Phoenix through a
+standard JDBC interface; all the usual interfaces are supported.
+
+
+%prep
+%setup -n %{name}-%{phoenix_base_version}
+
+%build
+bash %{SOURCE1}
+
+%install
+%__rm -rf $RPM_BUILD_ROOT
+bash %{SOURCE2} \
+	--build-dir=build \
+        --doc-dir=%{doc_phoenix} \
+	--prefix=$RPM_BUILD_ROOT
+
+%post
+%{alternatives_cmd} --install %{etc_phoenix_conf} %{name}-conf %{etc_phoenix_conf_dist} 30
+
+%preun
+if [ "$1" = 0 ]; then
+  %{alternatives_cmd} --remove %{name}-conf %{etc_phoenix_conf_dist} || :
+fi
+
+# Pull zookeeper, hadoop, hadoop-mapreduce, hadoop-yarn, and hbase deps from their packages
+rm -f $RPM_BUILD_ROOT/%{lib_phoenix}/zookeeper*.jar
+ln -f -s %{zookeeper_home}/zookeeper.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+rm -f $RPM_BUILD_ROOT/%{lib_phoenix}/hadoop*.jar
+ln -f -s %{hadoop_home}/hadoop-annotations.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+ln -f -s %{hadoop_home}/hadoop-auth.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+ln -f -s %{hadoop_home}/hadoop-common.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+ln -f -s %{hadoop_mapreduce_home}/hadoop-mapreduce-client-core.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+ln -f -s %{hadoop_yarn_home}/hadoop-yarn-api.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+ln -f -s %{hadoop_yarn_home}/hadoop-yarn-common.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+
+rm -f $RPM_BUILD_ROOT/%{lib_phoenix}/hbase*.jar
+ln -f -s %{hbase_home}/hbase.jar $RPM_BUILD_ROOT/%{lib_phoenix}
+
+
+#######################
+#### FILES SECTION ####
+#######################
+%files 
+%defattr(-,root,root,755)
+%doc %{doc_phoenix}
+%{phoenix_home}/phoenix-*.jar
+%{lib_phoenix}
+%{bin_phoenix}
+%config(noreplace) %{etc_phoenix_conf_dist}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-packages/src/rpm/phoenix/SRPMS/.gitignore
----------------------------------------------------------------------
diff --git a/bigtop-packages/src/rpm/phoenix/SRPMS/.gitignore b/bigtop-packages/src/rpm/phoenix/SRPMS/.gitignore
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-tests/test-artifacts/phoenix/pom.xml
----------------------------------------------------------------------
diff --git a/bigtop-tests/test-artifacts/phoenix/pom.xml b/bigtop-tests/test-artifacts/phoenix/pom.xml
new file mode 100644
index 0000000..4e4e0cf
--- /dev/null
+++ b/bigtop-tests/test-artifacts/phoenix/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.bigtop.itest</groupId>
+    <artifactId>bigtop-smokes</artifactId>
+    <version>0.7.0-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+  <groupId>org.apache.bigtop.itest</groupId>
+  <artifactId>phoenix-smoke</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+
+  <name>phoenixsmoke</name>
+
+</project>

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-tests/test-artifacts/phoenix/src/main/groovy/org/apache/bigtop/itest/phoenix/smoke/TestPhoenixSmoke.groovy
----------------------------------------------------------------------
diff --git a/bigtop-tests/test-artifacts/phoenix/src/main/groovy/org/apache/bigtop/itest/phoenix/smoke/TestPhoenixSmoke.groovy b/bigtop-tests/test-artifacts/phoenix/src/main/groovy/org/apache/bigtop/itest/phoenix/smoke/TestPhoenixSmoke.groovy
new file mode 100644
index 0000000..6f6480d
--- /dev/null
+++ b/bigtop-tests/test-artifacts/phoenix/src/main/groovy/org/apache/bigtop/itest/phoenix/smoke/TestPhoenixSmoke.groovy
@@ -0,0 +1,296 @@
+/*
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.
+ */
+package org.apache.bigtop.itest.phoenix.smoke
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.bigtop.itest.JarContent;
+import org.apache.bigtop.itest.shell.Shell
+import org.junit.Test
+
+public class TestPhoenixSmoke {
+
+  static Shell sh = new Shell('/bin/bash -s');
+
+  static final String PHOENIX_HOME = System.getenv("PHOENIX_HOME");
+  static {
+    assertNotNull("PHOENIX_HOME has to be set to run this test", PHOENIX_HOME);
+  }
+  static String phoenixClientJar = PHOENIX_HOME + "/" +
+    JarContent.getJarName(PHOENIX_HOME, "phoenix-.*client.jar");
+  static String phoenixTestsJar = PHOENIX_HOME + "/" +
+    JarContent.getJarName(PHOENIX_HOME, "phoenix-.*tests.jar");
+
+  // Run a Phoenix end to end unit test using the hbase exec script.
+  // This really simplifies the testing setup we would otherwise need
+  // to accomplish with Maven and will be more amenable to change if
+  // the Phoenix tests someday can be run as test drivers against a
+  // running cluster as well.
+
+  static void runTest(String testName) {
+    sh.exec("HBASE_CLASSPATH=" + phoenixClientJar + ":" + phoenixTestsJar + 
+      " hbase org.junit.runner.JUnitCore " + testName);
+    assertTrue(testName + " failed", sh.getRet() == 0);
+  }
+
+  @Test
+  public void testAlterTable() {
+    runTest("com.salesforce.phoenix.end2end.AlterTableTest")
+  }
+
+  @Test
+  public void testArithmeticQuery() {
+    runTest("com.salesforce.phoenix.end2end.ArithmeticQueryTest")
+  }
+
+  @Test
+  public void testAutoCommit() {
+    runTest("com.salesforce.phoenix.end2end.AutoCommitTest")
+  }
+
+  @Test
+  public void testBinaryRowKey() {
+    runTest("com.salesforce.phoenix.end2end.BinaryRowKeyTest")
+  }
+
+  @Test
+  public void testCoalesceFunction() {
+    runTest("com.salesforce.phoenix.end2end.CoalesceFunctionTest")
+  }
+
+  @Test
+  public void testCompareDecimalToLong() {
+    runTest("com.salesforce.phoenix.end2end.CompareDecimalToLongTest")
+  }
+
+  @Test
+  public void testCreateTable() {
+    runTest("com.salesforce.phoenix.end2end.CreateTableTest")
+  }
+
+  @Test
+  public void testCSVLoader() {
+    runTest("com.salesforce.phoenix.end2end.CSVLoaderTest")
+  }
+
+  @Test
+  public void testCustomEntityData() {
+    runTest("com.salesforce.phoenix.end2end.CustomEntityDataTest")
+  }
+
+  @Test
+  public void testDefaultParallelIteratorsRegionSplitter() {
+    runTest("com.salesforce.phoenix.end2end.DefaultParallelIteratorsRegionSplitterTest")
+  }
+
+  @Test
+  public void testDeleteRange() {
+    runTest("com.salesforce.phoenix.end2end.DeleteRangeTest")
+  }
+
+  @Test
+  public void testDescColumnSortOrder() {
+    runTest("com.salesforce.phoenix.end2end.DescColumnSortOrderTest")
+  }
+
+  @Test
+  public void testDistinctCount() {
+    runTest("com.salesforce.phoenix.end2end.DistinctCountTest")
+  }
+
+  @Test
+  public void testDynamicColumn() {
+    runTest("com.salesforce.phoenix.end2end.DynamicColumnTest")
+  }
+
+  @Test
+  public void testDynamicFamily() {
+    runTest("com.salesforce.phoenix.end2end.DynamicFamilyTest")
+  }
+
+  @Test
+  public void testDynamicUpsert() {
+    runTest("com.salesforce.phoenix.end2end.DynamicUpsertTest")
+  }
+
+  @Test
+  public void testExecuteStatements() {
+    runTest("com.salesforce.phoenix.end2end.ExecuteStatementsTest")
+  }
+
+  @Test
+  public void testExtendedQueryExec() {
+    runTest("com.salesforce.phoenix.end2end.ExtendedQueryExecTest")
+  }
+
+  @Test
+  public void testFunkyNames() {
+    runTest("com.salesforce.phoenix.end2end.FunkyNamesTest")
+  }
+
+  @Test
+  public void testGroupByCase() {
+    runTest("com.salesforce.phoenix.end2end.GroupByCaseTest")
+  }
+
+  @Test
+  public void testIsNull() {
+    runTest("com.salesforce.phoenix.end2end.IsNullTest")
+  }
+
+  @Test
+  public void testKeyOnly() {
+    runTest("com.salesforce.phoenix.end2end.KeyOnlyTest")
+  }
+
+  @Test
+  public void testMultiCfQueryExec() {
+    runTest("com.salesforce.phoenix.end2end.MultiCfQueryExecTest")
+  }
+
+  @Test
+  public void testNativeHBaseTypes() {
+    runTest("com.salesforce.phoenix.end2end.NativeHBaseTypesTest")
+  }
+
+  @Test
+  public void testPercentile() {
+    runTest("com.salesforce.phoenix.end2end.PercentileTest")
+  }
+
+  @Test
+  public void testProductMetrics() {
+    runTest("com.salesforce.phoenix.end2end.ProductMetricsTest")
+  }
+
+  @Test
+  public void testQueryDatabaseMetaData() {
+    runTest("com.salesforce.phoenix.end2end.QueryDatabaseMetaDataTest")
+  }
+
+  @Test
+  public void testQueryExec() {
+    runTest("com.salesforce.phoenix.end2end.QueryExecTest")
+  }
+
+  @Test
+  public void testQueryExecWithoutSCN() {
+    runTest("com.salesforce.phoenix.end2end.QueryExecWithoutSCNTest")
+  }
+
+  @Test
+  public void testQueryPlan() {
+    runTest("com.salesforce.phoenix.end2end.QueryPlanTest")
+  }
+
+  @Test
+  public void testReadIsolationLevel() {
+    runTest("com.salesforce.phoenix.end2end.ReadIsolationLevelTest")
+  }
+
+  @Test
+  public void testReverseFunction() {
+    runTest("com.salesforce.phoenix.end2end.ReverseFunctionTest")
+  }
+
+  @Test
+  public void testServerException() {
+    runTest("com.salesforce.phoenix.end2end.ServerExceptionTest")
+  }
+
+  @Test
+  public void testSkipRangeParallelIteratorRegionSplitter() {
+    runTest("com.salesforce.phoenix.end2end.SkipRangeParallelIteratorRegionSplitterTest")
+  }
+
+  @Test
+  public void testSkipScanQuery() {
+    runTest("com.salesforce.phoenix.end2end.SkipScanQueryTest")
+  }
+
+  @Test
+  public void testSpooledOrderBy() {
+    runTest("com.salesforce.phoenix.end2end.SpooledOrderByTest")
+  }
+
+  @Test
+  public void testStatementHints() {
+    runTest("com.salesforce.phoenix.end2end.StatementHintsTest")
+  }
+
+  @Test
+  public void testStddev() {
+    runTest("com.salesforce.phoenix.end2end.StddevTest")
+  }
+
+  @Test
+  public void testTopN() {
+    runTest("com.salesforce.phoenix.end2end.TopNTest")
+  }
+
+  @Test
+  public void testUpsertBigValues() {
+    runTest("com.salesforce.phoenix.end2end.UpsertBigValuesTest")
+  }
+
+  @Test
+  public void testUpsertSelect() {
+    runTest("com.salesforce.phoenix.end2end.UpsertSelectTest")
+  }
+
+  @Test
+  public void testUpsertValues() {
+    runTest("com.salesforce.phoenix.end2end.UpsertValuesTest")
+  }
+
+  @Test
+  public void testVariableLengthPK() {
+    runTest("com.salesforce.phoenix.end2end.VariableLengthPKTest")
+  }
+
+  // INDEX
+
+  @Test
+  public void testIndex() {
+    runTest("com.salesforce.phoenix.end2end.index.IndexTest")
+  }
+
+  @Test
+  public void testIndexMetadata() {
+    runTest("com.salesforce.phoenix.end2end.index.IndexMetadataTest")
+  }
+
+  // SALTED
+
+  @Test
+  public void testSaltedTable() {
+    runTest("com.salesforce.phoenix.end2end.salted.SaltedTableTest")
+  }
+
+  @Test
+  public void testSaltedTableUpsertSelect() {
+    runTest("com.salesforce.phoenix.end2end.salted.SaltedTableUpsertSelectTest")
+  }
+
+  @Test
+  public void testSaltedTableVarLengthRowKey() {
+    runTest("com.salesforce.phoenix.end2end.salted.SaltedTableVarLengthRowKeyTest")
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-tests/test-artifacts/pom.xml
----------------------------------------------------------------------
diff --git a/bigtop-tests/test-artifacts/pom.xml b/bigtop-tests/test-artifacts/pom.xml
index bcbdf59..f9360a4 100644
--- a/bigtop-tests/test-artifacts/pom.xml
+++ b/bigtop-tests/test-artifacts/pom.xml
@@ -49,6 +49,7 @@
     <module>fatjar</module>
     <module>hcatalog</module>
     <module>spark</module>
+    <module>phoenix</module>
   </modules>
 
   <dependencies>

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-tests/test-execution/smokes/phoenix/pom.xml
----------------------------------------------------------------------
diff --git a/bigtop-tests/test-execution/smokes/phoenix/pom.xml b/bigtop-tests/test-execution/smokes/phoenix/pom.xml
new file mode 100644
index 0000000..6d537fc
--- /dev/null
+++ b/bigtop-tests/test-execution/smokes/phoenix/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <parent>
+    <groupId>org.apache.bigtop.itest</groupId>
+    <artifactId>smoke-tests</artifactId>
+    <version>0.7.0-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.bigtop.itest</groupId>
+  <artifactId>phoenix-smoke-execution</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <name>Phoenix smoke test execution</name>
+
+  <properties>
+    <org.apache.maven-dependency-plugin.groupId>org.apache.bigtop.itest</org.apache.maven-dependency-plugin.groupId>
+    <org.apache.maven-dependency-plugin.artifactId>phoenix-smoke</org.apache.maven-dependency-plugin.artifactId>
+    <org.apache.maven-dependency-plugin.version>${phoenix-smoke.version}</org.apache.maven-dependency-plugin.version>
+    <org.apache.maven-dependency-plugin.type>jar</org.apache.maven-dependency-plugin.type>
+
+    <PHOENIX_HOME>${env.PHOENIX_HOME}</PHOENIX_HOME>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.bigtop.itest</groupId>
+      <artifactId>phoenix-smoke</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop-tests/test-execution/smokes/pom.xml
----------------------------------------------------------------------
diff --git a/bigtop-tests/test-execution/smokes/pom.xml b/bigtop-tests/test-execution/smokes/pom.xml
index 23f4343..3403ef4 100644
--- a/bigtop-tests/test-execution/smokes/pom.xml
+++ b/bigtop-tests/test-execution/smokes/pom.xml
@@ -48,6 +48,7 @@
     <package-smoke.version>${project.version}</package-smoke.version>
     <solr-smoke.version>${project.version}</solr-smoke.version>
     <hcatalog-smoke.version>${project.version}</hcatalog-smoke.version>
+    <phoenix-smoke.version>${project.version}</phoenix-smoke.version>
   </properties>
 
   <!--
@@ -69,6 +70,7 @@
     <module>sqoop</module>
     -->
     <module>hcatalog</module>
+    <module>phoenix</module>
   </modules>
 
   <dependencyManagement>
@@ -146,6 +148,12 @@
         <version>${hcatalog-smoke.version}</version>
         <scope>test</scope>
       </dependency>
+      <dependency>
+        <groupId>org.apache.bigtop.itest</groupId>
+        <artifactId>phoenix-smoke</artifactId>
+        <version>${phoenix-smoke.version}</version>
+        <scope>test</scope>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 

http://git-wip-us.apache.org/repos/asf/bigtop/blob/7c382699/bigtop.mk
----------------------------------------------------------------------
diff --git a/bigtop.mk b/bigtop.mk
index cbd0288..bc49ce1 100644
--- a/bigtop.mk
+++ b/bigtop.mk
@@ -236,6 +236,19 @@ SPARK_SITE=$(APACHE_MIRROR)$(SPARK_DOWNLOAD_PATH)
 SPARK_ARCHIVE=$(APACHE_ARCHIVE)$(SPARK_DOWNLOAD_PATH)
 $(eval $(call PACKAGE,spark,SPARK))
 
+# Phoenix
+PHOENIX_NAME=phoenix
+PHOENIX_RELNOTES_NAME=Phoenix: A SQL skin over HBase
+PHOENIX_PKG_NAME=phoenix
+PHOENIX_BASE_VERSION=2.0.2
+PHOENIX_PKG_VERSION=2.0.2
+PHOENIX_RELEASE_VERSION=1
+PHOENIX_TARBALL_DST=phoenix-$(PHOENIX_BASE_VERSION).tar.gz
+PHOENIX_TARBALL_SRC=$(PHOENIX_BASE_VERSION).tar.gz
+PHOENIX_SITE=https://github.com/forcedotcom/phoenix/archive
+PHOENIX_ARCHIVE=$(PHOENIX_SITE)
+$(eval $(call PACKAGE,phoenix,PHOENIX))
+
 # Bigtop-utils
 BIGTOP_UTILS_NAME=bigtop-utils
 BIGTOP_UTILS__RELNOTES_NAME=Bigtop-utils