Refactor pkgmgr-info
[platform/core/appfw/pkgmgr-info.git] / packaging / pkgmgr-info.spec
1 Name:       pkgmgr-info
2 Summary:    Packager Manager infomation api for package
3 Version:    0.22.40
4 Release:    1
5 Group:      Application Framework/Package Management
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1:    %{name}.service
9 Source2:    %{name}.socket
10 Source1001: pkgmgr-info.manifest
11 BuildRequires: cmake
12 BuildRequires: pkgconfig(dlog)
13 BuildRequires: pkgconfig(glib-2.0)
14 BuildRequires: pkgconfig(gio-2.0)
15 BuildRequires: pkgconfig(gio-unix-2.0)
16 BuildRequires: pkgconfig(vconf)
17 BuildRequires: pkgconfig(sqlite3)
18 BuildRequires: pkgconfig(libxml-2.0)
19 BuildRequires: pkgconfig(libtzplatform-config)
20 BuildRequires: pkgconfig(libsmack)
21 BuildRequires: pkgconfig(bundle)
22 BuildRequires: pkgconfig(capi-system-info)
23 BuildRequires: pkgconfig(minizip)
24 BuildRequires: pkgconfig(libsystemd)
25 BuildRequires: pkgconfig(gmock)
26 BuildRequires: pkgconfig(parcel)
27 BuildRequires: pkgconfig(cynara-client-async)
28 BuildRequires: pkgconfig(cynara-session)
29 BuildRequires: pkgconfig(cynara-creds-socket)
30 BuildRequires: pkgconfig(capi-system-resource)
31 BuildRequires: pkgconfig(tizen-database)
32
33 %if 0%{?gcov:1}
34 BuildRequires:  lcov
35 BuildRequires:  zip
36 %endif
37
38 %description
39 Packager Manager infomation api for packaging
40
41 %package devel
42 Summary:    Packager Manager infomation api (devel)
43 Requires:   %{name} = %{version}-%{release}
44 %description devel
45 Packager Manager infomation api (devel)
46
47 %package parser
48 Summary:    Library for manifest parser
49 Requires:   %{name} = %{version}-%{release}
50
51 %description parser
52 Library for manifest parser
53
54 %package parser-devel
55 Summary:    Dev package for libpkgmgr-parser
56 Requires:   %{name}-parser = %{version}-%{release}
57 Requires:       pkgconfig(libtzplatform-config)
58
59 %description parser-devel
60 Dev package for libpkgmgr-parser
61
62 %package common
63 Summary:    Library for pkgmgr-info-server
64 Requires:   %{name} = %{version}-%{release}
65 Requires:   pkgconfig(libsystemd)
66
67 %description common
68 Library for pkgmgr-info-server
69
70 %package common-devel
71 Summary:    Dev package for libpkgmgr_common
72 Requires:   %{name}-common = %{version}-%{release}
73
74 %description common-devel
75 Dev package for libpkgmgr_common
76
77 %if 0%{?asan} != 1
78 %package unittests
79 Summary:    %{name} unittests binary
80
81 %description unittests
82 unittest binary
83 %endif
84
85 %prep
86 %setup -q
87 cp %{SOURCE1001} .
88
89 %build
90 %if 0%{?gcov:1}
91 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
92 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
93 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
94 export LDFLAGS+=" -lgcov"
95 %endif
96
97 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
98 %cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DUNITDIR=%{_unitdir} \
99 %if 0%{?asan} != 1
100         -DASAN_ENABLED=FALSE
101 %else
102         -DASAN_ENABLED=TRUE
103 %endif
104
105 %__make %{?jobs:-j%jobs}
106
107 %check
108 export LD_LIBRARY_PATH=../../src/:../../src/server:../../parser
109 ctest -V
110 %if 0%{?gcov:1}
111 lcov -c --ignore-errors graph --no-external -b . -d . -o %{name}.info
112 genhtml %{name}.info -o out --legend --show-details
113 %endif
114
115 %install
116 %make_install
117
118 %if 0%{?gcov:1}
119 builddir=$(basename $PWD)
120 gcno_obj_dir=%{buildroot}%{_datadir}/gcov/obj/%{name}/"$builddir"
121 mkdir -p "$gcno_obj_dir"
122 find . -name '*.gcno' -exec cp --parents '{}' "$gcno_obj_dir" ';'
123 %endif
124
125 %if 0%{?asan} != 1
126 cat << EOF > run-unittest.sh
127 #!/bin/sh
128
129 setup() {
130     echo "setup start"
131 }
132
133 test_main() {
134     echo "test_main start"
135     /usr/bin/pkgmgr-info-unit-test
136 }
137
138 teardown() {
139     echo "teardown start"
140 }
141
142 main() {
143     setup
144     test_main
145     teardown
146 }
147
148 main "\$*"
149 EOF
150
151 mkdir -p %{buildroot}%{_bindir}/tizen-unittests/%{name}
152 install -m 0755 run-unittest.sh %{buildroot}%{_bindir}/tizen-unittests/%{name}/
153 %endif
154
155 mkdir -p %{buildroot}%{_unitdir}/basic.target.wants
156 ln -sf ../pkg-db-recovery.service %{buildroot}%{_unitdir}/basic.target.wants/pkg-db-recovery.service
157
158 mkdir -p %{buildroot}%{_unitdir}/basic.target.wants
159 mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants
160 install -m 0644 %SOURCE1 %{buildroot}%{_unitdir}/%{name}.service
161 install -m 0644 %SOURCE2 %{buildroot}%{_unitdir}/%{name}.socket
162 ln -s ../%{name}.service %{buildroot}%{_unitdir}/basic.target.wants/%{name}.service
163 ln -sf ../%{name}.socket %{buildroot}%{_unitdir}/sockets.target.wants/%{name}.socket
164
165 %post
166 /sbin/ldconfig
167
168 %postun -p /sbin/ldconfig
169
170 %post -n pkgmgr-info-parser -p /sbin/ldconfig
171
172 %postun  -n pkgmgr-info-parser -p /sbin/ldconfig
173
174 %files
175 %manifest %{name}.manifest
176 %license LICENSE
177 %defattr(-,root,root,-)
178 %{_libdir}/libpkgmgr-info.so.*
179 %{_libdir}/libpkgmgr-info-server.so.*
180 %{_bindir}/pkg-db-recovery
181 %{_bindir}/pkg-db-creator
182 %{_bindir}/pkginfo-server
183 %{_unitdir}/pkg-db-recovery.service
184 %{_unitdir}/basic.target.wants/pkg-db-recovery.service
185 %{_includedir}/pkgmgr-client/*.hh
186 %{_unitdir}/%{name}.service
187 %{_unitdir}/basic.target.wants/%{name}.service
188 %{_unitdir}/%{name}.socket
189 %{_unitdir}/sockets.target.wants/%{name}.socket
190
191 %files devel
192 %manifest %{name}.manifest
193 %defattr(-,root,root,-)
194 %{_includedir}/*.h
195 %{_libdir}/pkgconfig/pkgmgr-info.pc
196 %{_libdir}/pkgconfig/pkgmgr-info-server.pc
197 %{_libdir}/libpkgmgr-info.so
198 %{_libdir}/libpkgmgr-info-server.so
199 %{_includedir}/pkgmgr-client/*.hh
200 %{_includedir}/pkgmgr-common/*.hh
201 %{_includedir}/pkgmgr-server/*.h
202
203 %files parser
204 %manifest %{name}.manifest
205 %license LICENSE
206 %defattr(-,root,root,-)
207 %{_libdir}/libpkgmgr_parser.so.*
208 %config %{_sysconfdir}/package-manager/preload/manifest.xsd
209 %config %{_sysconfdir}/package-manager/preload/xml.xsd
210 %config %{_sysconfdir}/package-manager/parserlib/metadata/mdparser_list.txt
211 %config %{_sysconfdir}/package-manager/parserlib/category/category_parser_list.txt
212 %config %{_sysconfdir}/package-manager/parserlib/tag_parser_list.txt
213 %config %{_sysconfdir}/package-manager/pkg_db_version.txt
214
215 %files parser-devel
216 %manifest %{name}.manifest
217 %defattr(-,root,root,-)
218 %{_includedir}/pkgmgr/*.h
219 %{_libdir}/pkgconfig/pkgmgr-parser.pc
220 %{_libdir}/libpkgmgr_parser.so
221
222 #################################################
223 # pkgmgr-info-gcov
224 #################################################
225 %if 0%{?gcov:1}
226 %package gcov
227 Summary:    Packager Manager information api (gcov)
228 Group:      Application Framework/Testing
229
230 %description gcov
231 Packager Manager information api gcov objects
232 %endif
233
234 %if 0%{?gcov:1}
235 %files gcov
236 %defattr(-,root,root,-)
237 %{_datadir}/gcov/obj/*
238 %endif
239
240 %if 0%{?asan} != 1
241 %files unittests
242 %{_bindir}/pkgmgr-info-unit-test
243 %{_bindir}/tizen-unittests/%{name}/run-unittest.sh
244 %endif