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