Separate benchmark tool from rpc-port
[platform/core/appfw/rpc-port.git] / packaging / rpc-port.spec
1 Name:       rpc-port
2 Summary:    RPC Port library
3 Version:        1.15.0
4 Release:    0
5 Group:          Application Framework/Libraries
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1001: %{name}.manifest
9 Source1002: rpc-port-benchmark-server-dbus.service
10 Source1003: rpc-port-benchmark-server-tidl.service
11 Source1004: rpc-port-benchmark-server-tidl.socket
12 Source1005: tizen.appfw.rpcport.benchmark.dbus.busname
13 Source1006: tizen.appfw.rpcport.benchmark.dbus.service
14 Source1007: rpc-port-benchmark-client-dbus.service
15 Source1008: rpc-port-benchmark-client-tidl.service
16 BuildRequires:  cmake
17 BuildRequires:  pkgconfig(aul)
18 BuildRequires:  pkgconfig(bundle)
19 BuildRequires:  pkgconfig(cynara-client)
20 BuildRequires:  pkgconfig(cynara-creds-socket)
21 BuildRequires:  pkgconfig(dlog)
22 BuildRequires:  pkgconfig(glib-2.0)
23 BuildRequires:  pkgconfig(gmock)
24 BuildRequires:  pkgconfig(libtzplatform-config)
25 BuildRequires:  pkgconfig(parcel)
26 BuildRequires:  pkgconfig(pkgmgr-info)
27 BuildRequires:  pkgconfig(tizen-shared-queue)
28 BuildRequires:  pkgconfig(uuid)
29 BuildRequires:  pkgconfig(grpc)
30 BuildRequires:  pkgconfig(protobuf)
31 BuildRequires:  pkgconfig(libsystemd)
32
33 %if 0%{?gcov:1}
34 BuildRequires:  lcov
35 BuildRequires:  zip
36 %endif
37
38 Requires(post): /sbin/ldconfig
39 Requires(post): coreutils
40 Requires(postun): /sbin/ldconfig
41
42 Recommends: amd-mod-rpc-port
43
44 %description
45 RPC Port library package.
46
47 %package devel
48 Summary:  RPC Port library (Development)
49 Group:    Application Framework/Development
50 Requires: %{name} = %{version}-%{release}
51
52 %description devel
53 RPC Port library (Development) package.
54
55 #################################################
56 # rpc-port-unittests
57 #################################################
58 %package unittests
59 Summary:    GTest for rpc-port
60 Group:      Development/Libraries
61 Requires:   %{name}
62
63 %description unittests
64 GTest for rpc-port
65
66 #################################################
67 # rpc-port-gcov
68 #################################################
69 %if 0%{?gcov:1}
70 %package gcov
71 Summary:    RPC Port(gcov)
72 Group:      Application Framework/Testing
73
74 %description gcov
75 RPC Port gcov objects
76 %endif
77
78 %package benchmark
79 Summary:    Benchmark tool for rpc-port
80 Group:      Application Framework/Testing
81 Requires:   %{name}
82
83 %description benchmark
84 Benchmark tool for rpc-port
85
86 %prep
87 %setup -q
88 cp %{SOURCE1001} .
89 cp %{SOURCE1002} .
90 cp %{SOURCE1003} .
91 cp %{SOURCE1004} .
92 cp %{SOURCE1005} .
93 cp %{SOURCE1006} .
94 cp %{SOURCE1007} .
95 cp %{SOURCE1008} .
96
97 %build
98 %if 0%{?gcov:1}
99 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
100 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
101 export FFLAGS+=" -fprofile-arcs -ftest-coverage"
102 export LDFLAGS+=" -lgcov"
103 %endif
104
105 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
106 %cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
107 # Call make instruction with smp support
108 %__make %{?jobs:-j%jobs}
109
110 %check
111 export LD_LIBRARY_PATH="../../src"
112 ctest -V %{?_smp_mflags}
113
114 %if 0%{?gcov:1}
115 lcov -c --ignore-errors mismatch,graph,unused --no-external -b . -d . -o %{name}.info
116 genhtml %{name}.info -o out --legend --show-details
117 %endif
118
119 %install
120 rm -rf %{buildroot}
121
122 %make_install
123
124 mkdir -p %{buildroot}%{_unitdir}
125 install -m 0644 %{SOURCE1002} %{buildroot}%{_unitdir}/rpc-port-benchmark-server-dbus.service
126 install -m 0644 %{SOURCE1003} %{buildroot}%{_unitdir}/rpc-port-benchmark-server-tidl.service
127
128 mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants
129 install -m 0644 %{SOURCE1004} %{buildroot}%{_unitdir}/rpc-port-benchmark-server-tidl.socket
130 ln -sf ../rpc-port-benchmark-server-tidl.socket %{buildroot}%{_unitdir}/sockets.target.wants/rpc-port-benchmark-server-tidl.socket
131
132 mkdir -p %{buildroot}%{_unitdir}/busnames.target.wants
133 install -m 0644 %{SOURCE1005} %{buildroot}%{_unitdir}/tizen.appfw.rpcport.benchmark.dbus.busname
134 ln -sf ../tizen.appfw.rpcport.benchmark.dbus.busname %{buildroot}%{_unitdir}/busnames.target.wants/tizen.appfw.rpcport.benchmark.dbus.busname
135
136 mkdir -p %{buildroot}%{_datadir}/dbus-1/system-services
137 install -m 0644 %{SOURCE1006} %{buildroot}%{_datadir}/dbus-1/system-services/tizen.appfw.rpcport.benchmark.dbus.service
138
139 mkdir -p %{buildroot}%{_unitdir}/sysinit.target.wants
140 install -m 0644 %{SOURCE1007} %{buildroot}%{_unitdir}/rpc-port-benchmark-client-dbus.service
141 ln -sf ../rpc-port-benchmark-client-dbus.service %{buildroot}%{_unitdir}/sysinit.target.wants/rpc-port-benchmark-client-dbus.service
142
143 install -m 0644 %{SOURCE1008} %{buildroot}%{_unitdir}/rpc-port-benchmark-client-tidl.service
144 ln -sf ../rpc-port-benchmark-client-tidl.service %{buildroot}%{_unitdir}/sysinit.target.wants/rpc-port-benchmark-client-tidl.service
145
146 %if 0%{?gcov:1}
147 builddir=$(basename $PWD)
148 gcno_obj_dir=%{buildroot}%{_datadir}/gcov/obj/%{name}/"$builddir"
149 mkdir -p "$gcno_obj_dir"
150 find . -name '*.gcno' -exec cp --parents '{}' "$gcno_obj_dir" ';'
151 %endif
152
153 cat << EOF > run-unittest.sh
154 #!/bin/sh
155 GCOV_PATH="/tmp/home/abuild/rpmbuild/BUILD"
156 PAKCAGE="%{name}-%{version}"
157
158 set_perm() {
159     ## Sets the permission for applications
160     /usr/bin/find /tmp/home/ -print | /usr/bin/xargs -n1 /usr/bin/chsmack -a "System::Run" &> /dev/null
161     /usr/bin/find /tmp/home/ -print | /usr/bin/xargs -n1 /usr/bin/chsmack -a "System::Run" -t &> /dev/null
162     /usr/bin/chmod -R 777 /tmp/home/
163 }
164
165 setup() {
166     echo "setup start"
167     /usr/bin/mkdir -p "${GCOV_PATH}/${PACKAGE}"
168     set_perm
169 }
170
171 test_main() {
172     echo "test_main start"
173     export "GCOV_PREFIX=/tmp"
174     /usr/bin/rpc-port-util -n test_port &
175     /usr/bin/rpc-port_unittests
176 }
177
178 teardown() {
179     echo "teardown start"
180     set_perm
181     killall rpc-port-util
182 }
183
184 main() {
185     setup
186     test_main
187     teardown
188 }
189
190 main "\$*"
191 EOF
192
193 mkdir -p %{buildroot}%{_bindir}/tizen-unittests/%{name}
194 install -m 0755 run-unittest.sh %{buildroot}%{_bindir}/tizen-unittests/%{name}/
195
196 %post -p /sbin/ldconfig
197
198 %postun -p /sbin/ldconfig
199
200 %files
201 %manifest %{name}.manifest
202 %attr(0644,root,root) %{_libdir}/lib%{name}.so.*
203 %license LICENSE.APLv2
204 %{_bindir}/rpc-port-util
205 %config %{_sysconfdir}/dbus-1/system.d/rpc-port.conf
206
207 %files devel
208 %{_includedir}/rpc-port/*.h
209 %{_libdir}/pkgconfig/*.pc
210 %{_libdir}/lib%{name}.so
211
212 #################################################
213 # rpc-port-unittests
214 #################################################
215 %files unittests
216 %{_bindir}/rpc-port_unittests
217 %{_bindir}/tizen-unittests/%{name}/run-unittest.sh
218
219 #################################################
220 # rpc-port-gcov
221 #################################################
222 %if 0%{?gcov:1}
223 %files gcov
224 %{_datadir}/gcov/*
225 %endif
226
227 %files benchmark
228 %manifest %{name}.manifest
229 %config %{_sysconfdir}/dbus-1/system.d/rpc-port-benchmark.conf
230 %{_bindir}/rpc-port-benchmark-server-tidl
231 %{_bindir}/rpc-port-benchmark-server-dbus
232 %{_bindir}/rpc-port-benchmark-server-grpc
233 %{_bindir}/rpc-port-benchmark-tool
234 %attr(0644,root,root) %{_unitdir}/rpc-port-benchmark-server-tidl.service
235 %attr(0644,root,root) %{_unitdir}/rpc-port-benchmark-server-tidl.socket
236 %attr(0644,root,root) %{_unitdir}/sockets.target.wants/rpc-port-benchmark-server-tidl.socket
237 %attr(0644,root,root) %{_unitdir}/rpc-port-benchmark-server-dbus.service
238 %attr(0644,root,root) %{_unitdir}/tizen.appfw.rpcport.benchmark.dbus.busname
239 %attr(0644,root,root) %{_unitdir}/busnames.target.wants/tizen.appfw.rpcport.benchmark.dbus.busname
240 %attr(0644,root,root) %{_datadir}/dbus-1/system-services/tizen.appfw.rpcport.benchmark.dbus.service
241 %attr(0644,root,root) %{_unitdir}/rpc-port-benchmark-client-tidl.service
242 %attr(0644,root,root) %{_unitdir}/sysinit.target.wants/rpc-port-benchmark-client-tidl.service
243 %attr(0644,root,root) %{_unitdir}/rpc-port-benchmark-client-dbus.service
244 %attr(0644,root,root) %{_unitdir}/sysinit.target.wants/rpc-port-benchmark-client-dbus.service