6695fc13111bd338d087fc71142f931add01fde7
[platform/core/security/ode.git] / packaging / ode.spec
1 Name:    ode
2 Version: 0.0.3
3 Release: 0
4 License: Apache-2.0
5 Source0: file://%{name}-%{version}.tar.gz
6 Summary: Tizen device encryption and secure erase manager
7 Group:   Security/Service
8 Requires: systemd
9 Requires: e2fsprogs
10 BuildRequires: gcc
11 BuildRequires: cmake
12 BuildRequires: gettext-tools
13 BuildRequires: pkgconfig(klay)
14 BuildRequires: pkgconfig(glib-2.0)
15 BuildRequires: pkgconfig(aul)
16 BuildRequires: pkgconfig(bundle)
17 BuildRequires: pkgconfig(libtzplatform-config)
18 BuildRequires: pkgconfig(cynara-client)
19 BuildRequires: pkgconfig(openssl)
20 BuildRequires: pkgconfig(libsmack)
21 Requires: cryptsetup
22
23 %global key_storage_plugin_dir %{_libdir}/ode-key-storage-plugin/
24
25 %description
26 The ode package provides a daemon which is responsible for encrypting/decryption storages and secure erasing.
27
28 %files
29 %manifest ode.manifest
30 %defattr(644,root,root,755)
31 %attr(755,root,root) %{_bindir}/oded
32 %{_unitdir}/ode.service
33 %{_unitdir}/multi-user.target.wants/ode.service
34 %attr(700,root,root) %{TZ_SYS_SBIN}/ode-admin-cli
35 %attr(700,root,root) %{TZ_SYS_SBIN}/ode-fota
36 %{_datadir}/%{name}
37 %dir %{key_storage_plugin_dir}
38
39 %prep
40 %setup -q
41
42 %build
43 %{!?build_type:%define build_type "RELEASE"}
44
45 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING" || %{build_type} == "CCOV"
46         CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
47         CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
48 %endif
49
50 %cmake . -DVERSION=%{version} \
51          -DCMAKE_BUILD_TYPE=%{build_type} \
52          -DRUN_DIR=%{TZ_SYS_RUN} \
53          -DBIN_DIR=%{TZ_SYS_BIN} \
54          -DSBIN_DIR=%{TZ_SYS_SBIN} \
55          -DSYSTEMD_UNIT_DIR=%{_unitdir} \
56          -DAPP_INSTALL_PREFIX="%{TZ_SYS_RO_APP}" \
57          -DAPP_SHARE_PACKAGES_DIR="%{TZ_SYS_RO_PACKAGES}" \
58          -DKEY_STORAGE_PLUGIN_DIR="%{key_storage_plugin_dir}"
59
60 make %{?jobs:-j%jobs}
61
62 %install
63 %make_install
64 %install_service multi-user.target.wants ode.service
65
66 %clean
67 rm -rf %{buildroot}
68
69 %post
70 systemctl daemon-reload
71 if [ $1 = 1 ]; then
72     # installation
73     systemctl start ode.service
74 elif [ $1 = 2 ]; then
75     # update
76     systemctl restart ode.service
77 fi
78
79 %preun
80 if [ $1 = 0 ]; then
81     # unistall
82     systemctl stop ode.service
83 fi
84
85 %postun
86
87 ## ODE Client Package ########################################################
88 %package -n libode
89 Summary: Library for Tizen device encryption and secure erase
90 Group: Security/Libraries
91 BuildRequires: pkgconfig(libtzplatform-config)
92 Requires: %{name} = %{version}-%{release}
93 Requires(post): /sbin/ldconfig
94 Requires(postun): /sbin/ldconfig
95
96 %description -n libode
97 The libode package contains the libraries needed to encrypt/decrypt storages and secure erasing.
98
99 %post -n libode -p /sbin/ldconfig
100
101 %postun -n libode -p /sbin/ldconfig
102
103 %files -n libode
104 %manifest ode.manifest
105 %defattr(644,root,root,755)
106 %attr(755,root,root) %{_libdir}/libode.so.%{version}
107 %{_libdir}/libode.so.0
108
109 ## Devel Package ##############################################################
110 %package -n libode-devel
111 Summary: Libraries and header files for device encryption client development
112 Group: Development/Libraries
113 Requires: libode = %{version}-%{release}
114
115 %description -n libode-devel
116 The libode-devel package includes the libraries and header files necessary for
117 developing device encryption client program.
118
119 %files -n libode-devel
120 %manifest ode.manifest
121 %defattr(644,root,root,755)
122 %{_libdir}/libode.so
123 %{_includedir}/ode
124 %{_libdir}/pkgconfig/ode.pc
125
126 ## Plugin Devel Package ##############################################################
127 %package ksp-devel
128 Summary: Header files for key storage plugin development
129 Group: Development/Libraries
130
131 %description ksp-devel
132 The ode-ksp-devel package includes header files necessary for key storage
133 plugin development
134
135 %files ksp-devel
136 %manifest ode.manifest
137 %defattr(644,root,root,755)
138 %{_includedir}/ode-key-storage-plugin
139 %{_libdir}/pkgconfig/ode-key-storage-plugin.pc
140
141 ## Unittest Package ###########################################################
142 %package unit-tests
143 Summary: Unit tests to verify components of device encryption
144 Group: Security/Testing
145 Requires: libode = %{version}-%{release}
146
147 %description unit-tests
148 The libode-devel package includes the libraries and header files necessary for
149 developing device encryption client program.
150
151 %files unit-tests
152 %manifest ode.manifest
153 %defattr(644,root,root,755)
154 %attr(755,root,root) %{_bindir}/ode-engine-unit-tests
155
156 ## Dummy key storage plugin Package ###########################################################
157 %package dummy-ksp
158 Summary: Dummy key storage plugin for FOTA binary upgrade testing
159 Group: Security/Testing
160
161 %description dummy-ksp
162 The ode-dummy-ksp package includes the dummy key storage plugin that can be used
163 for testing the binary upgrade process (FOTA). The plugin will be used by ode to
164 store the master encryption key in a file to use during FOTA process.
165
166 %files dummy-ksp
167 %manifest ode.manifest
168 %attr(755,root,root) %{key_storage_plugin_dir}/*