Various changes relating to build on Fedora Linux.
[platform/core/security/vasum.git] / packaging / vasum.spec
index 78db5de..bd7346c 100644 (file)
@@ -8,8 +8,11 @@
 %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
@@ -18,18 +21,17 @@ Group:          Security/Other
 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
@@ -37,20 +39,21 @@ between them. A process from inside a zone can request a switch of context
 (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
@@ -67,17 +70,20 @@ between them. A process from inside a zone can request a switch of context
          -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}
@@ -114,80 +120,90 @@ fi
 %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.
@@ -196,29 +212,216 @@ 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