system-controller: change logging to be less misleading.
[profile/ivi/murphy.git] / packaging / murphy.spec
index b92716d..b652525 100644 (file)
@@ -1,3 +1,5 @@
+%bcond_with icosyscon
+
 # By default we build with distro-default compilation flags which
 # enables optimizations. If you want to build with full debugging
 # ie. with optimization turned off and full debug info (-O0 -g3)
@@ -7,6 +9,7 @@
 # squashing the -core and -plugins-base packages into the base
 # murphy package.
 
+
 %{!?_with_debug:%{!?_without_debug:%define _without_debug 0}}
 %{!?_with_lua:%{!?_without_lua:%define _with_lua 1}}
 %{!?_with_pulse:%{!?_without_pulse:%define _with_pulse 1}}
 %{!?_with_audiosession:%{!?_without_audiosession:%define _with_audiosession 1}}
 %{!?_with_websockets:%{!?_without_websockets:%define _with_websockets 1}}
 %{!?_with_smack:%{!?_without_smack:%define _with_smack 1}}
-%{!?_with_icosyscon:%{!?_without_icosyscon:%define _with_icosyscon 1}}
+%{!?_with_icosyscon:%{!?_without_icosyscon:%define _without_icosyscon 1}}
+%{!?_with_icoweston:%{!?_without_icoweston:%define _without_icoweston 1}}
+%{!?_with_sysmon:%{!?_without_sysmon:%define _with_sysmon 1}}
 %{!?_with_squashpkg:%{!?_without_squashpkg:%define _with_squashpkg 1}}
 
-# TODO: take care of /lib vs /lib64...
-%define systemddir /lib/systemd
+#
+# Abnormalize _with_icosyscon to _enable_icosyscon
+#
+# Since some people seem to have a hard time understanding that
+#
+# 1) the right way to disable a conditional _with_* rpm macro is to leave it
+#    undefined as opposed to defining it to 0
+#
+# 2) if you decide to do it the wrong way at least you should be consistent
+#    about it and not randomly change between the conventions
+#
+# we need to roll this butt-ugly hack to make sure that we always go with
+# the wrong convention. We always set up _enable_icosyscon to 1 or 0 depending
+# on how _with_icosyscon happens to be set (or unset).
+#
+
+%if %{!?_with_icosyscon:0}%{?_with_icosyscon:1}
+%if %{_with_icosyscon}
+%define _enable_icosyscon 1
+%else
+%define _enable_icosyscon 0
+%endif
+%else
+%define _enable_icosyscon 0
+%endif
 
-Summary: Murphy policy framework
+Summary: Resource policy framework
 Name: murphy
-Version: 0.0.42
+Version: 0.0.65
 Release: 1
 License: BSD-3-Clause
 Group: System/Service
 URL: http://01.org/murphy/
 Source0: %{name}-%{version}.tar.gz
-Source1: murphy.manifest
+Source1001: %{name}.manifest
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 %if %{?_with_squashpkg:0}%{!?_with_squashpkg:1}
 Requires: %{name}-core = %{version}
 %endif
 
 Requires(post): /bin/systemctl
+Requires(post): libcap-tools
 Requires(postun): /bin/systemctl
 
 BuildRequires: flex
@@ -46,6 +75,8 @@ BuildRequires: bison
 BuildRequires: pkgconfig(lua)
 BuildRequires: pkgconfig(libsystemd-daemon)
 BuildRequires: pkgconfig(libsystemd-journal)
+BuildRequires: pkgconfig(libcap)
+BuildRequires: pkgconfig(libtzplatform-config)
 
 %if %{?_with_pulse:1}%{!?_with_pulse:0}
 BuildRequires: pkgconfig(libpulse)
@@ -81,8 +112,14 @@ BuildRequires: pkgconfig(libsmack)
 %endif
 
 %if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
+# %%if %%{_with_icosyscon} # gbs can't, so don't bother...
 BuildRequires: ico-uxf-weston-plugin-devel
+BuildRequires: weston-ivi-shell-devel
+BuildRequires: genivi-shell-devel
 BuildRequires: pkgconfig(ail)
