Blob Blame History Raw
%global commit      5c054cadf88a5bbdd846142637c27b87936ab6ef
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global shortname   tachyon

Name:          amplab-%{shortname}
# Given the naming conflicts with other packages, and eventually this will
# switch to apache-tachyon should
Version:       0.5.0
Release:       4.%{shortcommit}%{?dist}
Summary:       Reliable file sharing at memory speed across cluster frameworks
License:       ASL 2.0
URL:           http://tachyon-project.org/
Source0:       https://github.com/amplab/tachyon/archive/%{commit}/%{shortname}-%{version}-%{shortcommit}.tar.gz
Source1:       %{shortname}-tmpfiles.conf
Source2:       %{shortname}-master.service
Source3:       %{shortname}-slave.service
Source4:       %{shortname}-layout.sh
Source5:       %{shortname}-env.sh

Patch0:        tachyon-0.4.0-SNAPSHOT-log4props.patch
Patch1:        tachyon-0.5.0-defaults.patch

BuildRequires: java-devel
BuildRequires: mvn(commons-io:commons-io)

%if 0%{?fedora} >= 21
BuildRequires: mvn(org.slf4j:slf4j-log4j12)
%else
BuildRequires: mvn(log4j:log4j)
%endif

BuildRequires: mvn(org.apache.ant:ant)
BuildRequires: mvn(org.apache.commons:commons-lang3)

BuildRequires: mvn(org.apache.hadoop:hadoop-common)
BuildRequires: mvn(org.apache.hadoop:hadoop-mapreduce-client-core)
BuildRequires: mvn(org.apache.hadoop:hadoop-hdfs)
BuildRequires: mvn(org.apache.curator:curator-recipes)
BuildRequires: mvn(org.apache.curator:curator-test)
BuildRequires: mvn(org.apache.thrift:libthrift)
BuildRequires: mvn(org.eclipse.jetty:jetty-webapp)
BuildRequires: mvn(org.eclipse.jetty:jetty-server)
BuildRequires: mvn(org.eclipse.jetty:jetty-servlet)
BuildRequires: mvn(org.glassfish.web:javax.servlet.jsp)
BuildRequires: mvn(org.slf4j:slf4j-api)
BuildRequires: mvn(org.slf4j:slf4j-log4j12)
BuildRequires: mvn(org.slf4j:slf4j-api)
BuildRequires: mvn(org.powermock:powermock-module-junit4)
BuildRequires: mvn(org.powermock:powermock-api-mockito)
BuildRequires: mvn(org.apache.hadoop.fs.glusterfs:glusterfs-hadoop)
BuildRequires: mvn(org.eclipse.jetty:jetty-jsp)
BuildRequires: mvn(org.eclipse.jetty:jetty-webapp)
BuildRequires: mvn(org.eclipse.jetty:jetty-server)
BuildRequires: mvn(org.eclipse.jetty:jetty-servlets)
BuildRequires: mvn(org.eclipse.jetty:jetty-util)

# Test deps
BuildRequires: mvn(junit:junit)

BuildRequires: maven-local
BuildRequires: maven-plugin-bundle
BuildRequires: exec-maven-plugin
BuildRequires: maven-remote-resources-plugin
BuildRequires: maven-site-plugin
BuildRequires: replacer
BuildRequires: thrift
BuildRequires: systemd
BuildRequires: maven-shade-plugin

BuildArch:     noarch

%description
Tachyon is a fault tolerant distributed file system
enabling reliable file sharing at memory-speed
across cluster frameworks, such as Spark and MapReduce.
It achieves high performance by leveraging lineage
information and using memory aggressively.
Tachyon caches working set files in memory, and
enables different jobs/queries and frameworks to
access cached files at memory speed. Thus, Tachyon
avoids going to disk to load data-sets that
are frequently read.

%package javadoc
Summary:       Javadoc for %{name}

%description javadoc
This package contains javadoc for %{name}.

%prep
%setup -q -n tachyon-%{commit}
find -name '*.class' -print -delete
find -name '*.jar' -print -delete

%patch0 -F2 -p1
%patch1 -F2 -p1

sed -i "s|<artifactId>hadoop-client|<artifactId>hadoop-mapreduce-client-core|" core/pom.xml

%pom_xpath_remove "pom:repositories"

# Remove unnecessary plugin
# %pom_remove_plugin :maven-assembly-plugin

# Fix unavailable jetty-jsp-2.1
#%pom_remove_dep org.eclipse.jetty:jetty-jsp
%pom_add_dep org.glassfish.web:javax.servlet.jsp::compile
%pom_add_dep org.eclipse.jetty:jetty-util

#make additions for hadoop2
%pom_add_dep org.apache.hadoop:hadoop-common
%pom_add_dep org.apache.hadoop:hadoop-hdfs

%build

%mvn_file org.tachyonproject:%{shortname} %{shortname}
%mvn_build

%install
%mvn_install

#######################
# install system integration files
#######################
mkdir -p %{buildroot}%{_sysconfdir}/tmpfiles.d
install -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/tmpfiles.d/%{shortname}.conf

#######################
mkdir -p %{buildroot}%{_unitdir}
install -m 0644 %{SOURCE2} %{SOURCE3} %{buildroot}%{_unitdir}/

