Blame hive.spec

89b14f2
%global hadoop_version 2.2.0
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
b937079
Release:       4%{?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
89b14f2
Patch0:        %{name}-general-build-mods.patch
89b14f2
# following patches are organized per module
89b14f2
Patch1:        %{name}-shims-mods.patch
89b14f2
Patch2:        %{name}-metastore-mods.patch
89b14f2
Patch3:        %{name}-ql-mods.patch
89b14f2
Patch4:        %{name}-service-mods.patch
89b14f2
Patch5:        %{name}-hcatalog-mods.patch
89b14f2
Patch6:        %{name}-model-enhancer-asm.patch
5658125
Patch7:        %{name}-hwi-mods.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
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
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
89b14f2
BuildRequires: xmvn >= 1.5.0
89b14f2
BuildRequires: zookeeper-java
89b14f2
89b14f2
BuildArch:     noarch
1f71357
# exclude arm due to hadoop dependencies
1f71357
ExcludeArch:   %{arm}
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:       hbase
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
%patch1 -p1
89b14f2
%patch2 -p1
89b14f2
%patch3 -p1
89b14f2
%patch4 -p1
89b14f2
%patch5 -p1
89b14f2
%patch6 -p1
5658125
%patch7 -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_disable_module storage-handlers/hbase hcatalog
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_remove_dep org.eclipse.jetty.aggregate:jetty-all-server 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
89b14f2
# TODO: upstream trunk patch for Hbase version 0.96 (HIVE-4388)
89b14f2
# but trunk patch is TOO sprawling (665k);
89b14f2
# will enable in a future TBD upstream release
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} \
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
89b14f2
install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-hcatalog.pom
89b14f2
%add_maven_depmap JPP.%{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
89b14f2
install -pm 0644 core/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-hcatalog-core.pom
89b14f2
%add_maven_depmap JPP.%{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
89b14f2
install -pm 0644 hcatalog-pig-adapter/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-hcatalog-pig-adapter.pom
89b14f2
%add_maven_depmap JPP.%{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
89b14f2
install -pm 0644 server-extensions/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-hcatalog-server-extensions.pom
89b14f2
%add_maven_depmap JPP.%{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
89b14f2
install -pm 0644 webhcat/java-client/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-webhcat-java-client.pom
89b14f2
%add_maven_depmap JPP.%{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
89b14f2
install -pm 0644 webhcat/svr/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-webhcat.pom
89b14f2
%add_maven_depmap JPP.%{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
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