+BuildRequires: pkgconfig(aul)
+BuildRequires: libxml2-devel
+# %%endif
 %endif
 
 %if %{?_with_squashpkg:0}%{!?_with_squashpkg:1}
@@ -195,6 +232,16 @@ Requires: %{name} = %{version}
 %endif
 %endif
 
+%package gam
+Summary: Murphy support for Genivi Audio Manager
+Group: System/Libraries
+Requires: %{name} = %{version}
+
+%package gam-devel
+Summary: Murphy support for Genivi Audio Manager development files
+Group: System/Libraries
+Requires: %{name}-gam = %{version}
+
 %package tests
 Summary: Various test binaries for Murphy
 Group: System/Testing
@@ -209,14 +256,18 @@ Requires: %{name} = %{version}
 Summary: Murphy IVI resource manager plugin
 Group: System/Service
 
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
+%if %{_enable_icosyscon}
 %package system-controller
 Summary: Murphy IVI System Controller plugin
 Group: System/Service
+Requires: ico-uxf-homescreen
+Conflicts: murphy-ivi-resource-manager
+Provides: system-controller
+Conflicts: ico-uxf-homescreen-system-controller
 %endif
 
 %description
-This package contains the basic daemon.
+This package contains the basic Murphy daemon.
 
 %if %{?_with_squashpkg:0}%{!?_with_squashpkg:1}
 %description core
@@ -274,13 +325,25 @@ This package contains various test binaries for Murphy.
 %description ivi-resource-manager
 This package contains the Murphy IVI resource manager plugin.
 
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
+%if %{_enable_icosyscon}
 %description system-controller
 This package contains the Murphy IVI resource manager plugin.
 %endif
 
+%description gam
+This package contains the Murphy plugins for necessary for supporting
+Genivi Audio Manager.
+
+%description gam-devel
+This package contains development files for Murphy Genivi Audio Manager
+plugins.
+
 %prep
 %setup -q
+cp %{SOURCE1001} .
+
+echo "_with_icosyscon:   \"%{_with_icosyscon}\""
+echo "_enable_icosyscon: \"%{_enable_icosyscon}\""
 
 %build
 %if %{?_with_debug:1}%{!?_with_debug:0}
@@ -346,102 +409,92 @@ CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-smack"
 CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-smack"
 %endif
 
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
+%if %{_enable_icosyscon}
 CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-system-controller"
 %else
 CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-system-controller"
 %endif
 
-NUM_CPUS="`cat /proc/cpuinfo | tr -s '\t' ' ' | \
-grep '^processor *:' | wc -l`"
-[ -z "$NUM_CPUS" ] && NUM_CPUS=1
+%if %{?_with_sysmon:1}%{!?_with_sysmon:0}
+CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-system-monitor"
+%else
+CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-system-monitor"
+%endif
 
-./bootstrap && \
-%configure $CONFIG_OPTIONS --with-dynamic-plugins=$DYNAMIC_PLUGINS && \
-make clean && \
-make -j$(($NUM_CPUS + 1)) $V
+./bootstrap
+%configure $CONFIG_OPTIONS --with-dynamic-plugins=$DYNAMIC_PLUGINS
+%__make clean
+%__make %{?_smp_mflags} $V
 
 %install
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 %make_install
 
 # Make sure we have a plugin dir even if all the basic plugins
 # are configured to be built in.
