Add asynchronous client api
[platform/core/security/cynara.git] / packaging / cynara.spec
1 Name:       cynara
2 Summary:    Cynara service with client libraries
3 Version:    0.2.2
4 Release:    1
5 Group:      Security/Access Control
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1001:    cynara.manifest
9 Source1002:    libcynara-client.manifest
10 Source1003:    libcynara-client-async.manifest
11 Source1004:    libcynara-admin.manifest
12 Source1005:    cynara-tests.manifest
13 Requires:      default-ac-domains
14 BuildRequires: cmake
15 BuildRequires: zip
16 BuildRequires: pkgconfig(libsystemd-daemon)
17 BuildRequires: pkgconfig(libsystemd-journal)
18 %{?systemd_requires}
19
20 %global user_name %{name}
21 %global group_name %{name}
22
23 %global state_path %{_localstatedir}/%{name}/
24
25 %global build_type %{?build_type:%build_type}%{!?build_type:RELEASE}
26
27 %if %{?build_type} == "DEBUG"
28
29 BuildRequires: pkgconfig(libunwind)
30
31 %endif
32
33 %description
34 service and client libraries (libcynara-client, libcynara-client-async, libcynara-admin)
35 and tests (cynara-tests)
36
37 #######################################################
38 %package -n libcynara-client
39 Summary:    Cynara - client library
40 Requires:   cynara = %{version}-%{release}
41 Requires(post): /sbin/ldconfig
42 Requires(postun): /sbin/ldconfig
43
44 %description -n libcynara-client
45 client library for checking policies
46
47 %package -n libcynara-client-devel
48 Summary:    Cynara - client library (devel)
49 Requires:   libcynara-client = %{version}-%{release}
50
51 %description -n libcynara-client-devel
52 client library (devel) for checking policies
53
54 #######################################################
55 %package -n libcynara-client-async
56 Summary:    Cynara - asynchronous client library
57 Requires:   cynara = %{version}-%{release}
58 Requires(post): /sbin/ldconfig
59 Requires(postun): /sbin/ldconfig
60
61 %description -n libcynara-client-async
62 asynchronous client library for checking policies
63
64 %package -n libcynara-client-async-devel
65 Summary:    Cynara - asynchronous client library (devel)
66 Requires:   libcynara-client-async = %{version}-%{release}
67
68 %description -n libcynara-client-async-devel
69 asynchronous client library (devel) for checking policies
70
71 #######################################################
72 %package -n libcynara-admin
73 Summary:    Cynara - admin client library
74 Requires:   cynara = %{version}-%{release}
75 Requires(post): /sbin/ldconfig
76 Requires(postun): /sbin/ldconfig
77
78 %description -n libcynara-admin
79 admin client library for setting, listing and removing policies
80
81 %package -n libcynara-admin-devel
82 Summary:    Cynara - admin client library (devel)
83 Requires:   libcynara-admin = %{version}-%{release}
84
85 %description -n libcynara-admin-devel
86 admin client library (devel) for setting, listing and removing policies
87
88 #######################################################
89 %package -n cynara-tests
90 Summary:    Cynara - cynara test binaries
91 BuildRequires: pkgconfig(gmock)
92
93 %description -n cynara-tests
94 Cynara tests
95
96 #######################################################
97
98 %package -n cynara-devel
99 Summary:    Cynara service (devel)
100 Requires:   cynara = %{version}-%{release}
101
102 %description -n cynara-devel
103 service (devel version)
104
105 %prep
106 %setup -q
107 cp -a %{SOURCE1001} .
108 cp -a %{SOURCE1002} .
109 cp -a %{SOURCE1003} .
110 cp -a %{SOURCE1004} .
111 cp -a %{SOURCE1005} .
112
113 %build
114 %if 0%{?sec_build_binary_debug_enable}
115 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
116 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
117 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
118 %endif
119
120 export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"%{state_path}\\\""
121 export LDFLAGS+="-Wl,--rpath=%{_libdir}"
122
123 %cmake . -DVERSION=%{version} \
124         -DCMAKE_BUILD_TYPE=%{?build_type} \
125         -DCMAKE_VERBOSE_MAKEFILE=ON
126 make %{?jobs:-j%jobs}
127
128 %install
129
130 rm -rf %{buildroot}
131 %make_install
132
133 mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants
134 mkdir -p %{buildroot}/%{state_path}
135 ln -s ../cynara.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara.socket
136 ln -s ../cynara-admin.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
137
138 %pre
139 id -g %{group_name} > /dev/null 2>&1
140 if [ $? -eq 1 ]; then
141     groupadd %{group_name} -r > /dev/null 2>&1
142 fi
143
144 id -u %{user_name} > /dev/null 2>&1
145 if [ $? -eq 1 ]; then
146     useradd -m %{user_name} -r > /dev/null 2>&1
147 fi
148
149 %post
150 ### Add file capabilities if needed
151 ### setcap/getcap binary are useful. To use them you must install libcap and libcap-tools packages
152 ### In such case uncomment Requires with those packages
153
154 systemctl daemon-reload
155
156 if [ $1 = 1 ]; then
157     systemctl enable %{name}.service
158 fi
159
160 chsmack -a System %{state_path}
161
162 systemctl restart %{name}.service
163
164 /sbin/ldconfig
165
166 %preun
167 if [ $1 = 0 ]; then
168     # unistall
169     systemctl stop cynara.service
170 fi
171
172 %postun
173 if [ $1 = 0 ]; then
174     userdel -r %{user_name} > /dev/null 2>&1
175     groupdel %{user_name} > /dev/null 2>&1
176     systemctl daemon-reload
177 fi
178
179 /sbin/ldconfig
180
181 %post -n libcynara-client -p /sbin/ldconfig
182
183 %postun -n libcynara-client -p /sbin/ldconfig
184
185 %post -n libcynara-client-async -p /sbin/ldconfig
186
187 %postun -n libcynara-client-async -p /sbin/ldconfig
188
189 %post -n libcynara-admin -p /sbin/ldconfig
190
191 %postun -n libcynara-admin -p /sbin/ldconfig
192
193 %post -n libcynara-client-devel -p /sbin/ldconfig
194
195 %postun -n libcynara-client-devel -p /sbin/ldconfig
196
197 %post -n libcynara-client-async-devel -p /sbin/ldconfig
198
199 %postun -n libcynara-client-async-devel -p /sbin/ldconfig
200
201 %post -n libcynara-admin-devel -p /sbin/ldconfig
202
203 %postun -n libcynara-admin-devel -p /sbin/ldconfig
204
205 %files -n cynara
206 %manifest cynara.manifest
207 %license LICENSE
208 %attr(755,root,root) /usr/bin/cynara
209 %{_libdir}/libcynara-commons.so*
210 %attr(-,root,root) /usr/lib/systemd/system/cynara.service
211 %attr(-,root,root) /usr/lib/systemd/system/cynara.target
212 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara.socket
213 %attr(-,root,root) /usr/lib/systemd/system/cynara.socket
214 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
215 %attr(-,root,root) /usr/lib/systemd/system/cynara-admin.socket
216 %dir %attr(700,cynara,cynara) %{state_path}
217
218 %files -n libcynara-client
219 %manifest libcynara-client.manifest
220 %license LICENSE
221 %defattr(-,root,root,-)
222 %{_libdir}/libcynara-client.so.*
223
224 %files -n libcynara-client-devel
225 %defattr(-,root,root,-)
226 %{_includedir}/cynara/cynara-client.h
227 %{_libdir}/pkgconfig/cynara-client.pc
228 %{_libdir}/libcynara-client.so
229
230 %files -n libcynara-client-async
231 %manifest libcynara-client-async.manifest
232 %license LICENSE
233 %defattr(-,root,root,-)
234 %{_libdir}/libcynara-client-async.so.*
235
236 %files -n libcynara-client-async-devel
237 %defattr(-,root,root,-)
238 %{_includedir}/cynara/cynara-client-async.h
239 %{_libdir}/pkgconfig/cynara-client-async.pc
240 %{_libdir}/libcynara-client-async.so
241
242 %files -n libcynara-admin
243 %manifest libcynara-admin.manifest
244 %license LICENSE
245 %defattr(-,root,root,-)
246 %{_libdir}/libcynara-admin.so.*
247
248 %files -n libcynara-admin-devel
249 %defattr(-,root,root,-)
250 %{_includedir}/cynara/cynara-admin.h
251 %{_libdir}/libcynara-admin.so
252 %{_libdir}/pkgconfig/cynara-admin.pc
253
254 %files -n cynara-tests
255 %manifest cynara-tests.manifest
256 %attr(755,root,root) /usr/bin/cynara-tests