Update xmlsec callback logging
[platform/core/security/cert-svc.git] / packaging / cert-svc.spec
1 %define certsvc_test_build 0
2
3 Name:    cert-svc
4 Summary: Certification service
5 Version: 2.2.1
6 Release: 0
7 Group:   Security/Certificate Management
8 License: Apache-2.0
9 Source0: %{name}-%{version}.tar.gz
10 BuildRequires: cmake
11 BuildRequires: coreutils
12 BuildRequires: findutils
13 BuildRequires: pkgconfig(dlog)
14 BuildRequires: pkgconfig(klay)
15 BuildRequires: openssl1.1
16 BuildRequires: pkgconfig(openssl1.1)
17 BuildRequires: pkgconfig(libpcrecpp)
18 BuildRequires: pkgconfig(xmlsec1)
19 BuildRequires: pkgconfig(libxml-2.0)
20 BuildRequires: pkgconfig(libxslt)
21 BuildRequires: pkgconfig(libsystemd)
22 BuildRequires: pkgconfig(key-manager)
23 BuildRequires: pkgconfig(libtzplatform-config)
24 BuildRequires: pkgconfig(sqlite3)
25 BuildRequires: ca-certificates
26 BuildRequires: ca-certificates-devel
27 BuildRequires: ca-certificates-tizen-devel
28 Requires: ca-certificates
29 Requires: ca-certificates-tizen
30 Requires: security-config
31 # to prevent auto require lower version of libc including examples/resource/player/bin/player
32 # https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering?rd=PackagingDrafts/AutoProvidesAndRequiresFiltering
33 %global __requires_exclude_from examples/
34
35
36 %global user_name security_fw
37 %global group_name security_fw
38 %global server_stream /tmp/.cert-server.socket
39 %global smack_domain_name System
40
41 %global bin_dir                 %{?TZ_SYS_BIN:%TZ_SYS_BIN}%{!?TZ_SYS_BIN:%_bindir}
42 %global etc_dir                 %{?TZ_SYS_ETC:%TZ_SYS_ETC}%{!?TZ_SYS_ETC:/opt/etc}
43 %global rw_data_dir             %{?TZ_SYS_SHARE:%TZ_SYS_SHARE}%{!?TZ_SYS_SHARE:/opt/share}
44 %global ro_data_dir             %{?TZ_SYS_RO_SHARE:%TZ_SYS_RO_SHARE}%{!?TZ_SYS_RO_SHARE:%_datadir}
45 %global rw_app_dir              %{?TZ_SYS_RW_APP:%TZ_SYS_RW_APP}%{!?TZ_SYS_RW_APP:/opt/usr/apps}
46
47 %global cert_svc_path           %rw_data_dir/cert-svc
48 %global cert_svc_ro_path        %ro_data_dir/cert-svc
49 %global cert_svc_db_path        %cert_svc_path/dbspace
50 %global cert_svc_pkcs12         %cert_svc_path/pkcs12
51 %global cert_svc_ca_bundle      %cert_svc_path/ca-certificate.crt
52 %global cert_svc_examples       %cert_svc_ro_path/examples
53 %global cert_svc_tests          %rw_app_dir/cert-svc-tests
54
55 %description
56 Certification service
57
58 %package devel
59 Summary:    Certification service (development files)
60 Group:      Development/Libraries
61 Requires:   %{name} = %{version}-%{release}
62
63 %description devel
64 Certification service (development files)
65
66 %if 0%{?certsvc_test_build}
67 %package test
68 Summary:  Certification service (tests)
69 Group:    Security/Testing
70 Requires: ca-certificates-tizen
71 Requires: %{name} = %{version}-%{release}
72 Requires: %{name}-test-binaries = %{version}-%{release}
73
74 %description test
75 Certification service (tests)
76
77 %package test-binaries
78 Summary:  Certification service (test binaries)
79 Group:    Security/Testing
80 AutoReq:  no
81 Requires: %{name}-test = %{version}-%{release}
82
83 %description test-binaries
84 Certification service (test binaries)
85 %endif
86
87 %prep
88 %setup -q
89
90 %build
91 %if 0%{?sec_build_binary_debug_enable}
92 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
93 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
94 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
95 %endif
96
97 %if 0%{?tizen_build_devel_mode}
98 export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
99 export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
100 export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
101 %endif
102
103 %ifarch %{ix86}
104 export CFLAGS="$CFLAGS -DTIZEN_EMULATOR_MODE"
105 export CXXFLAGS="$CXXFLAGS -DTIZEN_EMULATOR_MODE"
106 export FFLAGS="$FFLAGS -DTIZEN_EMULATOR_MODE"
107 %endif
108
109 # gcc v9 and new Tizen toolchain adds Wall and this code pretty much always checks string & buffer lenghts
110 export CFLAGS="$CFLAGS -Wno-stringop-truncation -Wno-stringop-overflow"
111 export CXXFLAGS="$CXXFLAGS -Wno-stringop-truncation -Wno-stringop-overflow"
112
113 %{!?build_type:%define build_type "Release"}
114 %cmake . -DVERSION=%version \
115          -DINCLUDEDIR=%_includedir \
116          -DUSER_NAME=%user_name \
117          -DGROUP_NAME=%group_name \
118          -DSERVER_STREAM=%server_stream \
119          -DSMACK_DOMAIN_NAME=%smack_domain_name \
120          -DRO_DATA_DIR=%ro_data_dir \
121          -DBIN_DIR=%bin_dir \
122          -DTZ_SYS_CA_CERTS=%TZ_SYS_CA_CERTS \
123          -DTZ_SYS_CA_CERTS_ORIG=%TZ_SYS_CA_CERTS_ORIG \
124          -DTZ_SYS_CA_BUNDLE=%TZ_SYS_CA_BUNDLE \
125          -DTZ_SYS_RO_CA_CERTS=%TZ_SYS_RO_CA_CERTS \
126          -DTZ_SYS_RO_CA_BUNDLE=%TZ_SYS_RO_CA_BUNDLE \
127          -DCERT_SVC_CA_BUNDLE=%cert_svc_ca_bundle \
128          -DCERT_SVC_PATH=%cert_svc_path \
129          -DCERT_SVC_RO_PATH=%cert_svc_ro_path \
130          -DCERT_SVC_PKCS12=%cert_svc_pkcs12 \
131          -DCERT_SVC_DB_PATH=%cert_svc_db_path \
132 %if 0%{?certsvc_test_build}
133          -DCERTSVC_TEST_BUILD=1 \
134          -DCERT_SVC_TESTS=%cert_svc_tests \
135          -DCERT_SVC_EXAMPLES=%cert_svc_examples \
136 %endif
137          -DCMAKE_BUILD_TYPE=%build_type \
138          -DSYSTEMD_UNIT_DIR=%_unitdir
139
140 make %{?_smp_mflags}
141
142 %install
143 %make_install
144 %install_service sockets.target.wants cert-server.socket
145
146 mkdir -p %buildroot%cert_svc_pkcs12
147
148 touch %buildroot%cert_svc_db_path/certs-meta.db-journal
149
150 ln -sf %TZ_SYS_CA_BUNDLE %buildroot%cert_svc_ca_bundle
151
152 %preun
153 # erase
154 if [ $1 = 0 ]; then
155     systemctl stop cert-server.service
156 fi
157
158 %post
159 /sbin/ldconfig
160 systemctl daemon-reload
161 # install
162 if [ $1 = 1 ]; then
163     systemctl start cert-server.socket
164 fi
165 # reinstall
166 if [ $1 = 2 ]; then
167     systemctl restart cert-server.socket
168 fi
169
170 %postun -p /sbin/ldconfig
171
172 %files
173 %manifest %name.manifest
174 %license LICENSE
175 %_unitdir/cert-server.service
176 %_unitdir/cert-server.socket
177 %_unitdir/sockets.target.wants/cert-server.socket
178 %_libdir/libcert-svc-vcore.so.*
179 %bin_dir/cert-server
180 %dir %attr(-, %{user_name}, %{group_name}) %cert_svc_path
181 %dir %attr(-, %{user_name}, %{group_name}) %cert_svc_pkcs12
182 %dir %attr(-, %{user_name}, %{group_name}) %cert_svc_db_path
183 %attr(-, %{user_name}, %{group_name}) %cert_svc_ca_bundle
184 %attr(-, %{user_name}, %{group_name}) %cert_svc_db_path/certs-meta.db
185 %attr(-, %{user_name}, %{group_name}) %cert_svc_db_path/certs-meta.db-journal
186 %attr(-, %{user_name}, %{group_name}) %cert_svc_ro_path
187
188 %files devel
189 %manifest %name.manifest
190 %_includedir/*
191 %_libdir/pkgconfig/*
192 %_libdir/libcert-svc-vcore.so
193
194 %if 0%{?certsvc_test_build}
195 %files test
196 %manifest %name.manifest
197 %bin_dir/cert-svc-test*
198 %dir %cert_svc_tests
199 %cert_svc_tests/p12
200 %cert_svc_tests/certs
201 %_libdir/libcert-svc-validator-plugin.so
202
203 %bin_dir/cert-svc-example*
204 %cert_svc_examples
205
206 %files test-binaries
207 %manifest %name.manifest
208 %cert_svc_tests/apps
209
210 %endif