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