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