+%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.46
+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
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
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
%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}
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"
CONFIG_OPTIONS="$CONFIG_OPTIONS --disable-system-monitor"
%endif
-NUM_CPUS="`cat /proc/cpuinfo | tr -s '\t' ' ' | \
-grep '^processor *:' | wc -l`"
-[ -z "$NUM_CPUS" ] && NUM_CPUS=1
-
-./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 && \
+pushd %{buildroot} >& /dev/null && \
find ./%{_libdir} -name libmurphy-plugin-*.so* | \
sed 's#^./*#/#g' > $outdir/filelist.plugins-base && \
popd >& /dev/null
# 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
%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
-%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
%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
%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
+# %%{_includedir}/murphy/dbus
%{_libdir}/libmurphy-libdbus.so
%{_libdir}/libmurphy-dbus-libdbus.so
%{_libdir}/pkgconfig/murphy-libdbus.pc
%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,-)
%files ecore
%defattr(-,root,root,-)
%{_libdir}/libmurphy-ecore.so.*
-%manifest %{_datadir}/murphy-ecore.manifest
+%manifest murphy.manifest
%files ecore-devel
%defattr(-,root,root,-)
%files glib
%defattr(-,root,root,-)
%{_libdir}/libmurphy-glib.so.*
-%manifest %{_datadir}/murphy-glib.manifest
+%manifest murphy.manifest
%files glib-devel
%defattr(-,root,root,-)
%files qt
%defattr(-,root,root,-)
%{_libdir}/libmurphy-qt.so.*
-%manifest %{_datadir}/murphy-qt.manifest
+%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 %{_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