-mkdir -p $RPM_BUILD_ROOT%{_libdir}/murphy/plugins
+mkdir -p %{buildroot}%{_libdir}/murphy/plugins
 
 # Get rid of any *.la files installed by libtool.
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f %{buildroot}%{_libdir}/*.la
 
 # Clean up also the murphy DB installation.
-rm -f $RPM_BUILD_ROOT%{_libdir}/murphy/*.la
+rm -f %{buildroot}%{_libdir}/murphy/*.la
 
 # Generate list of linkedin plugins (depends on the configuration).
 outdir="`pwd`"
-pushd $RPM_BUILD_ROOT >& /dev/null && \
-find ./%{_libdir}/murphy/plugins -name libmurphy-plugin-*.so* | \
+pushd %{buildroot} >& /dev/null && \
+find ./%{_libdir} -name libmurphy-plugin-*.so* | \
 sed 's#^./*#/#g' > $outdir/filelist.plugins-base && \
 popd >& /dev/null
+echo "Found the following linked-in plugin files:"
+cat $outdir/filelist.plugins-base | sed 's/^/    /g'
 
 # Generate list of header files, filtering ones that go to subpackages.
 outdir="`pwd`"
-pushd $RPM_BUILD_ROOT >& /dev/null && \
+pushd %{buildroot} >& /dev/null && \
 find ./%{_includedir}/murphy | \
-egrep -v '((pulse)|(ecore)|(glib)|(qt))-glue' | \
+grep -E -v '((pulse)|(ecore)|(glib)|(qt))-glue' | \
 sed 's#^./*#/#g' > $outdir/filelist.devel-includes && \
 popd >& /dev/null
 
 # Replace the default sample/test config files with the packaging ones.
-cp packaging.in/murphy-lua.conf $RPM_BUILD_ROOT%{_sysconfdir}/murphy/murphy.conf
-cp packaging.in/murphy.lua      $RPM_BUILD_ROOT%{_sysconfdir}/murphy/murphy.lua
+rm -f %{buildroot}%{_sysconfdir}/murphy/*
+cp packaging.in/murphy-lua.conf %{buildroot}%{_sysconfdir}/murphy/murphy.conf
+cp packaging.in/murphy.lua      %{buildroot}%{_sysconfdir}/murphy/murphy.lua
 
 # Copy plugin configuration files in place.
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/murphy/plugins/amb
+mkdir -p %{buildroot}%{_sysconfdir}/murphy/plugins/amb
 cp packaging.in/amb-config.lua \
-$RPM_BUILD_ROOT%{_sysconfdir}/murphy/plugins/amb/config.lua
+%{buildroot}%{_sysconfdir}/murphy/plugins/amb/config.lua
 
 # Copy tmpfiles.d config file in place
-mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir}
-cp packaging.in/murphyd.conf $RPM_BUILD_ROOT%{_tmpfilesdir}
+mkdir -p %{buildroot}%{_tmpfilesdir}
+cp packaging.in/murphyd.conf %{buildroot}%{_tmpfilesdir}
 
 # Copy the systemd files in place.
-mkdir -p $RPM_BUILD_ROOT%{systemddir}/system
-mkdir -p $RPM_BUILD_ROOT%{systemddir}/user
-cp packaging.in/murphyd.service $RPM_BUILD_ROOT%{systemddir}/system
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
-cp packaging.in/ico-homescreen.service $RPM_BUILD_ROOT%{systemddir}/user
-cp packaging.in/murphy-wait-for-launchpad-ready.path $RPM_BUILD_ROOT%{systemddir}/user
-%endif
+mkdir -p %{buildroot}%{_unitdir}
+mkdir -p %{buildroot}%{_unitdir_user}
+cp packaging.in/murphyd.service %{buildroot}%{_unitdir_user}
 
 %if %{?_with_dbus:1}%{!?_with_dbus:0}
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d
-cp packaging.in/org.Murphy.conf $RPM_BUILD_ROOT%{_sysconfdir}/dbus-1/system.d/org.Murphy.conf
+mkdir -p %{buildroot}%{_sysconfdir}/dbus-1/system.d
+sed "s/@TZ_SYS_USER_GROUP@/%{TZ_SYS_USER_GROUP}/g" \
+    packaging.in/org.Murphy.conf.in > packaging.in/org.Murphy.conf
+cp packaging.in/org.Murphy.conf \
+    %{buildroot}%{_sysconfdir}/dbus-1/system.d/org.Murphy.conf
 %endif
 
-# copy the manifest file
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy.manifest
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-tests.manifest
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-ivi-resource-manager.manifest
-%if %{?_with_qt:1}%{!?_with_qt:0}
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-qt.manifest
-%endif
-%if %{?_with_glib:1}%{!?_with_glib:0}
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-glib.manifest
-%endif
-%if %{?_with_pulse:1}%{!?_with_pulse:0}
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-pulse.manifest
-%endif
-%if %{?_with_ecore:1}%{!?_with_ecore:0}
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-ecore.manifest
-%endif
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
-cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/murphy-system-controller.manifest
-%endif
+# copy (experimental) GAM resource backend configuration files
+mkdir -p %{buildroot}%{_sysconfdir}/murphy/gam
+cp packaging.in/gam-*.names packaging.in/gam-*.tree \
+    %{buildroot}%{_sysconfdir}/murphy/gam
 
 %clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
 %post
-/bin/systemctl enable murphyd.service
+/bin/systemctl --user enable --global murphyd.service
+setcap 'cap_net_admin=+ep' %{_bindir}/murphyd
 
 %if %{?_with_squashpkg:0}%{!?_with_squashpkg:1}
 %post core
@@ -450,7 +503,7 @@ ldconfig
 
 %postun
 if [ "$1" = "0" ]; then
-/bin/systemctl disable murphyd.service
+/bin/systemctl --user disable --global murphyd.service
 fi
 
 %if %{?_with_squashpkg:0}%{!?_with_squashpkg:1}
@@ -484,24 +537,17 @@ ldconfig
 
 %if %{?_with_qt:1}%{!?_with_qt:0}
 %post qt
-lfconfig
+ldconfig
 
 %postun qt
 ldconfig
 %endif
 
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
-%post system-controller
-# prevent system controller from starting
-rm -f %{systemddir}/user/weston.target.wants/ico-uxf-wait-launchpad-ready.path
-# instead launch just ico-homescreen
-ln -s %{systemddir}/user/murphy-wait-for-launchpad-ready.path %{systemddir}/user/weston.target.wants/murphy-wait-for-launchpad-ready.path
-
+%post gam
+ldconfig
 
-%postun system-controller
-rm -f %{systemddir}/user/weston.target.wants/murphy-wait-for-launchpad-ready.path
-ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/weston.target.wants/ico-uxf-wait-launchpad-ready.path
-%endif
+%postun gam
+ldconfig
 
 %if %{?_with_squashpkg:1}%{!?_with_squashpkg:0}
 %files -f filelist.plugins-base
@@ -509,10 +555,10 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %files
 %endif
 %defattr(-,root,root,-)
-%manifest %{_datadir}/murphy.manifest
+%manifest murphy.manifest
 %{_bindir}/murphyd
 %config %{_sysconfdir}/murphy
-%{systemddir}/system/murphyd.service
+%{_unitdir_user}/murphyd.service
 %{_tmpfilesdir}/murphyd.conf
 %if %{?_with_audiosession:1}%{!?_with_audiosession:0}
 %{_sbindir}/asm-bridge
@@ -556,16 +602,16 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 
 %files devel -f filelist.devel-includes
 %defattr(-,root,root,-)
-# %{_includedir}/murphy/config.h
-# %{_includedir}/murphy/common.h
-# #%{_includedir}/murphy/core.h
-# %{_includedir}/murphy/common
-# %{_includedir}/murphy/core
-# %{_includedir}/murphy/resolver
-# %{_includedir}/murphy/resource
+# %%{_includedir}/murphy/config.h
+# %%{_includedir}/murphy/common.h
+# %%{_includedir}/murphy/core.h
+# %%{_includedir}/murphy/common
+# %%{_includedir}/murphy/core
+# %%{_includedir}/murphy/resolver
+# %%{_includedir}/murphy/resource
 # # hmmm... should handle disabled plugins properly.
-# %{_includedir}/murphy/domain-control
-# %{_includedir}/murphy/plugins
+# %%{_includedir}/murphy/domain-control
+# %%{_includedir}/murphy/plugins
 %{_includedir}/murphy-db
 %{_libdir}/libmurphy-common.so
 %{_libdir}/libmurphy-core.so
@@ -581,7 +627,7 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %{_libdir}/pkgconfig/murphy-common.pc
 %{_libdir}/pkgconfig/murphy-core.pc
 %{_libdir}/pkgconfig/murphy-resolver.pc
-#%{_libdir}/pkgconfig/murphy-resource.pc
+# %%{_libdir}/pkgconfig/murphy-resource.pc
 %if %{?_with_lua:1}%{!?_with_lua:0}
 %{_libdir}/pkgconfig/murphy-lua-utils.pc
 %{_libdir}/pkgconfig/murphy-lua-decision.pc
@@ -593,7 +639,7 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %{_libdir}/libbreedline*.so
 %{_libdir}/pkgconfig/breedline*.pc
 %if %{?_with_dbus:1}%{!?_with_dbus:0}
-#%{_includedir}/murphy/dbus
+# %%{_includedir}/murphy/dbus
 %{_libdir}/libmurphy-libdbus.so
 %{_libdir}/libmurphy-dbus-libdbus.so
 %{_libdir}/pkgconfig/murphy-libdbus.pc
@@ -604,17 +650,16 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %defattr(-,root,root,-)
 %doc %{_docdir}/../murphy/AUTHORS
 %doc %{_docdir}/../murphy/CODING-STYLE
-%license %{_docdir}/../murphy/COPYING
 %doc %{_docdir}/../murphy/ChangeLog
-%doc %{_docdir}/../murphy/INSTALL
 %doc %{_docdir}/../murphy/NEWS
 %doc %{_docdir}/../murphy/README
+%license COPYING LICENSE-BSD
 
 %if %{?_with_pulse:1}%{!?_with_pulse:0}
 %files pulse
 %defattr(-,root,root,-)
 %{_libdir}/libmurphy-pulse.so.*
-%manifest %{_datadir}/murphy-pulse.manifest
+%manifest murphy.manifest
 
 %files pulse-devel
 %defattr(-,root,root,-)
@@ -627,7 +672,7 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %files ecore
 %defattr(-,root,root,-)
 %{_libdir}/libmurphy-ecore.so.*
-%manifest %{_datadir}/murphy-ecore.manifest
+%manifest murphy.manifest
 
 %files ecore-devel
 %defattr(-,root,root,-)
@@ -640,7 +685,7 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %files glib
 %defattr(-,root,root,-)
 %{_libdir}/libmurphy-glib.so.*
-%manifest %{_datadir}/murphy-glib.manifest
+%manifest murphy.manifest
 
 %files glib-devel
 %defattr(-,root,root,-)
@@ -653,7 +698,7 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %files qt
 %defattr(-,root,root,-)
 %{_libdir}/libmurphy-qt.so.*
-%manifest %{_datadir}/murphy-qt.manifest
+%manifest murphy.manifest
 
 %files qt-devel
 %defattr(-,root,root,-)
@@ -662,27 +707,38 @@ ln -s %{systemddir}/user/ico-uxf-wait-launchpad-ready.path %{systemddir}/user/we
 %{_libdir}/pkgconfig/murphy-qt.pc
 %endif
 
+%files gam
+%defattr(-,root,root,-)
+%{_libdir}/libmurphy-decision-tree.so.*
+%{_libdir}/libmurphy-decision-tree.so.0.0.0
+%{_libdir}/murphy/plugins/plugin-gam-resource-manager.so
+
+%files gam-devel
+%defattr(-,root,root,-)
+%{_bindir}/decision-test
+%{_bindir}/pattern-generator
+%{_libdir}/libmurphy-decision-tree.so
+
 %files tests
 %defattr(-,root,root,-)
 %{_bindir}/resource-client
 %{_bindir}/resource-api-test
 %{_bindir}/resource-api-fuzz
+%{_bindir}/resource-context-create
 %{_bindir}/test-domain-controller
 %{_bindir}/murphy-console
-%manifest %{_datadir}/murphy-tests.manifest
+%manifest murphy.manifest
 
 %files ivi-resource-manager
 %defattr(-,root,root,-)
 %{_libdir}/murphy/plugins/plugin-ivi-resource-manager.so
-%manifest %{_datadir}/murphy-ivi-resource-manager.manifest
+%manifest murphy.manifest
 
-%if %{?_with_icosyscon:1}%{!?_with_icosyscon:0}
+%if %{_enable_icosyscon}
 %files system-controller
 %defattr(-,root,root,-)
 %{_libdir}/murphy/plugins/plugin-system-controller.so
-%{systemddir}/user/ico-homescreen.service
-%{systemddir}/user/murphy-wait-for-launchpad-ready.path
-%manifest %{_datadir}/murphy-system-controller.manifest
+%manifest murphy.manifest
 %endif
 
 %changelog