+%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)
# 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.39
+Version: 0.0.65
Release: 1
License: BSD-3-Clause
Group: System/Service
URL: http://01.org/murphy/
Source0: %{name}-%{version}.tar.gz
+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
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)
%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}
%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
Requires: %{name} = %{version}
%endif
+%package ivi-resource-manager
+Summary: Murphy IVI resource manager plugin
+Group: System/Service
+
+%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
%description tests
This package contains various test binaries for Murphy.
+%description ivi-resource-manager
+This package contains the Murphy IVI resource manager plugin.
+
+%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}
%endif
CONFIG_OPTIONS=""
-DYNAMIC_PLUGINS="domain-control"
+DYNAMIC_PLUGINS="domain-control,system-controller,ivi-resource-manager"
%if %{?_with_pulse:1}%{!?_with_pulse:0}
CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-pulse"
%endif
%if %{?_with_dbus:1}%{!?_with_dbus:0}
-CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-dbus"
+CONFIG_OPTIONS="$CONFIG_OPTIONS --enable-gpl --enable-libdbus"
%else
-CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-dbus"
+CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-libdbus"
%endif
%if %{?_with_telephony:1}%{!?_with_telephony:0}
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 service file in place.
-mkdir -p $RPM_BUILD_ROOT%{systemddir}/system
-cp packaging.in/murphyd.service $RPM_BUILD_ROOT%{systemddir}/system
+# Copy the systemd files in place.
+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 (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
%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}
%if %{?_with_qt:1}%{!?_with_qt:0}
%post qt
-lfconfig
+ldconfig
%postun qt
ldconfig
%endif
+%post gam
+ldconfig
+
+%postun gam
+ldconfig
+
%if %{?_with_squashpkg:1}%{!?_with_squashpkg:0}
%files -f filelist.plugins-base
%else
%files
%endif
%defattr(-,root,root,-)
+%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
%{_libdir}/murphy/*.so.*
%{_libdir}/libbreedline*.so.*
%if %{?_with_dbus:1}%{!?_with_dbus:0}
-%{_libdir}/libmurphy-dbus.so.*
+%{_libdir}/libmurphy-libdbus.so.*
+%{_libdir}/libmurphy-dbus-libdbus.so.*
%endif
%if %{?_with_squashpkg:0}%{!?_with_squashpkg:1}
%files plugins-base -f filelist.plugins-base
%defattr(-,root,root,-)
%endif
-%{_libdir}/murphy/plugins
-%{_libdir}/libmurphy-plugin-system-controller.so*
+%{_libdir}/murphy/plugins/plugin-domain-control.so
+%{_libdir}/murphy/plugins/plugin-resource-asm.so
+%{_libdir}/murphy/plugins/plugin-resource-native.so
%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
%{_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
%{_libdir}/libbreedline*.so
%{_libdir}/pkgconfig/breedline*.pc
%if %{?_with_dbus:1}%{!?_with_dbus:0}
-#%{_includedir}/murphy/dbus
-%{_libdir}/libmurphy-dbus.so
-%{_libdir}/pkgconfig/murphy-dbus.pc
+# %%{_includedir}/murphy/dbus
+%{_libdir}/libmurphy-libdbus.so
+%{_libdir}/libmurphy-dbus-libdbus.so
+%{_libdir}/pkgconfig/murphy-libdbus.pc
+%{_libdir}/pkgconfig/murphy-dbus-libdbus.pc
%endif
%files doc
%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 murphy.manifest
%files pulse-devel
%defattr(-,root,root,-)
%files ecore
%defattr(-,root,root,-)
%{_libdir}/libmurphy-ecore.so.*
+%manifest murphy.manifest
%files ecore-devel
%defattr(-,root,root,-)
%files glib
%defattr(-,root,root,-)
%{_libdir}/libmurphy-glib.so.*
+%manifest murphy.manifest
%files glib-devel
%defattr(-,root,root,-)
%files qt
%defattr(-,root,root,-)
%{_libdir}/libmurphy-qt.so.*
+%manifest murphy.manifest
%files qt-devel
%defattr(-,root,root,-)
%{_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 murphy.manifest
+
+%files ivi-resource-manager
+%defattr(-,root,root,-)
+%{_libdir}/murphy/plugins/plugin-ivi-resource-manager.so
+%manifest murphy.manifest
+
+%if %{_enable_icosyscon}
+%files system-controller
+%defattr(-,root,root,-)
+%{_libdir}/murphy/plugins/plugin-system-controller.so
+%manifest murphy.manifest
+%endif
%changelog
* Tue Nov 27 2012 Krisztian Litkey <krisztian.litkey@intel.com> -