[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