#######################
mkdir -p %{buildroot}%{_libexecdir}/
install -m 0755 %{SOURCE4} %{buildroot}%{_libexecdir}/
install -m 0755 libexec/* %{buildroot}%{_libexecdir}/

#######################
mkdir -p %{buildroot}%{_bindir}/
install -m 0755 bin/tachyon* %{buildroot}%{_bindir}/
mv %{buildroot}%{_bindir}/%{shortname} %{buildroot}%{_bindir}/%{shortname}.sh

#######################
mkdir -p %{buildroot}/%{_sysconfdir}/%{shortname}
install -m 0644 conf/log4j.properties conf/slaves %{buildroot}/%{_sysconfdir}/%{shortname}
install -m 0644 %{SOURCE5} %{buildroot}/%{_sysconfdir}/%{shortname}

#######################
mkdir -p -m0755 %{buildroot}/%{_var}/log/%{shortname}
mkdir -p -m0755 %{buildroot}%{_var}/lib/%{shortname}/journal

#######################
mkdir -p -m0755 %{buildroot}/%{_datadir}/%{shortname}/web
cp -rf core/src/main/webapp %{buildroot}/%{_datadir}/%{shortname}/web

#######################
# NOTE: The following is plugging into hadoop without
# having administrative steps.
mkdir -p -m0755 %{buildroot}/%{_datadir}/hadoop/common/lib
%{__ln_s} %{_javadir}/%{shortname}.jar %{buildroot}/%{_datadir}/hadoop/common/lib
%{__ln_s} %{_javadir}/libthrift.jar %{buildroot}/%{_datadir}/hadoop/common/lib/%{shortname}-libthrift.jar

%files -f .mfiles
%doc LICENSE README.md
%dir %{_sysconfdir}/%{shortname}
%config(noreplace) %{_sysconfdir}/%{shortname}/log4j.properties
%config(noreplace) %{_sysconfdir}/%{shortname}/slaves
%config(noreplace) %{_sysconfdir}/%{shortname}/tachyon-env.sh
%config(noreplace) %{_sysconfdir}/tmpfiles.d/%{shortname}.conf
%{_bindir}/tachyon*
%{_libexecdir}/tachyon*
%config(noreplace) %{_sysconfdir}/tmpfiles.d/%{shortname}.conf
%{_unitdir}/*
%attr(0755,hdfs,hdfs) %dir %{_var}/log/%{shortname}
%attr(0755,hdfs,hdfs) %dir %{_var}/lib/%{shortname}/journal
%{_datadir}/hadoop/common/lib/%{shortname}.jar
%{_datadir}/hadoop/common/lib/%{shortname}-libthrift.jar
%{_datadir}/%{shortname}

%files javadoc -f .mfiles-javadoc
%doc LICENSE

############################################
# NOTE: uses hdfs user vs. creating own hdfs required
#%%pre
#getent group tachyon >/dev/null || groupadd -f -r tachyon
#if ! getent passwd tachyon >/dev/null ; then
#      useradd -r -g tachyon -d %%{_sharedstatedir}/%%{shortname} -s /sbin/nologin \
#              -c "%%{shortname} daemon account" tachyon
#fi
#exit 0

%post
%systemd_post %{shortname}-master.service %{shortname}-slave.service

%preun
%systemd_preun %{shortname}-slave.service %{shortname}-master.service

%postun
%systemd_postun_with_restart %{shortname}-slave.service %{shortname}-master.service

%changelog
* Wed Apr 22 2015 Peter Robinson <pbrobinson@fedoraproject.org> 0.5.0-4.5c054ca
- ARMv7 now has hadoop

* Wed Sep 10 2014 Huamin Chen <hchen@redhat.com> - 0.5.0-3.5c054ca
- Update to 0.5.0 official

* Fri Sep 5 2014 Timothy St. Clair <tstclair@redhat.com> - 0.5.0-2.5c054ca
- Update to 0.5.0 official

* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.5.0-2.SNAPSHOT.fc8d2fd
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Wed May 28 2014 Timothy St. Clair <tstclair@redhat.com> - 0.5.0-1.SNAPSHOT.fc8d2fd
- Update to 0.5.0

* Mon Feb 24 2014 Timothy St. Clair <tstclair@redhat.com> - 0.4.1-2.SNAPSHOT.4b9c806
- Update due to cascading dependencies around java-headless

* Mon Feb 17 2014 Timothy St. Clair<tstclair@redhat.com> 0.4.1-1.SNAPSHOT.4b9c806
- Update to latest, with updated fixes for rawhide

* Fri Dec 6 2013 Timothy St. Clair<tstclair@redhat.com> 0.4.0-6.SNAPSHOT.8e4e9a4
- Update to latest modifications

* Wed Nov 20 2013 Timothy St. Clair<tstclair@redhat.com> 0.4.0-5.SNAPSHOT.515c2c8
- Update to exclude arm due to missing dependencies

* Fri Nov 15 2013 Timothy St. Clair<tstclair@redhat.com> 0.4.0-4.SNAPSHOT.515c2c8
- Patches accepted upstream, thus changing source url to be canonical

* Thu Nov 7 2013 Timothy St. Clair<tstclair@redhat.com> 0.4.0-3.SNAPSHOT.9d66149
- Modifications from system testing.

* Mon Nov 4 2013 Timothy St. Clair<tstclair@redhat.com> 0.4.0-2.SNAPSHOT.9d66149
- System integration and testing.

* Mon Oct 28 2013 Timothy St. Clair <tstclair@redhat.com> 0.4.0-1.SNAPSHOT.9d66149
- Pre-release update to 0.4.0 with script modifications.

* Thu Oct 10 2013 Timothy St. Clair <tstclair@redhat.com> 0.3.0-1
- Update to the latest in preparation for release.

* Sun Sep 29 2013 gil cattaneo <puntogil@libero.it> 0.2.1-1
- initial rpm