[thermostat/f20] Make SCL-ized thermostat buildable on plain Fedora.
jerboaa
jerboaa at fedoraproject.org
Fri Oct 25 17:17:38 UTC 2013
commit 2b7161bd750d43870c97b43367a01488e3e52c4b
Author: Severin Gehwolf <sgehwolf at redhat.com>
Date: Wed Oct 23 16:57:21 2013 +0200
Make SCL-ized thermostat buildable on plain Fedora.
thermostat.spec | 89 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 54 insertions(+), 35 deletions(-)
---
diff --git a/thermostat.spec b/thermostat.spec
index 3a59bc2..827e472 100644
--- a/thermostat.spec
+++ b/thermostat.spec
@@ -1,3 +1,6 @@
+# Flag set to 1 if it's an SCL build. 0 otherwise.
+%global is_scl_build %( test -n "$(rpm --eval '%{?scl}')" && echo 1 || echo 0)
+
%{?scl:%scl_package thermostat}
%{!?scl:%global pkg_name %{name}}
@@ -11,8 +14,18 @@
%global system_cachedir %{_localstatedir}/cache/%{pkg_name}/osgi-cache
%global system_logdir %{_localstatedir}/log/%{pkg_name}
%global system_statedir %{_localstatedir}/run/%{pkg_name}
+# _root_<foo> don't seem to be defined in non-SCL context.
+# Define some vars we use instead in order for the build to work
+# for SCL/non-SCL contexts.
+%if %{is_scl_build}
+ %global system_confdir %{_root_sysconfdir}
+ %global system_root_datadir %{_root_datadir}
+%else
+ %global system_confdir %{_sysconfdir}
+ %global system_root_datadir %{_datadir}
+%endif
# system java dir definition (non-scl)
-%global system_javadir %{_root_datadir}/java
+%global system_javadir %{system_root_datadir}/java
%global scl_javadir %{_javadir}
# Uncomment to build from snapshot out of hg. See also Release and Source0
#%global hgrev 97e66ed2e4ae
@@ -305,7 +318,7 @@ popd
################## Build JNI bits (end) ##################
# Make sure install location does not exist
-rm -rf %{buildroot}/%{_datarootdir}/java/%{scl_name}-%{pkg_name}
+rm -rf %{buildroot}/%{_datarootdir}/java/%{?scl_prefix}%{pkg_name}
# This is roughly equivalent to:
# mvn
# -Dthermostat.home=%{_datarootdir}/%{pkg_name} \
@@ -361,8 +374,8 @@ mv distribution/target/libs/thermostat-web-server*.jar webstorage-webapp/WEB-INF
#######################################################
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_sysconfdir}/%{pkg_name}
-mkdir -p %{buildroot}%{_root_sysconfdir}/sysconfig
-mkdir -p %{buildroot}%{_datarootdir}/java/%{scl_name}-%{pkg_name}
+mkdir -p %{buildroot}%{system_confdir}/sysconfig
+mkdir -p %{buildroot}%{_datarootdir}/java/%{?scl_prefix}%{pkg_name}
# JNI things live there
mkdir -p %{buildroot}%{_libdir}/%{pkg_name}
mkdir -p %{buildroot}%{_jnidir}
@@ -377,15 +390,15 @@ mkdir -p %{buildroot}%{_datarootdir}/applications
# have the '-i' switch.
%mvn_install
-rm -rf %{buildroot}%{_datarootdir}/java/%{scl_name}-%{pkg_name}
+rm -rf %{buildroot}%{_datarootdir}/java/%{?scl_prefix}%{pkg_name}
# now make xmvn happy, it expects version-less thermostat jars in
# %{_datadir}/java/%{pkg_name}
-mkdir -p %{buildroot}%{_datarootdir}/java/%{scl_name}-%{pkg_name}
+mkdir -p %{buildroot}%{_datarootdir}/java/%{?scl_prefix}%{pkg_name}
for i in $(cat distribution/symlink-map-filenames); do
s=$(echo $i | cut -d'#' -f1)
t=$(echo $i | cut -d'#' -f2)
- ln -s %{_datarootdir}/%{pkg_name}/$s %{buildroot}%{_datarootdir}/java/%{scl_name}-%{pkg_name}/$t
+ ln -s %{_datarootdir}/%{pkg_name}/$s %{buildroot}%{_datarootdir}/java/%{?scl_prefix}%{pkg_name}/$t
done
pushd distribution/target/libs
@@ -512,7 +525,7 @@ popd
# /usr/share/thermostat rather than ~/.thermostat which the script
# would do.
sed -i 's#__installdir__#%{_datarootdir}/%{pkg_name}/#g' %{SOURCE1}
-cp %{SOURCE1} %{buildroot}%{_root_sysconfdir}/sysconfig/%{pkg_name}
+cp %{SOURCE1} %{buildroot}%{system_confdir}/sysconfig/%{pkg_name}
# Set up directory structure for running thermostat storage/
# thermostat agend via systemd
@@ -549,7 +562,7 @@ cp -r webstorage-webapp %{buildroot}%{_datarootdir}/tomcat/webapps/%{pkg_name}
pushd %{buildroot}%{_datarootdir}/tomcat/webapps/%{pkg_name}/WEB-INF/lib
for i in thermostat-*.jar; do
newFileName=$(echo $i | sed 's/-\([0-9]\+\.\)\+[0-9]\+\(-[a-zA-Z0-9]\+\)\?//')
- ln -s %{_datarootdir}/tomcat/webapps/%{pkg_name}/WEB-INF/lib/$i %{buildroot}%{_datarootdir}/java/%{scl_name}-%{pkg_name}/$newFileName
+ ln -s %{_datarootdir}/tomcat/webapps/%{pkg_name}/WEB-INF/lib/$i %{buildroot}%{_datarootdir}/java/%{?scl_prefix}%{pkg_name}/$newFileName
done
popd
@@ -579,21 +592,23 @@ popd
# SCL only stuff in order to make the webapp work with system
# tomcat.
-sed -i 's#__service_name__#%{scl_name}-%{pkg_name}-tomcat-service#g' %{SOURCE4}
-cp %{SOURCE4} %{buildroot}%{_root_sysconfdir}/sysconfig/%{scl_name}-%{pkg_name}-tomcat
-
-sed -i 's#__catalina_base__#%{_datarootdir}/tomcat#g' %{SOURCE3}
-sed -i 's#__jaas_config__#%{_sysconfdir}/%{pkg_name}/%{pkg_name}_jaas.conf#g' %{SOURCE3}
-cp %{SOURCE3} %{buildroot}%{_root_sysconfdir}/sysconfig/%{scl_name}-%{pkg_name}-tomcat-service
-
-cp %{SOURCE5} %{buildroot}%{_unitdir}/thermostat1-tomcat.service
-# Create a symlinked CATALINA_BASE in order to make tomcat deploy
-# the scl-ized tomcat web-app. This is SCL only.
-pushd %{buildroot}/%{_datarootdir}/tomcat
-for i in conf lib logs work temp; do
- ln -s %{_root_datadir}/tomcat/$i $i
-done
-popd
+%if %{is_scl_build}
+ sed -i 's#__service_name__#%{?scl_prefix}%{pkg_name}-tomcat-service#g' %{SOURCE4}
+ cp %{SOURCE4} %{buildroot}%{system_confdir}/sysconfig/%{?scl_prefix}%{pkg_name}-tomcat
+
+ sed -i 's#__catalina_base__#%{_datarootdir}/tomcat#g' %{SOURCE3}
+ sed -i 's#__jaas_config__#%{_sysconfdir}/%{pkg_name}/%{pkg_name}_jaas.conf#g' %{SOURCE3}
+ cp %{SOURCE3} %{buildroot}%{system_confdir}/sysconfig/%{?scl_prefix}%{pkg_name}-tomcat-service
+
+ cp %{SOURCE5} %{buildroot}%{_unitdir}/%{?scl_prefix}%{pkg_name}-tomcat.service
+ # Create a symlinked CATALINA_BASE in order to make tomcat deploy
+ # the scl-ized tomcat web-app. This is SCL only.
+ pushd %{buildroot}/%{_datarootdir}/tomcat
+ for i in conf lib logs work temp; do
+ ln -s %{system_root_datadir}/tomcat/$i $i
+ done
+ popd
+%endif
# Fix .mfiles until xmvn officially supports SCLs.
# See RHBZ#979039
@@ -651,7 +666,7 @@ fi
%doc LICENSE
%doc README
%config(noreplace) %{_sysconfdir}/%{pkg_name}
-%config(noreplace) %{_root_sysconfdir}/sysconfig/%{pkg_name}
+%config(noreplace) %{system_confdir}/sysconfig/%{pkg_name}
# thermostat.desktop lives in /usr/share/applications
%{_datadir}/applications/%{pkg_name}.desktop
# thermostat icon
@@ -680,19 +695,23 @@ fi
%files javadoc
%doc LICENSE
%doc COPYING
-%{_datarootdir}/javadoc/%{scl_name}-%{pkg_name}
+%{_datarootdir}/javadoc/%{?scl_prefix}%{pkg_name}
%files webapp -f .mfiles-webapp
%{_datarootdir}/tomcat/webapps/%{pkg_name}
-%config(noreplace) %{_root_sysconfdir}/sysconfig/%{scl_name}-%{pkg_name}-tomcat
-%config(noreplace) %{_root_sysconfdir}/sysconfig/%{scl_name}-%{pkg_name}-tomcat-service
-# symlinked CATALINA_BASE
-%{_datarootdir}/tomcat/conf
-%{_datarootdir}/tomcat/lib
-%{_datarootdir}/tomcat/logs
-%{_datarootdir}/tomcat/work
-%{_datarootdir}/tomcat/temp
-%{_unitdir}/%{scl_name}-tomcat.service
+# We need some extra files in order to make thermostat-webapp work in an
+# SCL setup. However, we only need them there.
+%if %{is_scl_build}
+ %config(noreplace) %{system_confdir}/sysconfig/%{?scl_prefix}%{pkg_name}-tomcat
+ %config(noreplace) %{system_confdir}/sysconfig/%{?scl_prefix}%{pkg_name}-tomcat-service
+ # symlinked CATALINA_BASE
+ %{_datarootdir}/tomcat/conf
+ %{_datarootdir}/tomcat/lib
+ %{_datarootdir}/tomcat/logs
+ %{_datarootdir}/tomcat/work
+ %{_datarootdir}/tomcat/temp
+ %{_unitdir}/%{?scl_prefix}%{pkg_name}-tomcat.service
+%endif
%changelog
* Wed Oct 23 2013 Severin Gehwolf <sgehwolf at redhat.com> - 0.9.2-7
More information about the scm-commits
mailing list