# SPEC file overview: # https://docs.fedoraproject.org/en-US/quick-docs/creating-rpm-packages/#con_rpm-spec-file-overview # Fedora packaging guidelines: # https://docs.fedoraproject.org/en-US/packaging-guidelines/ %define vendor apache %define livy_version 0.7.1 %define spark_major 2 %define spark_version 2.4.8 %define hadoop_version 2.7 %define livy_package apache-livy-%{livy_version}-incubating-bin %define python_version 2.7 %define java_version 1.8.0 %define user_name apache-livy %define group_name apache-livy %define spark spark%{spark_major} %define livy livy-%{spark} Name: %{vendor}-%{livy} Version: %{livy_version} Release: 0%{?dist} Summary: Apache Livy Requires(pre): shadow-utils BuildRequires: systemd-rpm-macros BuildRequires: /usr/bin/pathfix.py Requires: mysql-connector-java BuildArch: noarch License: Apache URL: http://livy.apache.org Source0: https://dlcdn.apache.org/incubator/livy/0.7.1-incubating/%{livy_package}.zip Requires: java-%{java_version}-openjdk-headless Requires: %{vendor}-%{spark} %description Big data processing with Apache Spark %prep %setup -q -n %{livy_package} %build %install mkdir -p %{buildroot}/opt/%{vendor}/%{livy_package} mkdir -p %{buildroot}/%{_bindir} mkdir -p %{buildroot}/%{_unitdir} mkdir -p %{buildroot}/%{_sharedstatedir}/%{livy} mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig mkdir -p %{buildroot}/%{_sysconfdir}/%{livy} mkdir -p %{buildroot}/%{_localstatedir}/log/%{livy}/ mkdir -p %{buildroot}/%{_datadir}/%{name}/ cp -r * %{buildroot}/opt/%{vendor}/%{livy_package} cp -r conf/* %{buildroot}/%{_sysconfdir}/%{livy} ln -s ./%{livy_package} %{buildroot}/opt/%{vendor}/%{livy} cat << EOF > %{buildroot}/%{_bindir}/%{livy}-server #!/bin/bash export LIVY_CONF_DIR=%{_sysconfdir}/%{livy} /opt/%{vendor}/%{livy}/bin/livy-server \$@ EOF cat << EOF > %{buildroot}/%{_unitdir}/%{livy}-server.service [Unit] Description=Spark Livy Server After=network-online.target [Service] EnvironmentFile=%{_sysconfdir}/sysconfig/%{livy} ExecStart=%{_bindir}/%{livy}-server WorkingDirectory=%{_sharedstatedir}/%{livy} User=%{user_name} Type=simple KillSignal=SIGTERM Restart=on-failure SendSIGKILL=no [Install] WantedBy=default.target EOF cat << EOF > %{buildroot}/%{_sysconfdir}/sysconfig/%{livy} LIVY_LOG_DIR=%{_localstatedir}/log/%{livy}/ LIVY_CONF_DIR=%{_sysconfdir}/%{livy}/ EOF cat << EOF > %{buildroot}/%{_sysconfdir}/%{livy}/livy-env.sh umask 002 export JAVA_HOME=/usr/lib/jvm/jre-%{java_version}/ export SPARK_HOME=/opt/%{vendor}/%{spark}/ export SPARK_CONF_DIR=%{_sysconfdir}/%{spark} EOF %files %defattr(-, root, root, -) %attr(0755, root, root) /usr/bin/* %config %{_sysconfdir}/%{livy}/livy-env.sh %{_sysconfdir}/%{livy}/*.template %{_unitdir}/%{livy}-*.service %{_sysconfdir}/sysconfig/%{livy} /opt/%{vendor}/%{livy_package} /opt/%{vendor}/%{livy} %dir %attr(2775, %{user_name}, %{group_name}) %{_sharedstatedir}/%{livy} %dir %attr(2775, %{user_name}, %{group_name}) %{_localstatedir}/log/%{livy} %pre getent group %{group_name} >/dev/null || groupadd -r %{group_name} getent passwd %{user_name} >/dev/null || \ useradd -r -g %{group_name} -d %{_sharedstatedir}/%{livy} -s /sbin/nologin \ -c "Useful comment about the purpose of this account" %{user_name} exit 0 %post %systemd_post %{livy}-server.service %preun %systemd_preun %{livy}-server.service %postun %systemd_postun_with_restart %{livy}-server.service %changelog