Refactor slp-pkgmgr with tidl
[platform/core/appfw/slp-pkgmgr.git] / packaging / pkgmgr.spec
1 Name:       pkgmgr
2 Summary:    Packager Manager client library package
3 Version:    0.15.0
4 Release:    0
5 Group:      Application Framework/Package Management
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1001: %{name}.manifest
9 Source1002: %{name}-client.manifest
10 Source1003: %{name}-client-devel.manifest
11 Source1004: %{name}-installer.manifest
12 Source1005: %{name}-installer-devel.manifest
13 Source1006: %{name}-types-devel.manifest
14 Source1007: %{name}.conf
15 Source1008: %{name}-installer-signal-agent.service
16 Source1009: %{name}-installer-signal-agent.socket
17 Requires(post): /usr/sbin/useradd
18 Requires(post): capi-system-info
19
20 BuildRequires:  cmake
21 BuildRequires:  unzip
22 BuildRequires:  gettext-tools
23 BuildRequires:  pkgconfig(aul)
24 BuildRequires:  pkgconfig(glib-2.0)
25 BuildRequires:  pkgconfig(gio-2.0)
26 BuildRequires:  pkgconfig(dlog)
27 BuildRequires:  pkgconfig(bundle)
28 BuildRequires:  pkgconfig(pkgmgr-info)
29 BuildRequires:  pkgconfig(iniparser)
30 BuildRequires:  pkgconfig(libtzplatform-config)
31 BuildRequires:  pkgconfig(xdgmime)
32 BuildRequires:  pkgconfig(db-util)
33 BuildRequires:  pkgconfig(libsmack)
34 BuildRequires:  pkgconfig(libsystemd)
35 BuildRequires:  pkgconfig(minizip)
36 BuildRequires:  pkgconfig(rpc-port)
37 BuildRequires:  pkgconfig(capi-appfw-event)
38 BuildRequires:  pkgconfig(gmock)
39 BuildRequires:  pkgmgr-info-parser-devel
40 BuildRequires:  pkgmgr-info-parser
41 BuildRequires:  fdupes
42 BuildRequires:  tidl
43
44 %if 0%{?gcov:1}
45 BuildRequires:  lcov
46 %endif
47
48 %description
49 Packager Manager client library package for packaging
50
51 %if 0%{?gcov:1}
52 %package gcov
53 Summary:    Packager Manager library (gcov)
54 Group:      Application Framework/Testing
55
56 %description gcov
57 Packager Manager library gcov objects
58 %endif
59
60 %package client
61 Summary:    Package Manager client library develpoment package
62 Requires:   %{name} = %{version}-%{release}
63 Requires: shared-mime-info
64 Requires(post): pkgmgr
65
66 %description client
67 Package Manager client library develpoment package for packaging
68
69
70 %package client-devel
71 Summary:    Package Manager client library develpoment package
72 Requires:   %{name} = %{version}-%{release}
73 Requires: pkgmgr-client
74
75 %description client-devel
76 Package Manager client library develpoment package for packaging
77
78
79 %package installer
80 Summary:    Library for installer frontend/backend
81 Requires:   %{name} = %{version}-%{release}
82
83 %description installer
84 Library for installer frontend/backend for packaging.
85
86
87 %package installer-devel
88 Summary:    Dev package for libpkgmgr-installer
89 Requires:   %{name} = %{version}-%{release}
90 Requires:   pkgmgr-installer = %{version}-%{release}
91
92 %description installer-devel
93 Dev package for libpkgmgr-installer for packaging.
94
95
96 %package types-devel
97 Summary:    Package Manager manifest parser develpoment package
98 Requires:   %{name} = %{version}-%{release}
99
100 %description types-devel
101 Package Manager client types develpoment package for packaging
102
103 %prep
104 %setup -q
105 cp %{SOURCE1001} %{SOURCE1002} %{SOURCE1003} %{SOURCE1004} %{SOURCE1005} %{SOURCE1006} .
106 tidlc -p -l C++ -i ./tidl/PkgMgr.tidl -o PkgMgrProxy
107 mv PkgMgrProxy.* ./client/src/
108 tidlc -g -l C++ -i ./tidl/PkgSignal.tidl -o PkgSignal
109 cp PkgSignal.* ./client/src/
110 mv PkgSignal.* ./installer/src/
111
112 %build
113 %if 0%{?gcov:1}
114 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
115 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
116 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
117 export LDFLAGS+=" -lgcov"
118 %endif
119 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
120 %cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
121
122 %__make %{?_smp_mflags}
123
124 %if 0%{?gcov:1}
125 mkdir -p gcov-obj
126 find . -name '*.gcno' -exec cp '{}' gcov-obj ';'
127 %endif
128
129 %install
130 %make_install
131
132 %if 0%{?gcov:1}
133 mkdir -p %{buildroot}%{_datadir}/gcov/obj/%{name}
134 install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj/%{name}
135 %endif
136
137 rm -f  %{buildroot}%{_bindir}/pkgmgr_backend_sample
138 rm -f %{buildroot}%{_libdir}/libpkgmgr_backend_lib_sample.so
139 rm -f %{buildroot}%{_libdir}/libpkgmgr_parser_lib_sample.so
140
141 mkdir -p %{buildroot}%{_tmpfilesdir}/
142 install -m 0644 %{SOURCE1007} %{buildroot}%{_tmpfilesdir}/pkgmgr.conf
143
144 mkdir -p %{buildroot}%{_unitdir_user}/sockets.target.wants
145 install -m 0644 %{SOURCE1008} %{buildroot}%{_unitdir_user}/pkgmgr-installer-signal-agent.service
146 install -m 0644 %{SOURCE1009} %{buildroot}%{_unitdir_user}/pkgmgr-installer-signal-agent.socket
147 ln -sf ../pkgmgr-installer-signal-agent.socket %{buildroot}%{_unitdir_user}/sockets.target.wants/pkgmgr-installer-signal-agent.socket
148
149 mkdir -p %{buildroot}%{_sysconfdir}/package-manager/backend
150 mkdir -p %{buildroot}%{_sysconfdir}/package-manager/backendlib
151 mkdir -p %{buildroot}%{_sysconfdir}/opt/upgrade
152
153 touch  %{buildroot}%{_sysconfdir}/package-manager/backend/default
154 chmod 755 %{buildroot}%{_sysconfdir}/package-manager/backend/default
155 touch  %{buildroot}%{_sysconfdir}/package-manager/backend/pkgmgr
156 chmod 755 %{buildroot}%{_sysconfdir}/package-manager/backend/pkgmgr
157 touch  %{buildroot}%{_sysconfdir}/package-manager/backend/pkgtool
158 chmod 755 %{buildroot}%{_sysconfdir}/package-manager/backend/pkgtool
159
160 %check
161 export LD_LIBRARY_PATH=../../client
162 ##ctest -V
163
164 %if 0%{?gcov:1}
165 lcov -c --ignore-errors graph --no-external -b . -d . -o %{name}.info
166 genhtml %{name}.info -o out --legend --show-details
167 %endif
168
169 %fdupes %{buildroot}
170
171 %post
172 /sbin/ldconfig
173
174 # Create tizenglobalapp user needed for global installation
175 useradd %TZ_SYS_GLOBALAPP_USER -r -c "system user for common applications" -g root -u 201
176
177 # change owner of TZ_USER_APP (/etc/skel/apps_rw) to tizenglobalapp
178 saveHOME="$HOME"
179 HOME="%{_sysconfdir}/skel"
180 . "%{_sysconfdir}/tizen-platform.conf"
181
182 chown %TZ_SYS_GLOBALAPP_USER:root $TZ_USER_APP
183
184 # add .shared and .shared_tmp at skel
185 mkdir -p $TZ_USER_APP/.shared
186 mkdir -p $TZ_USER_APP/.shared_tmp
187 chsmack -a User::Home $TZ_USER_APP/.shared
188 chsmack -a User::Home $TZ_USER_APP/.shared_tmp
189 chmod 755 $TZ_USER_APP/.shared
190 chmod 755 $TZ_USER_APP/.shared_tmp
191
192 HOME="$saveHOME"
193
194 %post -n pkgmgr-client -p /sbin/ldconfig
195
196 %postun -n pkgmgr-client -p /sbin/ldconfig
197
198 %post -n pkgmgr-installer -p /sbin/ldconfig
199
200 %postun -n pkgmgr-installer -p /sbin/ldconfig
201
202 %posttrans
203 if [ ! -f %{TZ_SYS_DB}/.pkgmgr_parser.db ]; then
204   pkg_initdb --ro
205   install_preload_pkg
206   if [ -f /tmp/.preload_install_error ]; then
207     if [ ! -d /tmp/.postscript/error ]; then
208       mkdir -p /tmp/.postscript/error
209     fi
210     echo "preload install failed" > /tmp/.postscript/error/%{name}_error
211   else
212     pkgcmd -l --global 1>&2
213   fi
214   %{_sysconfdir}/package-manager/pkgmgr-label-initial-image.sh
215 fi
216 rm -rf %{_sysconfdir}/package-manager/pkgmgr-label-initial-image.sh
217
218 %files
219 %manifest %{name}.manifest
220 %defattr(-,root,root,-)
221 %dir %{_sysconfdir}/package-manager/backend
222 %dir %{_sysconfdir}/package-manager/backendlib
223 %{_sysconfdir}/package-manager/backend/*
224 %{_tmpfilesdir}/pkgmgr.conf
225
226 %files client
227 %manifest %{name}-client.manifest
228 %license LICENSE
229 %defattr(-,root,root,-)
230 %dir %{_sysconfdir}/package-manager
231 %config %{_sysconfdir}/package-manager/pkg_path.conf
232 %{_libdir}/libpkgmgr-client.so.*
233
234 %files client-devel
235 %manifest %{name}-client-devel.manifest
236 %defattr(-,root,root,-)
237 %{_includedir}/*.h
238 %{_libdir}/pkgconfig/pkgmgr.pc
239 %{_libdir}/libpkgmgr-client.so
240
241 %files installer
242 %manifest %{name}-installer.manifest
243 %license LICENSE
244 %defattr(-,root,root,-)
245 %{_libdir}/libpkgmgr_installer.so.*
246 %{_bindir}/pkgmgr-installer-signal-agent
247 %{_unitdir_user}/pkgmgr-installer-signal-agent.service
248 %{_unitdir_user}/pkgmgr-installer-signal-agent.socket
249 %{_unitdir_user}/sockets.target.wants/pkgmgr-installer-signal-agent.socket
250
251 %files installer-devel
252 %manifest %{name}-installer-devel.manifest
253 %defattr(-,root,root,-)
254 %dir %{_includedir}/pkgmgr
255 %{_includedir}/package-manager.h
256 %{_includedir}/pkgmgr/*.h
257 %{_libdir}/pkgconfig/pkgmgr-installer.pc
258 %{_libdir}/libpkgmgr_installer.so
259
260 %files types-devel
261 %manifest %{name}-types-devel.manifest
262 %defattr(-,root,root,-)
263 %{_includedir}/package-manager-*.h
264 %{_libdir}/pkgconfig/pkgmgr-types.pc
265
266 %if 0%{?gcov:1}
267 %files gcov
268 %{_datadir}/gcov/*
269 %endif