%global hadoop_version 2.4.1
%global hadoop_generation 23
%global pig_version 0.12.0
%global jetty_version 8.1.14.v20131031
%global jline_version 1
Name: hive
Version: 0.12.0
Release: 8%{?dist}
Summary: The Apache Hadoop data warehouse
License: ASL 2.0
URL: http://hive.apache.org/
Source0: https://github.com/apache/%{name}/archive/release-%{version}.tar.gz
Patch0: %{name}-integ.patch
BuildRequires: activemq-core
BuildRequires: activemq-kahadb
BuildRequires: ant-contrib
BuildRequires: apache-commons-exec
BuildRequires: apache-ivy >= 2.3.0
BuildRequires: avro-mapred
BuildRequires: datanucleus-api-jdo
BuildRequires: datanucleus-rdbms
BuildRequires: fb303-devel
BuildRequires: fb303-java
BuildRequires: glassfish-servlet-api
BuildRequires: groovy18 >= 1.8.9-15
BuildRequires: hadoop-tests
BuildRequires: ivy-local >= 3.5.0-2
BuildRequires: jackson
BuildRequires: java-devel
BuildRequires: javaewah
BuildRequires: javolution
BuildRequires: jdo-api
BuildRequires: jetty8
BuildRequires: json-lib
BuildRequires: json_simple
BuildRequires: libthrift-java
BuildRequires: make
BuildRequires: maven-clean-plugin
BuildRequires: maven-install-plugin
BuildRequires: maven-local >= 3.5.0-2
BuildRequires: pig
BuildRequires: rsync
BuildRequires: jul-to-slf4j
BuildRequires: snappy-java
BuildRequires: thrift-devel
BuildRequires: xmvn >= 2.1.0-5
BuildRequires: zookeeper-java
BuildArch: noarch
# problems with auto-requires being generated
# Bug 1075626
Requires: java >= 1:1.7.0
Requires: antlr3-tool
Requires: apache-commons-cli
Requires: apache-commons-codec
Requires: apache-commons-collections
Requires: apache-commons-compress
Requires: apache-commons-configuration
Requires: apache-commons-lang
Requires: apache-commons-logging
Requires: apache-commons-pool
Requires: avro-ipc
Requires: avro-mapred
Requires: datanucleus-api-jdo
Requires: datanucleus-rdbms
Requires: derby
Requires: fb303-java
Requires: glassfish-el-api
Requires: guava
Requires: hadoop-common
Requires: hadoop-mapreduce
Requires: jackson
Requires: javaewah
Requires: javolution
Requires: jboss-transaction-1.2-api
Requires: jdo-api
Requires: jetty8
Requires: jline1
Requires: json-lib
Requires: libthrift-java
Requires: log4j
Requires: mockito
Requires: netty3
Requires: protobuf-java
Requires: slf4j
Requires: snappy-java
Requires: zookeeper-java
%description
The Apache Hive data warehouse software facilitates querying and
managing large datasets residing in distributed storage. Apache Hive
provides a mechanism to project structure onto this data and query
the data using a SQL-like language called HiveQL.
%package hcatalog
Summary: hcatalog module for Hive
Requires: %{name}
%description hcatalog
This package contains module for the hcatalog sub-project in %{name}.
%package javadoc
Summary: Javadoc for %{name}
%description javadoc
This package contains javadoc for %{name}.
%prep
%mvn_package :hcatalog hcatalog
%setup -q -n %{name}-release-%{version}
%patch0 -p1
find -name "*.jar" -delete
sed -i 's/\r//' LICENSE NOTICE README.txt
# make sure build doesn't d/l ivy
sed -i "/<get.*ivy_repo_url.*ivy.jar/d" build.xml
# hcatalog setup
%pom_remove_dep org.apache.pig:pig hcatalog
%pom_add_dep org.apache.pig:pig:%{pig_version} hcatalog
%pom_add_dep org.apache.hadoop:hadoop-common:%{hadoop_version} hcatalog/core
%pom_add_dep org.apache.hadoop:hadoop-mapreduce-client-core:%{hadoop_version} hcatalog/core
%pom_add_dep org.apache.hadoop:hadoop-archives:%{hadoop_version} hcatalog/core
%pom_add_dep org.apache.hadoop:hadoop-common:%{hadoop_version} hcatalog/server-extensions
%pom_add_dep org.apache.hadoop:hadoop-common:%{hadoop_version} hcatalog/webhcat/java-client
%pom_add_dep org.apache.hadoop:hadoop-mapreduce-client-core:%{hadoop_version} hcatalog/webhcat/java-client
%pom_add_dep org.apache.hadoop:hadoop-common:%{hadoop_version} hcatalog/webhcat/svr
%pom_add_dep org.apache.hadoop:hadoop-mapreduce-client-core:%{hadoop_version} hcatalog/webhcat/svr
%pom_add_dep org.apache.hadoop:hadoop-hdfs:%{hadoop_version} hcatalog/webhcat/svr
%pom_add_dep org.eclipse.jetty:jetty-server:%{jetty_version} hcatalog/webhcat/svr
%pom_add_dep org.eclipse.jetty:jetty-util:%{jetty_version} hcatalog/webhcat/svr
%pom_add_dep org.eclipse.jetty:jetty-rewrite:%{jetty_version} hcatalog/webhcat/svr
# missing shebang
sed -i -e '1d;2i#!/usr/bin/env bash' bin/hive-config.sh
# omit hbase-handler and testutils due to dep issues
# hcatalog is built separately
sed -i 's/hbase-handler,testutils,hcatalog//g' build.properties
%build
ARG_BLOCK="
-Dhadoop.version=%{hadoop_version} -Dhadoop-0.%{hadoop_generation}.version=%{hadoop_version} \
-Dhadoop.mr.rev=%{hadoop_generation} -Dmvn.hadoop.profile=hadoop%{hadoop_generation} \
-Dshims.include=0.%{hadoop_generation} \
-Dbuild.profile=full -Dthrift.home=/usr \
-Djline.version=%{jline_version} \
-Djetty.version=%{jetty_version} \
"
# for javadoc encoding
export LC_ALL=en_US.UTF-8
# core modules
ant $ARG_BLOCK package
# hbase-handler
# latest hbase incompatible with this version of hive
# massage some of the generated poms to keep xmvn quiet
# about optional deps
%pom_remove_dep org.apache.hadoop:hadoop-tools build/shims
%pom_remove_dep org.apache.hadoop:hadoop-test build/shims
%pom_remove_dep org.apache.hadoop:hadoop-core build/shims
%pom_remove_dep org.apache.hadoop:hadoop-mapreduce-client-jobclient build/shims
%pom_remove_dep org.apache.hive:hive-hbase-handler build/ql
%pom_remove_dep org.apache.hive:hive-testutils build/ql
%pom_remove_dep org.apache.hbase:hbase build/ql
%pom_remove_dep org.apache.mina:mina-core build/ql
# before building hcatalog with xmvn, we need to install
# its newly created hive deps
for module in beeline cli common contrib hwi jdbc metastore serde service shims; do
%mvn_artifact build/$module/pom.xml build/$module/%{name}-$module-%{version}.jar
xmvn install:install-file -Dfile=build/$module/%{name}-$module-%{version}.jar -DpomFile=build/$module/pom.xml
done
# ql -> hive-exec
%mvn_artifact build/ql/pom.xml build/ql/%{name}-exec-%{version}.jar
xmvn install:install-file -Dfile=build/ql/%{name}-exec-%{version}.jar -DpomFile=build/ql/pom.xml
# hcatalog
mkdir -p build/hcatalog/classes
pushd .
cd hcatalog
%mvn_build -f -s -j -- \
-Dmvn.hadoop.profile=hadoop%{hadoop_generation} -Dhadoop.version=%{hadoop_version} \
-Dhadoop23.version=%{hadoop_version} \
-Djetty.webhcat.version=%{jetty_version} \
-Dpig.version=%{pig_version}
# javadoc setup
for module in core hcatalog-pig-adapter server-extensions webhcat/java-client webhcat/svr; do
cp -r ${module}/target/classes/* ../build/hcatalog/classes
cp -r ${module}/src/main/java/* src/java/
done
popd
# combo javadoc this time
ant $ARG_BLOCK javadoc
%install
%mvn_install -J build/dist/docs
# hcatalog install
pushd .
cd hcatalog
# add the parent pom
install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}-hcatalog.pom
%add_maven_depmap %{name}-hcatalog.pom -f "hcatalog"
# inconsistent module naming means we do these individually
install -pm 0644 core/target/hcatalog-core-%{version}.jar %{buildroot}%{_javadir}/%{name}/hcatalog-core.jar
install -pm 0644 core/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-hcatalog-core.pom
%add_maven_depmap %{name}-hcatalog-core.pom %{name}/hcatalog-core.jar -f "hcatalog"
install -pm 0644 hcatalog-pig-adapter/target/hcatalog-pig-adapter-%{version}.jar %{buildroot}%{_javadir}/%{name}/hcatalog-pig-adapter.jar
install -pm 0644 hcatalog-pig-adapter/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-hcatalog-pig-adapter.pom
%add_maven_depmap %{name}-hcatalog-pig-adapter.pom %{name}/hcatalog-pig-adapter.jar -f "hcatalog"
install -pm 0644 server-extensions/target/hcatalog-server-extensions-%{version}.jar %{buildroot}%{_javadir}/%{name}/hcatalog-server-extensions.jar
install -pm 0644 server-extensions/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-hcatalog-server-extensions.pom
%add_maven_depmap %{name}-hcatalog-server-extensions.pom %{name}/hcatalog-server-extensions.jar -f "hcatalog"
install -pm 0644 webhcat/java-client/target/webhcat-java-client-%{version}.jar %{buildroot}%{_javadir}/%{name}/webhcat-java-client.jar
install -pm 0644 webhcat/java-client/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-webhcat-java-client.pom
%add_maven_depmap %{name}-webhcat-java-client.pom %{name}/webhcat-java-client.jar -f "hcatalog"
install -pm 0644 webhcat/svr/target/webhcat-%{version}.jar %{buildroot}%{_javadir}/%{name}/webhcat.jar
install -pm 0644 webhcat/svr/pom.xml %{buildroot}%{_mavenpomdir}/%{name}-webhcat.pom
%add_maven_depmap %{name}-webhcat.pom %{name}/webhcat.jar -f "hcatalog"
popd
# create the root from here
install -d -m 0755 %{buildroot}%{_datadir}/%{name}
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/bin
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/bin/ext
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/bin/ext/util
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/lib
install -d -m 0755 %{buildroot}%{_datadir}/%{name}/conf
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
# bin
install -dm 0755 %{buildroot}%{_bindir}
for f in %{name} hive-config.sh init-hive-dfs.sh metatool schematool; do
install -p bin/${f} %{buildroot}%{_datadir}/%{name}/bin
ln -s %{_datadir}/%{name}/bin/${f} %{buildroot}%{_bindir}/${f}
done
# bin/ext/util
cp -pr bin/ext/* %{buildroot}%{_datadir}/%{name}/bin/ext
# don't have these just yet...
for f in beeline.sh hiveserver2.sh hwi.sh; do
rm %{buildroot}%{_datadir}/%{name}/bin/ext/${f}
done
# conf
for f in hive-default.xml hive-env.sh hive-exec-log4j.properties hive-log4j.properties; do
cp -p build/dist/conf/${f}.template %{buildroot}%{_datadir}/%{name}/conf/${f}
ln -s %{_datadir}/%{name}/conf/${f} %{buildroot}%{_sysconfdir}/%{name}/${f}
done
# lib
rsync -aP build/dist/lib/*.jar build/ivy/lib/hadoop0.%{hadoop_generation}.shim/*.jar \
%{buildroot}%{_datadir}/%{name}/lib
# xmvn-subst won't link JDK tools.jar
rm %{buildroot}%{_datadir}/%{name}/lib/tools-*.jar
%{_bindir}/xmvn-subst %{buildroot}%{_datadir}/%{name}/lib
# manually replace the hive jars with their links
rm %{buildroot}%{_datadir}/%{name}/lib/hive-*.jar
for m in beeline cli common contrib exec hwi jdbc metastore serde service shims; do
ln -s %{_javadir}/%{name}/%{name}-${m}.jar %{buildroot}%{_datadir}/%{name}/lib/%{name}-${m}-%{version}.jar
done
# MR needs the shims and thrift jars in it's classpath
mkdir -p -m0755 %{buildroot}/%{_datadir}/hadoop/mapreduce/lib
ln -s %{_javadir}/%{name}/%{name}-shims.jar %{buildroot}%{_datadir}/hadoop/mapreduce/lib/%{name}-shims.jar
ln -s `xmvn-resolve org.apache.thrift:libthrift` %{buildroot}%{_datadir}/hadoop/mapreduce/lib/%{name}-libthrift.jar
%check
# tests are not run due to dependency on hive hbase support
# which is currently unavailable
%files -f .mfiles
%doc LICENSE NOTICE README.txt
%{_bindir}/*
%{_datadir}/%{name}
%{_sysconfdir}/%{name}
%dir %{_javadir}/%{name}
%{_datadir}/hadoop/mapreduce/lib/%{name}-shims.jar
%{_datadir}/hadoop/mapreduce/lib/%{name}-libthrift.jar
%files hcatalog -f hcatalog/.mfiles-hcatalog
%files javadoc -f .mfiles-javadoc
%doc LICENSE NOTICE
%changelog
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.12.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.12.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Wed Apr 22 2015 Peter Robinson <pbrobinson@fedoraproject.org> 0.12.0-6
- ARMv7 now has hadoop
* Tue Nov 04 2014 Peter MacKinnon <pmackinn@redhat.com> 0.12.0-5
- collapse separate patches into single integ
- xmvn2 updates
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.12.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu Mar 20 2014 Peter MacKinnon <pmackinn@redhat.com> 0.12.0-3
- enable full build profile (almost)
* Tue Mar 18 2014 Peter MacKinnon <pmackinn@redhat.com> 0.12.0-2
- reinstate exclude arch arm because of hadoop dep
* Thu Feb 27 2014 Peter MacKinnon <pmackinn@redhat.com> 0.12.0-1
- Initial rpm
- Add bin and env scripts
- Remove ivy download
- Add missing maven plugins
- Review improvements