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