%define disk_group disk
# The group that has write access to /dev/tty* devices.
%define tty_group tty
+# Default platform is Tizen, setup Fedora with --define 'platform_type FEDORA'
+%{!?platform_type:%define platform_type "TIZEN"}
Name: vasum
+Epoch: 1
Version: 0.1.1
Release: 0
Source0: %{name}-%{version}.tar.gz
Summary: Daemon for managing zones
BuildRequires: cmake
BuildRequires: boost-devel
-BuildRequires: libjson-devel >= 0.10
-BuildRequires: libcap-ng-devel
-BuildRequires: lxc-devel
-BuildRequires: pkgconfig(libConfig)
-BuildRequires: pkgconfig(libLogger)
-BuildRequires: pkgconfig(libSimpleDbus)
BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(libsystemd-journal)
-BuildRequires: pkgconfig(libsystemd-daemon)
-BuildRequires: pkgconfig(sqlite3)
+BuildRequires: lxc-devel
+Requires: lxc
+%if %{platform_type} == "TIZEN"
+Requires: iproute2
Requires(post): libcap-tools
-Requires: bridge-utils
+%else
+Requires: iproute
+Requires(post): libcap
+%endif
+Obsoletes: vasum-daemon < 1:0
%description
This package provides a daemon used to manage zones - start, stop and switch
(display, input devices) to the other zone.
%files
+%if %{platform_type} == "TIZEN"
%manifest packaging/vasum.manifest
+%endif
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/vasum-server
%dir /etc/vasum
-%dir /etc/vasum/zones
-%dir /etc/vasum/lxc-templates
%dir /etc/vasum/templates
%config /etc/vasum/daemon.conf
-%config /etc/vasum/zones/*.conf
-%attr(755,root,root) /etc/vasum/lxc-templates/*.sh
+%attr(755,root,root) /etc/vasum/templates/*.sh
%config /etc/vasum/templates/*.conf
%{_unitdir}/vasum.service
+%{_unitdir}/vasum.socket
%{_unitdir}/multi-user.target.wants/vasum.service
-/etc/dbus-1/system.d/org.tizen.vasum.host.conf
+%config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
+%dir %{_datadir}/zones
%prep
%setup -q
-DCMAKE_BUILD_TYPE=%{build_type} \
-DSCRIPT_INSTALL_DIR=%{script_dir} \
-DSYSTEMD_UNIT_DIR=%{_unitdir} \
+ -DDATA_DIR=%{_datadir} \
-DPYTHON_SITELIB=%{python_sitelib} \
-DVASUM_USER=%{vsm_user} \
-DINPUT_EVENT_GROUP=%{input_event_group} \
-DDISK_GROUP=%{disk_group} \
- -DTTY_GROUP=%{tty_group}
+ -DTTY_GROUP=%{tty_group} \
+ -DWITHOUT_DBUS=%{?without_dbus}
make -k %{?jobs:-j%jobs}
%install
%make_install
mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
+mkdir -p %{buildroot}/%{_datadir}/zones
%clean
rm -rf %{buildroot}
%package client
Summary: Vasum Client
Group: Development/Libraries
-Requires: vasum = %{version}-%{release}
+Requires: vasum = %{epoch}:%{version}-%{release}
+Obsoletes: vasum < 1:0
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
%description client
Library interface to the vasum daemon
+%post -n vasum-client -p /sbin/ldconfig
+
+%postun -n vasum-client -p /sbin/ldconfig
+
%files client
+%if %{platform_type} == "TIZEN"
%manifest packaging/libvasum-client.manifest
+%endif
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libvasum.so.0.0.1
+%attr(755,root,root) %{_libdir}/libvasum-client.so.%{version}
+%{_libdir}/libvasum-client.so.0
+%attr(755,root,root) %{_libdir}/libvasum.so.%{version}
%{_libdir}/libvasum.so.0
-%post client -p /sbin/ldconfig
-
-%postun client -p /sbin/ldconfig
-
## Devel Package ###############################################################
%package devel
Summary: Vasum Client Devel
Group: Development/Libraries
-Requires: vasum = %{version}-%{release}
-Requires: vasum-client = %{version}-%{release}
+Requires: vasum = %{epoch}:%{version}-%{release}
+Requires: vasum-client = %{epoch}:%{version}-%{release}
%description devel
Development package including the header files for the client library
%files devel
+%if %{platform_type} == "TIZEN"
%manifest packaging/vasum.manifest
+%endif
%defattr(644,root,root,755)
+%{_libdir}/libvasum-client.so
%{_libdir}/libvasum.so
%{_includedir}/vasum
-%{_libdir}/pkgconfig/*.pc
+%{_libdir}/pkgconfig/vasum-client.pc
+%{_libdir}/pkgconfig/vasum.pc
## Zone Support Package ###################################################
-# TODO move to a separate repository
%package zone-support
Summary: Vasum Support
Group: Security/Other
-Conflicts: vasum
%description zone-support
Zones support installed inside every zone.
%files zone-support
+%if %{platform_type} == "TIZEN"
%manifest packaging/vasum-zone-support.manifest
+%endif
%defattr(644,root,root,755)
-/etc/dbus-1/system.d/org.tizen.vasum.zone.conf
+%config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
## Zone Daemon Package ####################################################
-# TODO move to a separate repository
%package zone-daemon
Summary: Vasum Zones Daemon
Group: Security/Other
-Requires: vasum-zone-support = %{version}-%{release}
+Requires: vasum-zone-support = %{epoch}:%{version}-%{release}
%description zone-daemon
Daemon running inside every zone.
%files zone-daemon
+%if %{platform_type} == "TIZEN"
%manifest packaging/vasum-zone-daemon.manifest
+%endif
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/vasum-zone-daemon
-/etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
+%config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
## Command Line Interface ######################################################
%package cli
Summary: Vasum Command Line Interface
Group: Security/Other
-Requires: vasum-client = %{version}-%{release}
+Requires: vasum-client = %{epoch}:%{version}-%{release}
%description cli
Command Line Interface for vasum.
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/vasum-cli
+%package cli-completion
+Summary: Vasum Command Line Interface bash completion
+Group: Security/Other
+Requires: vasum-cli = %{epoch}:%{version}-%{release}
+#Requires: bash-completion
+
+%description cli-completion
+Command Line Interface bash completion for vasum.
+
+%files cli-completion
+%attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
## Test Package ################################################################
%package tests
Summary: Vasum Tests
Group: Development/Libraries
-Requires: vasum = %{version}-%{release}
-Requires: vasum-client = %{version}-%{release}
+Requires: vasum = %{epoch}:%{version}-%{release}
+Requires: vasum-client = %{epoch}:%{version}-%{release}
Requires: python
+%if %{platform_type} == "TIZEN"
Requires: python-xml
+%endif
Requires: boost-test
%description tests
Unit tests for both: server and client and integration tests.
+%post tests
+systemctl daemon-reload
+systemctl enable vasum-socket-test.socket
+systemctl start vasum-socket-test.socket
+
+%preun tests
+systemctl stop vasum-socket-test.socket
+systemctl disable vasum-socket-test.socket
+
+%postun tests
+systemctl daemon-reload
+
%files tests
+%if %{platform_type} == "TIZEN"
%manifest packaging/vasum-server-tests.manifest
+%endif
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/vasum-server-unit-tests
+%attr(755,root,root) %{_bindir}/vasum-socket-test
%attr(755,root,root) %{script_dir}/vsm_all_tests.py
%attr(755,root,root) %{script_dir}/vsm_int_tests.py
%attr(755,root,root) %{script_dir}/vsm_launch_test.py
%{script_dir}/vsm_test_parser.py
-%{_datadir}/vasum/tests
-%attr(755,root,root) %{_datadir}/vasum/lxc-templates
+%config /etc/vasum/tests/*.conf
+%config /etc/vasum/tests/dbus/*.conf
+%config /etc/vasum/tests/provision/*.conf
+%config /etc/vasum/tests/templates/*.conf
+%attr(755,root,root) /etc/vasum/tests/templates/*.sh
+%config /etc/vasum/tests/utils/*.txt
%{python_sitelib}/vsm_integration_tests
-/etc/dbus-1/system.d/org.tizen.vasum.tests.conf
+%config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
+%{_unitdir}/vasum-socket-test.socket
+%{_unitdir}/vasum-socket-test.service
+
+## libLogger Package ###########################################################
+%package -n libLogger
+Summary: Logger library
+Group: Security/Other
+BuildRequires: pkgconfig(libsystemd-journal)
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description -n libLogger
+The package provides libLogger library.
+
+%post -n libLogger -p /sbin/ldconfig
+
+%postun -n libLogger -p /sbin/ldconfig
+
+%files -n libLogger
+%defattr(644,root,root,755)
+%{_libdir}/libLogger.so.0
+%attr(755,root,root) %{_libdir}/libLogger.so.%{version}
+
+%package -n libLogger-devel
+Summary: Development logger library
+Group: Development/Libraries
+Requires: libLogger = %{epoch}:%{version}-%{release}
+
+%description -n libLogger-devel
+The package provides libLogger development tools and libs.
+
+%files -n libLogger-devel
+%defattr(644,root,root,755)
+%{_libdir}/libLogger.so
+%{_includedir}/vasum-tools/logger
+%{_libdir}/pkgconfig/libLogger.pc
+
+## libSimpleDbus Package #######################################################
+%package -n libSimpleDbus
+Summary: Simple dbus library
+Group: Security/Other
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description -n libSimpleDbus
+The package provides libSimpleDbus library.
+
+%post -n libSimpleDbus -p /sbin/ldconfig
+
+%postun -n libSimpleDbus -p /sbin/ldconfig
+
+%files -n libSimpleDbus
+%defattr(644,root,root,755)
+%{_libdir}/libSimpleDbus.so.0
+%attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
+
+%package -n libSimpleDbus-devel
+Summary: Development Simple dbus library
+Group: Development/Libraries
+Requires: libSimpleDbus = %{epoch}:%{version}-%{release}
+Requires: pkgconfig(libLogger)
+
+%description -n libSimpleDbus-devel
+The package provides libSimpleDbus development tools and libs.
+
+%files -n libSimpleDbus-devel
+%defattr(644,root,root,755)
+%{_libdir}/libSimpleDbus.so
+%{_includedir}/vasum-tools/dbus
+%{_libdir}/pkgconfig/libSimpleDbus.pc
+
+## libConfig Package ##########################################################
+%package -n libConfig
+Summary: Config library
+Group: Security/Other
+BuildRequires: pkgconfig(sqlite3)
+%if %{platform_type} == "TIZEN"
+BuildRequires: libjson-devel >= 0.10
+Requires: libjson >= 0.10
+%else
+BuildRequires: json-c-devel
+Requires: json-c
+%endif
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description -n libConfig
+The package provides libConfig library.
+
+%post -n libConfig -p /sbin/ldconfig
+
+%postun -n libConfig -p /sbin/ldconfig
+
+%files -n libConfig
+%defattr(644,root,root,755)
+%{_libdir}/libConfig.so.0
+%attr(755,root,root) %{_libdir}/libConfig.so.%{version}
+
+%package -n libConfig-devel
+Summary: Development Config library
+Group: Development/Libraries
+Requires: libConfig = %{epoch}:%{version}-%{release}
+Requires: boost-devel
+Requires: pkgconfig(libLogger)
+%if %{platform_type} == "TIZEN"
+Requires: libjson-devel >= 0.10
+%else
+Requires: json-c-devel
+%endif
+
+%description -n libConfig-devel
+The package provides libConfig development tools and libs.
+
+%files -n libConfig-devel
+%defattr(644,root,root,755)
+%{_libdir}/libConfig.so
+%{_includedir}/vasum-tools/config
+%{_libdir}/pkgconfig/libConfig.pc
+
+## libIpc Package #######################################################
+%package -n libIpc
+Summary: IPC library
+Group: Security/Other
+BuildRequires: pkgconfig(libsystemd-daemon)
+Requires: libConfig
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description -n libIpc
+The package provides libIpc library.
+
+%post -n libIpc -p /sbin/ldconfig
+
+%postun -n libIpc -p /sbin/ldconfig
+
+%files -n libIpc
+%defattr(644,root,root,755)
+%{_libdir}/libIpc.so.0
+%attr(755,root,root) %{_libdir}/libIpc.so.%{version}
+
+%package -n libIpc-devel
+Summary: Development IPC library
+Group: Development/Libraries
+Requires: libIpc = %{epoch}:%{version}-%{release}
+Requires: pkgconfig(libLogger)
+Requires: pkgconfig(libConfig)
+
+%description -n libIpc-devel
+The package provides libIpc development tools and libs.
+
+%files -n libIpc-devel
+%defattr(644,root,root,755)
+%{_libdir}/libIpc.so
+%{_includedir}/vasum-tools/ipc
+%{_libdir}/pkgconfig/libIpc.pc