Fix warning and add codes for GCOV
[platform/core/appfw/alarm-manager.git] / packaging / alarm-manager.spec
1 Name:       alarm-manager
2 Summary:    Alarm library
3 Version:    0.7.11
4 Release:    1
5 Group:      System/Libraries
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1:    alarm-server.service
9 Source2:    alarm-session-agent.service
10 Source3:    alarm-session-agent.socket
11 Source4:    alarm-manager.conf
12 Source5:    99-rtc.rules
13 Source6:    alarm-session-agent@.service
14 Source7:    alarm-session-agent@.socket
15 Source1001: alarm-server.manifest
16 Source1002: alarm-lib.manifest
17 BuildRequires: cmake
18 BuildRequires: pkgconfig(glib-2.0)
19 BuildRequires: pkgconfig(dlog)
20 BuildRequires: pkgconfig(aul)
21 BuildRequires: pkgconfig(bundle)
22 BuildRequires: pkgconfig(sqlite3)
23 BuildRequires: pkgconfig(vconf)
24 BuildRequires: pkgconfig(appsvc)
25 BuildRequires: pkgconfig(pkgmgr-info)
26 BuildRequires: pkgconfig(pkgmgr)
27 BuildRequires: pkgconfig(gio-2.0)
28 BuildRequires: pkgconfig(gio-unix-2.0)
29 BuildRequires: pkgconfig(capi-system-device)
30 BuildRequires: pkgconfig(libtzplatform-config)
31 BuildRequires: pkgconfig(libsystemd)
32 BuildRequires: pkgconfig(eventsystem)
33 BuildRequires: pkgconfig(notification)
34 BuildRequires: python-xml
35 BuildRequires: pkgconfig(capi-system-info)
36 BuildRequires: pkgconfig(cert-svc-vcore)
37 BuildRequires: pkgconfig(cynara-client)
38 BuildRequires: pkgconfig(cynara-session)
39 BuildRequires: pkgconfig(cynara-creds-gdbus)
40
41 %if 0%{?gcov:1}
42 BuildRequires:  lcov
43 BuildRequires:  zip
44 %endif
45
46 %define gtests 1
47
48 %if 0%{?gtests:1}
49 BuildRequires: pkgconfig(gmock)
50 %endif
51 Requires(post): /sbin/ldconfig
52 Requires(postun): /sbin/ldconfig
53
54 %description
55 Alarm Server and devel libraries
56
57
58 %package -n alarm-server
59 Summary:    Alarm server
60 Group:      Development/Libraries
61
62 %description -n alarm-server
63 Alarm Server, manages alarms
64
65
66 %package -n libalarm
67 Summary:    Alarm server libraries
68 Group:      Development/Libraries
69 Requires:   alarm-server = %{version}-%{release}
70
71 %description -n libalarm
72 Alarm server libraries for client
73
74
75 %package -n libalarm-devel
76 Summary:    Alarm server libraries (devel)
77 Group:      Development/Libraries
78 Requires:   libalarm = %{version}-%{release}
79
80 %description -n libalarm-devel
81 Alarm server libraries development package (devel)
82
83
84 %package -n alarm-config-all-service-permitted
85 Summary:    Configuration for permitting all service applications
86 Group:      Development/Libraries
87 Requires:   libalarm = %{version}-%{release}
88
89 %description -n alarm-config-all-service-permitted
90 A configuration file package for permitting all service applications
91
92
93 %package -n alarm-config-platform-service-permitted
94 Summary:    Configuration for permitting platform service applications
95 Group:      Development/Libraries
96 Requires:   libalarm = %{version}-%{release}
97
98 %description -n alarm-config-platform-service-permitted
99 A configuration file package for permitting all service applications that have been platform certified
100
101
102 %package -n alarm-config-service-restricted
103 Summary:    Configuration for restricting service applications
104 Group:      Development/Libraries
105 Requires:   libalarm = %{version}-%{release}
106
107 %description -n alarm-config-service-restricted
108 A configuration file package for restricting service applications
109
110 #################################################
111 # unittests
112 #################################################
113 %package unittests
114 Summary:    GTest for alarm manager library
115 Group:      Development/Libraries
116 Requires:   %{name}
117
118 %description unittests
119 GTest for alarm-manager library
120
121
122 #################################################
123 # gcov
124 #################################################
125 %if 0%{?gcov:1}
126 %package gcov
127 Summary:    Alarm library (gcov)
128 Group:      Application Framework/Testing
129
130 %description gcov
131 Alarm library gcov objects
132 %endif
133
134
135 %prep
136 %setup -q
137 cp %{SOURCE1001} ./
138 cp %{SOURCE1002} ./
139
140
141 %build
142 %if 0%{?gcov:1}
143 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
144 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
145 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
146 export LDFLAGS+=" -lgcov"
147 %endif
148
149 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
150
151 %define appfw_feature_alarm_manager_module_log 1
152 %if 0%{?appfw_feature_alarm_manager_module_log}
153         _APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG=ON
154 %endif
155
156 %cmake . -DOBS=1 \
157         -DFULLVER=%{version} -DMAJORVER=${MAJORVER} \
158         -DBIN_INSTALL_DIR:PATH=%{_bindir} \
159         -DTZ_SYS_ETC=%{TZ_SYS_ETC} \
160         -D_APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG:BOOL=${_APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG} \
161         -DALARM_CONF_DIR=%{_datadir}/alarm-manager \
162         -DBUILD_GTESTS=%{?gtests:1}%{!?gtests:0} \
163
164 make %{?jobs:-j%jobs}
165
166 %if 0%{?gcov:1}
167 mkdir -p gcov-obj
168 find . -name '*.gcno' -exec cp '{}' gcov-obj ';'
169 %endif
170
171 %install
172 rm -rf %{buildroot}
173 %make_install
174
175 mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
176 mkdir -p %{buildroot}%{_unitdir_user}/sockets.target.wants
177 mkdir -p %{buildroot}%{_unitdir}/user-sockets@.target.wants
178 install -m 0644 %SOURCE1 %{buildroot}%{_unitdir}/alarm-server.service
179 install -m 0644 %SOURCE2 %{buildroot}%{_unitdir_user}/alarm-session-agent.service
180 install -m 0644 %SOURCE3 %{buildroot}%{_unitdir_user}/alarm-session-agent.socket
181 install -m 0644 %SOURCE6 %{buildroot}%{_unitdir}/alarm-session-agent@.service
182 install -m 0644 %SOURCE7 %{buildroot}%{_unitdir}/alarm-session-agent@.socket
183 ln -s ../alarm-server.service %{buildroot}%{_unitdir}/multi-user.target.wants/alarm-server.service
184 ln -sf ../alarm-session-agent.socket %{buildroot}%{_unitdir_user}/sockets.target.wants/alarm-session-agent.socket
185 ln -sf ../alarm-session-agent@.socket %{buildroot}%{_unitdir}/user-sockets@.target.wants/alarm-session-agent@.socket
186 mkdir -p %{buildroot}%{_tmpfilesdir}
187 install -m 0644 %SOURCE4 %{buildroot}%{_tmpfilesdir}/alarm-manager.conf
188 mkdir -p %{buildroot}%{_libdir}/udev/rules.d
189 install -m 0644 %SOURCE5 %{buildroot}%{_libdir}/udev/rules.d
190
191 %if 0%{?gcov:1}
192 mkdir -p %{buildroot}%{_datadir}/gcov/obj
193 install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
194 %endif
195
196 %check
197 (cd unittest && LD_LIBRARY_PATH=../lib ctest -V)
198 %if 0%{?gcov:1}
199 lcov -c --ignore-errors graph --no-external -q -d . -o alarm-manager.info
200 genhtml alarm-manager.info -o alarm-manager.out
201 zip -r alarm-manager.zip alarm-manager.out
202 install -m 0644 alarm-manager.zip %{buildroot}%{_datadir}/gcov/
203 %endif
204
205 %post -p /sbin/ldconfig
206
207 %postun -p /sbin/ldconfig
208
209 %post -n alarm-server
210
211 %post -n libalarm
212 /sbin/ldconfig
213
214 %postun -n libalarm
215 /sbin/ldconfig
216
217 %posttrans -n alarm-server
218 if [ -e /etc/config/model-config.xml ]; then
219         grep "feature\/profile.*tv" /etc/config/model-config.xml > /dev/null
220         if [ $? -eq 0 ]; then
221                 rm %{_libdir}/udev/rules.d/99-rtc.rules
222         fi
223 fi
224
225 %files -n alarm-server
226 %manifest alarm-server.manifest
227 %{_bindir}/alarm*
228 %attr(0644,root,root) %{_unitdir}/alarm-server.service
229 %{_unitdir}/multi-user.target.wants/alarm-server.service
230 %{_unitdir_user}/alarm-session-agent.service
231 %{_unitdir_user}/alarm-session-agent.socket
232 %{_unitdir}/alarm-session-agent@.service
233 %{_unitdir}/alarm-session-agent@.socket
234 %{_unitdir_user}/sockets.target.wants/alarm-session-agent.socket
235 %{_unitdir}/user-sockets@.target.wants/alarm-session-agent@.socket
236 %attr(0644,root,root) %{_datadir}/dbus-1/system-services/org.tizen.alarm.manager.service
237 %config %{_sysconfdir}/dbus-1/system.d/alarm-service.conf
238 %{_tmpfilesdir}/alarm-manager.conf
239 %{_libdir}/udev/rules.d/99-rtc.rules
240 %license LICENSE
241 %if 0%{?appfw_feature_alarm_manager_module_log}
242 %attr(0755,root,root) %{TZ_SYS_ETC}/dump.d/module.d/alarmmgr_log_dump.sh
243 %endif
244
245 %files -n libalarm
246 %manifest alarm-lib.manifest
247 %{_libdir}/libalarm.so.*
248 %license LICENSE
249
250 %files -n libalarm-devel
251 %{_includedir}/*.h
252 %{_libdir}/pkgconfig/*.pc
253 %{_libdir}/*.so
254
255 %files -n alarm-config-all-service-permitted
256 %{_datadir}/alarm-manager/alarm-config-all-service-permitted
257
258 %files -n alarm-config-platform-service-permitted
259 %{_datadir}/alarm-manager/alarm-config-platform-service-permitted
260
261 %files -n alarm-config-service-restricted
262 %{_datadir}/alarm-manager/alarm-config-service-restricted
263
264 %files unittests
265 %{_bindir}/gtest*
266
267 #################################################
268 # gcov
269 #################################################
270 %if 0%{?gcov:1}
271 %files gcov
272 %{_datadir}/gcov/*
273 %endif