[M120 Migration][HBBTV] Merge track and subtitle related patches
[platform/framework/web/chromium-efl.git] / packaging / chromium-efl.spec
1 Name: chromium-efl
2 Summary: Chromium EFL
3 # Version: {TPK_VERSION}.{INTERNAL_API_REVISION}.{CHROMIUM_MAJOR_VERSION}
4 # The {INTERNAL_API_REVISION} is used for compatibility check with wrtjs.
5 Version: 1.1.120
6 # Set by ./tizen_src/scripts/update_chromium_version.sh
7 %define upstream_chromium_version 120.0.6099.5
8 Release: 1
9 # The 'Group' should be specified as one of the following valid group list.
10 # https://wiki.tizen.org/wiki/Packaging/Guidelines#Group_Tag
11 Group: Web Framework/Web Engine
12 # The 'License' should be specified as some of the following known license list.
13 # http://spdx.org/licenses/
14 License: LGPL-2.1 or BSD-2-Clause
15
16 Source0: %{name}-%{version}.tar.gz
17 Source1: content_shell.in
18
19 %ifarch aarch64
20 %define _nodebug 1
21 %endif
22
23 %ifarch aarch64
24 %define __drm_mapi_aarch_64 1
25 %else
26 %define __drm_mapi_aarch_64 0
27 %endif
28
29 %if 0%{?_nodebug}
30 %global __debug_install_post %{nil}
31 %global debug_package %{nil}
32 %endif
33
34 %if 0%{?_enable_unittests}
35 %define _debug_mode 1
36 %endif
37
38 # Do not use the hardcoded CPU numbers such as "jobs 20" or "_smp_mflags -j20"
39 # . The below statement is compatible with RPM 4.4.2.1+.
40 # . /usr/bin/getconf depends on the libc-common (or libc-bin) base package.
41 %if "%{?_costomized_smp_mflags}" != ""
42 %define _smp_mflags %{_costomized_smp_mflags}
43 %else
44 %define _smp_mflags -j%(echo $((`/usr/bin/getconf _NPROCESSORS_ONLN` / 2)))
45 %endif
46
47 %define tizen_version %{tizen_version_major}%{tizen_version_minor}
48
49 %if "%{?_build_chrome}" == "1"
50 %define __build_chrome 1
51 %else
52 %define __build_chrome 0
53 %endif
54
55 %if "%{?tizen_profile_name}" == "tv" && %{tizen_version} >= 70
56 # Tizen TV 7.0
57 %define __enable_capi_thread_booster 1
58 %else
59 %define __enable_capi_thread_booster 0
60 %endif
61
62 %if "%{?tizen_profile_name}" == "tv" && %{tizen_version} > 60
63 # Tizen TV 6.5
64 %define __enable_network_camera 1
65 %else
66 %define __enable_network_camera 0
67 %endif
68
69 %if "%{enable_gamepad_latency_test}" == "1"
70 %define __enable_gamepad_latency_test 1
71 %else
72 %define __enable_gamepad_latency_test 0
73 %endif
74 %{?_use_system_icu: %define __use_system_icu %{_use_system_icu}}
75 # Product tv can't utilize system icu due to nacl dependency.
76 %if "%{?profile}" != "tv" && %{tizen_version} == 60 && %{?_use_system_icu: 0}%{!?_use_system_icu: 1}
77 # Disabling system icu temporarily as it needs to be upgraded to version >= 67
78 %define __use_system_icu 0
79 %endif
80
81 Requires: /usr/bin/systemctl
82 Requires(post): /sbin/ldconfig
83 Requires(post): xkeyboard-config
84 Requires(postun): /sbin/ldconfig
85
86 %ifnarch riscv64
87 BuildRequires: binutils-gold
88 %endif
89 BuildRequires: at-spi2-atk-devel, bison, edje-tools, expat-devel, flex, gettext, gperf, libatk-bridge-2_0-0, libcap-devel, libcurl, libatomic
90 BuildRequires: libjpeg-turbo-devel, ninja, perl, python3, python3-xml, which
91 BuildRequires: pkgconfig(atk)
92 BuildRequires: pkgconfig(capi-appfw-application)
93 BuildRequires: pkgconfig(capi-appfw-app-manager)
94 BuildRequires: pkgconfig(capi-location-manager)
95 BuildRequires: pkgconfig(capi-media-audio-io)
96 BuildRequires: pkgconfig(capi-media-camera)
97 BuildRequires: pkgconfig(capi-media-player)
98 BuildRequires: pkgconfig(capi-media-tool)
99 BuildRequires: pkgconfig(capi-system-device)
100 BuildRequires: pkgconfig(capi-system-info)
101 BuildRequires: pkgconfig(capi-system-sensor)
102 BuildRequires: pkgconfig(capi-system-system-settings)
103 BuildRequires: pkgconfig(capi-ui-autofill)
104 BuildRequires: pkgconfig(capi-ui-autofill-common)
105 BuildRequires: pkgconfig(capi-ui-autofill-service)
106 BuildRequires: pkgconfig(dlog)
107 BuildRequires: pkgconfig(ecore)
108 BuildRequires: pkgconfig(ecore-evas)
109 BuildRequires: pkgconfig(ecore-imf)
110 BuildRequires: pkgconfig(ecore-imf-evas)
111 BuildRequires: pkgconfig(ecore-input)
112 BuildRequires: pkgconfig(efl-extension)
113 BuildRequires: pkgconfig(eldbus)
114 BuildRequires: pkgconfig(elementary)
115 BuildRequires: pkgconfig(esplusplayer)
116 BuildRequires: pkgconfig(evas)
117 BuildRequires: pkgconfig(feedback)
118 BuildRequires: pkgconfig(fontconfig)
119 BuildRequires: pkgconfig(freetype2)
120 BuildRequires: pkgconfig(gles20)
121 BuildRequires: pkgconfig(glib-2.0)
122 BuildRequires: pkgconfig(gstreamer-1.0)
123 BuildRequires: pkgconfig(gstreamer-app-1.0)
124 BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
125 BuildRequires: pkgconfig(harfbuzz)
126 BuildRequires: pkgconfig(icu-i18n)
127 BuildRequires: pkgconfig(libdrm)
128 BuildRequires: pkgconfig(libcurl)
129 BuildRequires: pkgconfig(libexif)
130 BuildRequires: pkgconfig(libffi)
131 BuildRequires: pkgconfig(libpng)
132 BuildRequires: pkgconfig(libtbm)
133 BuildRequires: pkgconfig(libtzplatform-config)
134 BuildRequires: pkgconfig(libudev)
135 BuildRequires: pkgconfig(libusb-1.0)
136 BuildRequires: pkgconfig(libxml-2.0)
137 BuildRequires: pkgconfig(libxslt)
138 BuildRequires: pkgconfig(minizip)
139 BuildRequires: pkgconfig(mm-player)
140 BuildRequires: pkgconfig(notification)
141 BuildRequires: pkgconfig(nspr)
142 BuildRequires: pkgconfig(nss)
143 BuildRequires: pkgconfig(pkgmgr-info)
144 BuildRequires: pkgconfig(scim)
145 BuildRequires: pkgconfig(security-manager)
146 BuildRequires: pkgconfig(sqlite3)
147 BuildRequires: pkgconfig(stt)
148 BuildRequires: pkgconfig(ttrace)
149 BuildRequires: pkgconfig(tts)
150 BuildRequires: pkgconfig(ui-gadget-1)
151 BuildRequires: pkgconfig(vconf)
152 BuildRequires: pkgconfig(zlib)
153
154 # Applied python acceleration for generating gyp files.
155 %ifarch armv7l
156 BuildRequires: python-accel-armv7l-cross-arm
157 %endif
158 %ifarch armv7hl
159 BuildRequires: python-accel-armv7hl-cross-arm
160 %endif
161 %ifarch aarch64
162 BuildRequires: python-accel-aarch64-cross-aarch64
163 %endif
164 %ifarch riscv64
165 BuildRequires: python-accel-riscv64-cross-riscv64
166 %endif
167
168 %if "%{?_with_wayland}" == "1"
169 %if %{tizen_version} >= 50
170 BuildRequires: pkgconfig(ecore-wl2)
171 %else
172 BuildRequires: pkgconfig(ecore-wayland)
173 %endif
174 BuildRequires: pkgconfig(wayland-egl)
175 %else
176 BuildRequires: pkgconfig(ecore-x)
177 BuildRequires: pkgconfig(libdri2)
178 BuildRequires: pkgconfig(x11)
179 BuildRequires: pkgconfig(xcomposite)
180 BuildRequires: pkgconfig(xcursor)
181 BuildRequires: pkgconfig(xext)
182 BuildRequires: pkgconfig(xi)
183 BuildRequires: pkgconfig(xrandr)
184 BuildRequires: pkgconfig(xt)
185 BuildRequires: pkgconfig(xfixes)
186 BuildRequires: pkgconfig(xtst)
187 %endif
188
189 %if "%{?tizen_profile_name}" == "tv"
190 BuildRequires: pkgconfig(aul-extension)
191 BuildRequires: pkgconfig(capi-media-sound-manager)
192 BuildRequires: pkgconfig(capi-stt-wrapper-tv)
193 BuildRequires: pkgconfig(capi-system-display-rotator)
194 BuildRequires: pkgconfig(capi-appfw-app-manager)
195 BuildRequires: pkgconfig(cynara-client)
196 BuildRequires: pkgconfig(security-privilege-manager)
197 BuildRequires: pkgconfig(drmdecrypt)
198 BuildRequires: pkgconfig(efl-assist)
199 BuildRequires: pkgconfig(hdmicec-api)
200 BuildRequires: pkgconfig(lwipc)
201 BuildRequires: pkgconfig(privileged-service)
202 BuildRequires: pkgconfig(tv-resource-manager)
203 BuildRequires: pkgconfig(tv-resource-information)
204 BuildRequires: pkgconfig(vd-win-util)
205 BuildRequires: pkgconfig(WebProduct)
206 %if %{tizen_version} >= 60
207 BuildRequires: pkgconfig(resource-center-api)
208 %endif
209 %endif
210
211 %if "%{__enable_capi_thread_booster}" == "1"
212 BuildRequires: pkgconfig(capi-boost-tv)
213 %endif
214
215 # TODO(youngsoo): The binutils-gold crashes mini_browser on the Tizen v3.0 ARM 64 bit images.
216 #                 Once fixed, use binutils-gold for all targets on Tizen v3.0.
217 %ifnarch aarch64 %{arm} # [M48_2564] Temporary excluding arm architecture for fixing memory issue
218                         #            FIXME: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=15383
219 #BuildRequires: binutils-gold
220 %endif
221
222 %ifarch armv7l
223 %define ARCHITECTURE armv7l
224 %endif
225 %ifarch armv7hl
226 %define ARCHITECTURE armv7hl
227 %endif
228 %ifarch aarch64
229 %define ARCHITECTURE aarch64
230 %endif
231 %ifarch i586 i686
232 %define ARCHITECTURE ix86
233 %endif
234 %ifarch x86_64
235 %define ARCHITECTURE x86_64
236 %endif
237 %ifarch riscv64
238 %define ARCHITECTURE riscv64
239 %endif
240
241 %{!?_clang: %define _clang 1}
242
243 %if "%{?gcov}" == "1"
244 %define __enable_gcov 1
245 %else
246 %define __enable_gcov 0
247 %endif
248
249 %if "%{?_clang}" == "1" && "%{ARCHITECTURE}" == "armv7l"
250 %define __use_clang 1
251 %else
252 %define __use_clang 0
253 %endif
254
255 %define __enable_wrt_js 1
256 %if 0%{?_disable_wrt_js}
257 %define __enable_wrt_js 0
258 %endif
259
260 %if 0%{?__enable_wrt_js}
261 BuildRequires: pkgconfig(appcore-agent)
262 BuildRequires: pkgconfig(appsvc)
263 BuildRequires: pkgconfig(aul)
264 BuildRequires: pkgconfig(capi-appfw-package-manager)
265 BuildRequires: pkgconfig(capi-appfw-service-application)
266 BuildRequires: pkgconfig(cynara-client)
267 BuildRequires: pkgconfig(launchpad)
268 BuildRequires: pkgconfig(libwebappenc)
269 BuildRequires: pkgconfig(message-port)
270 BuildRequires: pkgconfig(wgt-manifest-handlers)
271 %if "%{?profile}" == "tv"
272 BuildRequires: app-signer
273 BuildRequires: curl
274 BuildRequires: pkgmgr-extension-devel
275 BuildRequires: pkgconfig(autoinput)
276 BuildRequires: pkgconfig(capi-media-player)
277 BuildRequires: pkgconfig(capi-screensaver)
278 BuildRequires: pkgconfig(settings-api)
279 BuildRequires: pkgconfig(tvs-api)
280 %else
281 BuildRequires: pkgconfig(capi-appfw-watch-application)
282 BuildRequires: pkgconfig(capi-ui-inputmethod)
283 %endif
284
285 %define __xwalk_extension_path %{_libdir}/tizen-extensions-crosswalk
286 %define __xwalk_extension_service_path %{_libdir}/tizen-extensions-crosswalk-service
287 %endif
288
289 # node module is required for nmt and category public features.
290 %if "%{?profile}" != "tv" && "%{?profile}" != "wearable" && "%{?_with_da_profile}" != "1"
291 %define _support_node_module 1
292 %endif
293
294 %define __enable_ewk_interface 1
295
296 # Enable to support squashfs RPM and image by default
297 %define __enable_squashfs_image 1
298 %if "%{?profile}" == "tv" && "%{_vd_cfg_chip_vendor}" == "EMUL"
299 %define __package_signing 0
300 %else
301 %define __package_signing %{?__enable_squashfs_image}
302 %endif
303
304 # squashfs rpm isn't generated on local build by default.
305 %define __make_squashfs_rpm %{?_make_squashfs_rpm}%{!?_make_squashfs_rpm:%{?__enable_squashfs_image}}
306 %define __generate_tpk %{?__make_squashfs_rpm}
307
308 %if "%{?profile}" == "tv"
309   %if 0%{?tpktype:1}
310     %define __generate_tpk 1
311   %else
312     %define __generate_tpk 0
313   %endif
314 %else
315   %define __generate_tpk %{?__make_squashfs_rpm}
316 %endif
317
318 %if 0%{?__enable_squashfs_image}
319 BuildRequires: squashfs
320 %endif
321
322 %if "%{?tizen_profile_name}" == "tv" && "%{_vd_cfg_product_type}" != "AUDIO" &&  "%{_vd_cfg_product_type}" != "AV" && %{__build_chrome} != 1
323 BuildRequires: pkgconfig(accessory)
324 %endif
325
326 %if 0%{?__generate_tpk} || 0%{?__package_signing}
327 BuildRequires: hash-signer, zip
328 %endif
329
330 %if 0%{?__make_squashfs_rpm}
331 %package squashfs
332 Summary: Chromium EFL SquashFS Image
333 Requires: %{name} = %{version}-%{release}
334 %description squashfs
335 Browser Engine based on Chromium EFL (SquashFS Image)
336 %endif
337
338 %if 0%{?__generate_tpk}
339 %package tpk
340 Summary: Chromium EFL TPK
341 %description tpk
342 Browser Engine based on Chromium EFL (TPK)
343 %endif
344
345 %description
346 Browser Engine based on Chromium EFL (Shared Library)
347
348 %package devel
349 Summary: Chromium EFL
350 Group: Development/Libraries
351 Requires: %{name} = %{version}-%{release}
352 %description devel
353 Browser Engine dev library based on Chromium EFL (development files)
354
355 %if 0%{?_enable_unittests}
356 %package unittests
357 Summary: Chromium unittests
358 Group: Development/Libraries
359 Requires: %{name} = %{version}-%{release}
360 %description unittests
361 Chromium unite tests
362 %endif
363
364 %if 0%{?build_ewk_unittests}
365 %package ewktest
366 Summary: Chromium EWK unittests
367 Group: Development/UnitTests
368 Requires: %{name} = %{version}-%{release}
369 %description ewktest
370 Chromium EFL unit test utilities
371 %endif
372
373 %if 0%{?build_tizen_ppapi_extension_unittests}
374 %package tizen_ppapi_extension_unittests
375 Summary: Chromium tizen ppapi extension unittests
376 Group: Development/UnitTests
377 Requires: %{name} = %{version}-%{release}
378 %description tizen_ppapi_extension_unittests
379 Chromium tizen ppapi extension unit test utilities
380 %endif
381
382 # The macros '%TZ_' are valid from tizen v3.0
383 %define _pkgid org.tizen.%{name}
384 %define _xmldir %TZ_SYS_RO_PACKAGES
385
386 # Directory for chromium-efl tizen application package
387 %global CHROMIUM_APP_DIR %{TZ_SYS_RO_APP}/%{_pkgid}
388 # Directory for chromium-efl shared library
389 %global CHROMIUM_LIB_DIR %{_datadir}/%{name}
390
391 # Chromium unit tests install directory
392 %global CHROMIUM_UNITTESTS_DIR /opt/usr/chromium-unittests/
393 # Directory containing localization files
394 %global CHROMIUM_LOCALE_DIR %{_datadir}/%{name}/locale
395
396 # Chromium-EFL TPK install directory
397 %global CHROMIUM_TPK_DIR /tmp
398
399 # The tv profile has a different tpk generation policy.
400 # 2 types(update, upgrade) of tpk can be generated and used simultaneously.
401 # If tpktype is not defined and tizen version is less than 6.0, upgrade type is generated by default.
402 %if "%{?profile}" == "tv"
403   %global CHROMIUM_LIB_UPGRADE_DIR  %{_datadir}/%{name}/upgrade
404   %define _pkgid_upgrade %{_pkgid}-upgrade
405   %if "%{?tpktype}" == "upgrade" || (0%{!?tpktype:1} && %{tizen_version} < 60)
406     %define _tpkid %{_pkgid_upgrade}
407   %endif
408 %endif
409 %if 0%{!?_tpkid:1}
410 %define _tpkid %{_pkgid}
411 %endif
412
413 %prep
414 %setup -q
415
416 %build
417 # architecture related configuration + neon temporary workaround
418 %if %{?_skip_ninja:0}%{!?_skip_ninja:1}
419
420 %ifarch %{arm} aarch64
421   export ADDITION_OPTION=" -finline-limit=64 -foptimize-sibling-calls -fno-unwind-tables -fno-exceptions -Os "
422
423   export CFLAGS="$CFLAGS $ADDITION_OPTION"
424   export CXXFLAGS="$CXXFLAGS $ADDITION_OPTION"
425   export FFLAGS="$FFLAGS $ADDITION_OPTION"
426
427   export CFLAGS="$(echo $CFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
428   export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
429   export FFLAGS="$(echo $FFLAGS | sed 's/-mfpu=[a-zA-Z0-9-]*/-mfpu=neon/g')"
430 %else
431   export CFLAGS="$(echo $CFLAGS | sed 's/-Wl,--as-needed//g')"
432   export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wl,--as-needed//g')"
433 %endif
434
435 %if 0%{?_nodebug}
436   CFLAGS="$(echo $CFLAGS | sed -E 's/-g[0-9] /-g0 /g')"
437   CXXFLAGS="$(echo $CXXFLAGS | sed -E 's/-g[0-9] /-g0 /g')"
438 %endif
439 %if %{__use_clang} == 0
440   ulimit -n 16384
441 %endif
442
443 %if 0%{?__enable_wrt_js}
444   CFLAGS="$(echo $CFLAGS | sed -E 's/-O2/-Os/g')"
445   CXXFLAGS="$(echo $CXXFLAGS | sed -E 's/-O2/-Os/g')"
446   PATH="$PATH:$(cd third_party/node/tizen; pwd)"
447   export PYTHONIOENCODING=utf-8
448 %endif
449
450 # The "_repository" flag was changed to "_vd_cfg_target_repository" in tizen 4.0 product tv.
451 %if "%{?tizen_profile_name}" == "tv"
452 #TO DO, onemain branch haven't defined _vd_cfg_target_repository, so add this hijack code
453 # to set repo_name to "MuseM" if not define _vd_cfg_target_repository, need to delete this
454 # code when defined _vd_cfg_target_repository in onemain.
455 %if "%{?_vd_cfg_target_repository}"
456 %define repo_name %{_vd_cfg_target_repository}
457 %else
458 %define repo_name MuseM
459 %endif
460 %else
461 %define repo_name %{_repository}
462 %endif
463
464 %if %{__build_chrome} == 1
465 %define OUTPUT_BASE_FOLDER out.chrome.tz_v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
466 %else
467 %define OUTPUT_BASE_FOLDER out.tz_v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
468 %endif
469
470 export GN_GENERATOR_OUTPUT=$PWD/%{OUTPUT_BASE_FOLDER}
471
472 export BUILD_ARCH=%{ARCHITECTURE}
473
474 #set build mode
475 %global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}
476
477 if type ccache &> /dev/null; then
478   source tizen_src/build/ccache_env.sh tizen
479 fi
480
481 %if 0%{!?_skip_gn:1}
482 %define macro_to_bool() %(if [ %{expand:%%{?%{1}}%%{!?%{1}:0}} -gt 0 ]; then echo true; else echo false; fi)
483 #gn generate
484
485 # Touch the ewk generator script file to rerun in every build, so that
486 # changes in ewk api public headers will reflect in generated .cc file.
487 # FIXME: Check if there is a way to do inside the respective .gn file itself.
488 touch ./tizen_src/downloadable/ewk_api_wrapper_generator.py
489
490 #run standard gn_chromiumefl wrapper
491 ./tizen_src/build/gn_chromiumefl.sh \
492   "is_tizen=true" \
493   "lib_ro_root_dir=\"%{CHROMIUM_LIB_DIR}\"" \
494   "app_ro_root_dir=\"%{TZ_SYS_RO_APP}/%{_pkgid}\"" \
495   "app_rw_root_dir=\"%{TZ_SYS_RW_APP}/%{_pkgid}\"" \
496 %if "%{?profile}" == "tv"
497   "lib_upgrade_root_dir=\"%{CHROMIUM_LIB_UPGRADE_DIR}\"" \
498   "app_upgrade_root_dir=\"%{TZ_SYS_RW_APP}/%{_pkgid_upgrade}\"" \
499 %endif
500   "package_id=\"%{_pkgid}\"" \
501   "tizen_version=%{tizen_version}" \
502   "tizen_version_major=%{tizen_version_major}" \
503   "tizen_version_minor=%{tizen_version_minor}" \
504   "tizen_version_patch=%{tizen_version_patch}" \
505 %ifarch armv7hl
506   "arm_float_abi=\"hard\"" \
507 %endif
508 %if 0%{?_remove_webcore_debug_symbols:1}
509   "remove_webcore_debug_symbols=true" \
510 %endif
511 %if "%{?_with_wayland}" == "1"
512   "use_wayland=true" \
513 %endif
514 %if "%{?_repository}" == "emulator" || "%{?_repository}" == "emulator32-x11"
515   "tizen_emulator_support=true"  \
516 %endif
517 %if "%{?tizen_profile_name}" == "tv"
518   "tizen_product_tv=true" \
519 %endif
520 %if "%{?tizen_profile_name}" == "tv" && "%{_vd_cfg_product_type}" != "AUDIO" &&  "%{_vd_cfg_product_type}" != "AV" && %{__build_chrome} != 1
521   "tizen_vd_accessory=true" \
522 %endif
523 %if 0%{?component_build}
524  "component=\"shared_library\"" \
525 %endif
526 %if %{__use_clang} == 1
527   "is_clang=true" \
528 %else
529   "is_clang=false" \
530 %endif
531 %if "%{?__use_system_icu}" == "1"
532   "use_system_icu=true" \
533 %else
534   "use_system_icu=false" \
535 %endif
536 %if %{__build_chrome} == 1
537   "build_chrome=true" \
538 %else
539   "build_chrome=false" \
540   "ozone_auto_platforms=false" \
541 %endif
542 %if "%{?tizen_profile_name}" == "tv"
543   "lib_dir_path=\"%{_libdir}\"" \
544 %endif
545 %if "%{?_ttrace}" == "1"
546   "use_ttrace=true" \
547 %endif
548 %if 0%{?__enable_ewk_interface}
549  "enable_ewk_interface=true" \
550 %endif
551   "enable_wrt_js=%{macro_to_bool __enable_wrt_js}" \
552   "xwalk_extension_path=\"%{__xwalk_extension_path}\"" \
553   "xwalk_extension_service_path=\"%{__xwalk_extension_service_path}\"" \
554 %if %{__enable_network_camera}
555   "enable_network_camera=true" \
556 %endif
557 %if %{__enable_gamepad_latency_test}
558   "enable_gamepad_latency_test=true" \
559 %endif
560 %if %{__drm_mapi_aarch_64} && "%{?tizen_profile_name}" == "tv" && %{tizen_version} >= 80
561   "drm_mapi_aarch_64=true" \
562 %endif
563 %endif  # _skip_gn
564
565 ninja %{_smp_mflags} -C "%{OUTPUT_FOLDER}" \
566 %if 0%{?build_ewk_unittests}
567   ewk_unittests \
568 %endif
569 %if 0%{?build_tizen_ppapi_extension_unittests}
570   efl_integration_unittests \
571   ppapi_unittests \
572 %endif
573 %if 0%{?__enable_wrt_js}
574   wrt wrt-service wrt-service-launcher \
575 %endif
576 %if 0%{?__enable_ewk_interface}
577   ewk-interface \
578 %endif
579 %if 0%{?__enable_squashfs_image} && "%{?tizen_profile_name}" == "tv"
580   chromium-efl-install \
581 %endif
582 %if %{__build_chrome} == 1
583   content_shell chrome
584 %else
585   efl_webprocess chromium-ewk efl_webview_app mini_browser ubrowser
586 %endif
587
588 %if 0%{?_enable_unittests}
589 ninja %{_smp_mflags} -C"%{OUTPUT_FOLDER}" angle_unittests env_chromium_unittests cacheinvalidation_unittests \
590   angle_unittests env_chromium_unittests cacheinvalidation_unittests \
591   url_unittests sandbox_linux_unittests crypto_unittests sql_unittests accessibility_unittests \
592   gfx_unittests printing_unittests events_unittests ppapi_unittests jingle_unittests \
593   flip_in_mem_edsm_server_unittests breakpad_unittests dbus_unittests libphonenumber_unittests \
594   base_unittests ffmpeg_unittests gin_unittests net_unittests snapshot_unittests \
595   google_apis_unittests
596 # TODO: Fix compilation of the following tests content_unittests cc_unittests shell_dialogs_unittests
597 # gpu_unittests compos9itor_unittests media_unittests
598 %endif
599
600 %endif  # _skip_ninja
601
602 #XXX icudtl.dat is not copied by gyp. Do that manually
603 cp third_party/icu/android/icudtl.dat "%{OUTPUT_FOLDER}"
604
605 # XXX Workaround for using rpmlint with emulator build on Tizen_TV 3.0
606 #
607 # When using this repo http://download.tizen.org/snapshots/tizen/tv/latest/repos/emulator32-x11/packages/
608 # rpmlint-tizen-1.0-6.1 is installed in GBS-ROOT. So, after rpms are built
609 # gbs build script runs rpmlint to test created packages. There is some BUG in
610 # this script and directory /home/abuild/rpmbuild/OTHER/ isn't created. This
611 # directory is required for rpmlint's log file and its lack causes build error.
612 if [ ! -d %{buildroot}/../../OTHER/ -a -f /opt/testing/bin/rpmlint ]; then
613    mkdir -p %{buildroot}/../../OTHER/
614 fi
615 # Running unittests
616 %if 0%{?run_unittests_in_gbs}
617 %if 0%{?build_tizen_ppapi_extension_unittests}
618 %{OUTPUT_FOLDER}/efl_integration_unittests
619 %{OUTPUT_FOLDER}/ppapi_unittests
620 %endif
621 %endif
622
623 echo %{version} > "%{OUTPUT_FOLDER}"/version
624
625 # Prepare Tizen App Manifest
626 %if "%{?profile}" == "tv"
627 %define _manifestname %{_pkgid}-vd
628 %else
629 %define _manifestname %{_pkgid}
630 %endif
631 sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
632     -e 's#@CHROMIUM_VERSION@#%{version}#g' \
633     -e 's#@PACKAGE_ID@#%{_pkgid}#g' \
634     packaging/%{_manifestname}.xml.in \
635     > "%{OUTPUT_FOLDER}"/tizen-manifest.xml
636 %if 0%{?__generate_tpk}
637 sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
638     -e 's#@CHROMIUM_VERSION@#%{version}#g' \
639     -e 's#@PACKAGE_ID@#%{_tpkid}#g' \
640     packaging/%{_manifestname}.xml.in \
641     > "%{OUTPUT_FOLDER}"/tizen-manifest-tpk.xml
642 %endif
643
644 %if 0%{?__generate_tpk} && "%{?profile}" == "tv"
645 # add build_id to tizen-manifest
646 python3 %{TZ_SYS_BIN}/set_build_info.py "%{OUTPUT_FOLDER}"/tizen-manifest-tpk.xml %{COSMOS_BUILD_ID}
647 %endif
648
649 # Generate pkg-confg file
650 mkdir -p "%{OUTPUT_FOLDER}"/pkgconfig/
651     > "%{OUTPUT_FOLDER}"/pkgconfig/chromium-efl.pc
652 sed -e 's#@CHROMIUM_VERSION@#%{version}#' \
653     tizen_src/build/pkgconfig/chromium-efl.pc.in \
654      > "%{OUTPUT_FOLDER}"/pkgconfig/chromium-efl.pc
655
656 %if 0%{?__enable_squashfs_image} && "%{?tizen_profile_name}" != "tv"
657 sed -e 's#@RO_APP_PATH@#%{TZ_SYS_RO_APP}/%{_pkgid}#g' \
658     -e 's#@RW_APP_PATH@#%{TZ_SYS_RW_APP}/%{_pkgid}#g' \
659     -e 's#@MOUNT_POINT@#%{CHROMIUM_LIB_DIR}#g' \
660     tizen_src/downloadable/systemd/chromium-efl.service.in \
661     > "%{OUTPUT_FOLDER}"/chromium-efl.service
662
663 sed -e 's#@RW_APP_PATH@#%{TZ_SYS_RW_APP}/%{_pkgid}#g' \
664     -e 's#@MOUNT_POINT@#%{CHROMIUM_LIB_DIR}#g' \
665     tizen_src/downloadable/systemd/chromium-efl-update.service.in \
666     > "%{OUTPUT_FOLDER}"/chromium-efl-update.service
667 %endif
668
669 %install
670
671 # Make directory strucure for chromium-efl filesystem image
672 install -d "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/locales
673 install -d "%{buildroot}"%{CHROMIUM_LIB_DIR}/lib
674 install -d "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/images
675 install -d "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/locale
676 install -d "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/themes
677 %if "%{?profile}" == "tv"
678 install -d "%{buildroot}"%{CHROMIUM_LIB_UPGRADE_DIR}
679 %endif
680
681 install -m 0644 "%{OUTPUT_FOLDER}"/version            "%{buildroot}"%{CHROMIUM_LIB_DIR}/
682 install -m 0644 "%{OUTPUT_FOLDER}"/snapshot_blob.bin  "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
683 install -m 0644 "%{OUTPUT_FOLDER}"/content_shell.pak  "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
684
685 install -d "%{buildroot}"%{_bindir}
686 install -d "%{buildroot}"%{_libdir}
687 install -d "%{buildroot}"%{CHROMIUM_APP_DIR}/bin
688
689 install -d "%{buildroot}"%{_libdir}/../local/lib/
690 %if %{__use_clang} == 1
691   install -m 0644 %{_libdir}/libatomic.so*         "%{buildroot}"%{_libdir}/../local/lib/
692 %endif
693
694 install -d "%{buildroot}"%{_includedir}/v8/cppgc
695 install -m 0644 v8/include/cppgc/common.h "%{buildroot}"%{_includedir}/v8/cppgc/
696
697 %if 0%{?_support_node_module}
698 install -d "%{buildroot}"%{_includedir}/node
699 install -m 0644 third_party/electron_node/src/*.h "%{buildroot}"%{_includedir}/node/
700 %endif
701
702 %if "%{?tizen_profile_name}" != "tv"
703 install -m 0644 %{_libdir}/libscl-common.so        "%{buildroot}"%{_libdir}
704 %endif
705
706 %if %{__build_chrome} == 1
707   install -m 0755 "%{OUTPUT_FOLDER}"/content_shell      "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
708   sed 's#@binary@#%{CHROMIUM_LIB_DIR}/bin/content_shell#' %{SOURCE1} > "%{buildroot}"%{_bindir}/content_shell
709
710   install -m 0755 "%{OUTPUT_FOLDER}"/chrome "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/chrome
711   sed 's#@binary@#%{CHROMIUM_LIB_DIR}/bin/chrome#' %{SOURCE1} > "%{buildroot}"%{_bindir}/chrome
712
713   install -m 0755 "%{OUTPUT_FOLDER}"/chrome_crashpad_handler "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/chrome_crashpad_handler
714   sed 's#@binary@#%{CHROMIUM_LIB_DIR}/bin/chrome_crashpad_handler#' %{SOURCE1} > "%{buildroot}"%{_bindir}/chrome_crashpad_handler
715   install -m 0644 "%{OUTPUT_FOLDER}"/ui_resources_100_percent.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
716   install -m 0644 "%{OUTPUT_FOLDER}"/locales/*.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/locales
717   install -m 0644 "%{OUTPUT_FOLDER}"/chrome_100_percent.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
718   install -m 0644 "%{OUTPUT_FOLDER}"/resources.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
719
720   install -m 0755 "%{OUTPUT_FOLDER}"/libminigbm.so "%{buildroot}"%{_libdir}
721 %else
722   install -m 0644 "%{OUTPUT_FOLDER}"/locales/efl/*.pak  "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/locales/
723   install -m 0755 "%{OUTPUT_FOLDER}"/libtest_trace_processor.so "%{buildroot}"%{_libdir}
724   install -m 0755 "%{OUTPUT_FOLDER}"/efl_webprocess    "%{buildroot}"%{_bindir}/
725   %if "%{?profile}" == "tv"
726   ln -s efl_webprocess "%{buildroot}"%{_bindir}/efl_pluginprocess
727   %endif
728   %if 0%{?__enable_ewk_interface}
729     install -m 0644 "%{OUTPUT_FOLDER}"/libchromium-ewk.so    "%{buildroot}"%{_libdir}/
730   %else
731     ln -s %{CHROMIUM_LIB_DIR}/lib/libchromium-ewk.so "%{buildroot}"%{_libdir}/libchromium-ewk.so
732   %endif
733   %if 0%{?__enable_squashfs_image}
734     # mount service for chromium-efl.img
735     install -d "%{buildroot}"%{_unitdir}/multi-user.target.wants
736     install -d "%{buildroot}"%{_unitdir_user}/default.target.wants
737
738     %if "%{?tizen_profile_name}" == "tv"
739       install -m 0755 "%{OUTPUT_FOLDER}"/chromium-efl-install "%{buildroot}"%{_bindir}/
740       install -m 0644 tizen_src/downloadable/systemd/chromium-efl-vd.service "%{buildroot}"%{_unitdir_user}/
741       ln -s ../chromium-efl-vd.service "%{buildroot}"%{_unitdir_user}/default.target.wants/
742     %else
743       install -m 0644 "%{OUTPUT_FOLDER}"/chromium-efl.service "%{buildroot}"%{_unitdir}
744       ln -s ../chromium-efl.service "%{buildroot}"%{_unitdir}/multi-user.target.wants/
745
746       install -m 0644 "%{OUTPUT_FOLDER}"/chromium-efl-update.service "%{buildroot}"%{_unitdir}
747       ln -s ../chromium-efl-update.service "%{buildroot}"%{_unitdir}/multi-user.target.wants/
748     %endif
749   %endif
750
751   # org.tizen.chromium-efl Tizen App package
752   install -m 0755 "%{OUTPUT_FOLDER}"/efl_webview_app   "%{buildroot}"%{CHROMIUM_APP_DIR}/bin/
753   install -m 0755 "%{OUTPUT_FOLDER}"/mini_browser      "%{buildroot}"%{CHROMIUM_APP_DIR}/bin/
754   install -m 0755 "%{OUTPUT_FOLDER}"/ubrowser          "%{buildroot}"%{CHROMIUM_APP_DIR}/bin/
755
756   %if 0%{?__enable_ewk_interface}
757     install -m 0644 "%{OUTPUT_FOLDER}"/libchromium-impl.so "%{buildroot}"%{CHROMIUM_LIB_DIR}/lib/
758   %else
759     install -m 0644 "%{OUTPUT_FOLDER}"/libchromium-ewk.so  "%{buildroot}"%{CHROMIUM_LIB_DIR}/lib/
760   %endif
761 %endif
762
763 install -m 0644 "%{OUTPUT_FOLDER}"/resources/*.edj "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/themes/
764
765 %if %{__build_chrome} != 1
766 cp -r "%{OUTPUT_FOLDER}"/locale/* "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/locale/
767 chmod -R a=r,u+w,a+X              "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/locale/*
768 %endif
769
770 %if "%{?__use_system_icu}" != "1"
771   install -m 0644 "%{OUTPUT_FOLDER}"/icudtl.dat           "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
772 %endif
773
774 install -d "%{buildroot}"%{_xmldir}
775 install -m 0644 "%{OUTPUT_FOLDER}"/tizen-manifest.xml "%{buildroot}"%{_xmldir}/%{_pkgid}.xml
776
777 %if 0%{?__package_signing} && "%{?tizen_profile_name}" != "tv"
778   %define tizen_sign 1
779   %define tizen_sign_base %{CHROMIUM_APP_DIR}
780   %define tizen_sign_level platform
781   %define tizen_author_sign 1
782   %define tizen_dist_sign 1
783 %endif
784
785 %if %{__build_chrome} != 1
786 install -m 0644 "%{OUTPUT_FOLDER}"/images/*.png    "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/images/
787 %endif
788
789 install -m 0644 "%{OUTPUT_FOLDER}"/resources/*.edj "%{buildroot}"%{CHROMIUM_LIB_DIR}/res/themes/
790
791 %if "%{?__use_system_icu}" != "1"
792   install -m 0644 "%{OUTPUT_FOLDER}"/icudtl.dat           "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
793 %endif
794
795 install -d "%{buildroot}"%{_xmldir}
796 install -m 0644 "%{OUTPUT_FOLDER}"/tizen-manifest.xml "%{buildroot}"%{_xmldir}/%{_pkgid}.xml
797
798 %if 0%{?__package_signing} && "%{?tizen_profile_name}" != "tv"
799   %define tizen_sign 1
800   %define tizen_sign_base %{CHROMIUM_APP_DIR}
801   %define tizen_sign_level platform
802   %define tizen_author_sign 1
803   %define tizen_dist_sign 1
804 %endif
805
806 %if 0%{?__package_signing} && "%{?tizen_profile_name}" == "tv"
807   install -m 0644 tizen_src/downloadable/vd_sign/author-signature.xml "%{buildroot}"%{CHROMIUM_APP_DIR}
808   install -m 0644 tizen_src/downloadable/vd_sign/signature1.xml "%{buildroot}"%{CHROMIUM_APP_DIR}
809 %endif
810
811 install -d "%{buildroot}"%{_libdir}/pkgconfig
812 install -m 0644 "%{OUTPUT_FOLDER}"/pkgconfig/chromium-efl.pc "%{buildroot}"%{_libdir}/pkgconfig/
813
814 install -d "%{buildroot}"%{_includedir}/chromium-ewk
815 install -m 0644 tizen_src/ewk/efl_integration/public/*.h "%{buildroot}"%{_includedir}/chromium-ewk/
816
817 install -d "%{buildroot}"%{_includedir}/v8
818 install -m 0644 v8/include/*.h "%{buildroot}"%{_includedir}/v8/
819
820 %if %{__build_chrome} != 1
821   # The native applications using ewk API from Tizen 2.x have a dependency about libewebkit2.so.
822   # The chromium-efl should support the backward compatibility of the native applications.
823   ln -s %{_libdir}/libchromium-ewk.so %{buildroot}%{_libdir}/libewebkit2.so.0
824   ln -s %{_libdir}/libewebkit2.so.0   %{buildroot}%{_libdir}/libewebkit2.so
825 %endif
826
827 %if 0%{?__make_squashfs_rpm}
828   install -d "%{buildroot}"%{CHROMIUM_APP_DIR}/res
829   # Make squashfs image of chromium-efl after extracting debuginfo
830   %if 0%{?__generate_tpk}
831     %define _tpk_file_name %{_tpkid}-%{version}-v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
832     %define __tpk_install_post \
833       tizen_src/build/build_tpk.sh "%{buildroot}"%{CHROMIUM_APP_DIR} %{OUTPUT_FOLDER} %{_tpk_file_name} %{_tpkid} %{?profile} \
834       install -d %{buildroot}%{CHROMIUM_TPK_DIR}/ \
835       install -m 644 %{OUTPUT_FOLDER}/%{_tpk_file_name}.tpk %{buildroot}%{CHROMIUM_TPK_DIR}
836   %else
837     %define __tpk_install_post echo "No TPK generation"
838   %endif
839   %define __squashfs_rpm_install_post \
840     %{?__sandbox_chmod_cmd} \
841     mksquashfs "%{buildroot}"%{CHROMIUM_LIB_DIR} "%{buildroot}"%{CHROMIUM_APP_DIR}/res/%{name}.img -all-root \
842     %{__tpk_install_post} \
843     %{nil}
844
845  # Force stripping all symbols
846   %if "%{?profile}" == "tv"
847     # Clear %{_rpm_strip_option} macro to strip all symbols.
848     echo "Clear _rpm_strip_option=%{?_rpm_strip_option} to strip all symbols."
849     %define _rpm_strip_option %{nil}
850     echo "_find_debuginfo_strip_opts=%{?_find_debuginfo_strip_opts}"
851   %endif
852 %endif
853
854 %define __spec_install_post \
855   %{?__debug_package:%{__debug_install_post}} \
856   %{__arch_install_post} \
857   %{__os_install_post} \
858   %{?__squashfs_rpm_install_post} \
859   %{nil}
860
861 %if 0%{?_enable_unittests}
862 install -d "%{INSTALL_ROOT}%{CHROMIUM_UNITTESTS_DIR}"
863 for test in "%{OUTPUT_FOLDER}/*_unittests"; do
864   install -m 0755 ${test} "%{INSTALL_ROOT}%{CHROMIUM_UNITTESTS_DIR}"
865 done
866 %endif
867
868 %if 0%{?build_ewk_unittests}
869 mkdir -p %{buildroot}/opt/usr/resources/
870 mkdir -p %{buildroot}/opt/usr/utc_exec/
871 cp -r tizen_src/ewk/unittest/resources/* %{buildroot}/opt/usr/resources/
872 install -m 0644 "%{OUTPUT_FOLDER}"/ewk_unittests %{buildroot}/opt/usr/utc_exec/
873 install -m 0755 tizen_src/ewk/utc_gtest_run.sh %{buildroot}/opt/usr/utc_exec/
874 %endif
875
876 %if 0%{?build_tizen_ppapi_extension_unittests}
877 mkdir -p %{buildroot}/opt/usr/utc_exec/
878 install -m 0755 -p -D %{OUTPUT_FOLDER}/efl_integration_unittests %{buildroot}/opt/usr/utc_exec/
879 install -m 0755 -p -D %{OUTPUT_FOLDER}/ppapi_unittests %{buildroot}/opt/usr/utc_exec/
880 %endif
881
882 %if 0%{?__enable_wrt_js}
883   %define __wrt_resourcedir %{CHROMIUM_LIB_DIR}/wrt
884   %if "%{?tizen_profile_name}" != "tv"
885     %define __wrt_localedir %{OUTPUT_FOLDER}/gen/wrt/resources/locales/
886   %else
887     %define __wrt_localedir %{OUTPUT_FOLDER}/gen/wrt/resources/tv_locales/
888   %endif
889
890   install -d %{buildroot}%{_bindir}
891   install -d %{buildroot}%{_sysconfdir}/profile.d
892   install -d %{buildroot}%{_unitdir_user}
893   install -d %{buildroot}%{__wrt_resourcedir}
894   install -d %{buildroot}%{__xwalk_extension_path}
895   install -d %{buildroot}%{_datadir}/locale
896   install -d %{buildroot}%{_datadir}/edje/wrtjs
897   %if "%{?profile}" == "wearable"
898     install -d %{buildroot}%{_datadir}/icons/wrtjs
899   %endif
900
901   install -m 0755 %{OUTPUT_FOLDER}/wrt                            %{buildroot}%{_bindir}
902   ln -s %{_bindir}/wrt                                            %{buildroot}%{_bindir}/wrt-client
903   install -m 0755 wrt/wrt_env.sh                                  %{buildroot}%{_sysconfdir}/profile.d/
904   %if %{__build_chrome} != 1
905     install -m 0644 %{OUTPUT_FOLDER}/wrt_resources.pak              %{buildroot}%{CHROMIUM_LIB_DIR}/bin/
906     install -m 0644 %{OUTPUT_FOLDER}/liboffload_js_plugin.so        %{buildroot}%{__xwalk_extension_path}
907     install -m 0644 %{OUTPUT_FOLDER}/libsplash_screen_plugin.so     %{buildroot}%{__xwalk_extension_path}
908     install -m 0644 %{OUTPUT_FOLDER}/libwidget_plugin.so            %{buildroot}%{__xwalk_extension_path}
909     install -m 0644 %{OUTPUT_FOLDER}/libwrt-service-override.so     %{buildroot}%{__xwalk_extension_path}
910     install -m 0644 %{OUTPUT_FOLDER}/gen/tizen_src/chromium_impl/components/xwalk_extensions/offload_js_plugin/offload_js.json \
911                                                                     %{buildroot}%{__xwalk_extension_path}
912     install -m 0644 %{OUTPUT_FOLDER}/gen/tizen_src/chromium_impl/components/xwalk_extensions/splash_screen_plugin/splash_screen.json \
913                                                                     %{buildroot}%{__xwalk_extension_path}
914     install -m 0644 %{OUTPUT_FOLDER}/gen/tizen_src/chromium_impl/components/xwalk_extensions/widget_plugin/widget.json \
915                                                                     %{buildroot}%{__xwalk_extension_path}
916     install -m 0644 %{OUTPUT_FOLDER}/gen/wrt/resources/*.edj        %{buildroot}%{CHROMIUM_LIB_DIR}/res/themes/
917   %endif
918   %if "%{?profile}" == "wearable"
919     # Popup icons
920     cp wrt/resources/icons/*.png                                  %{buildroot}%{_datadir}/icons/wrtjs/
921   %endif
922   %if "%{?profile}" != "tv"
923     for file in $(find %{__wrt_localedir} -type f -name *.mo); do
924       install -m 644 -D $file                                     %{buildroot}%{_datadir}/locale/${file#%{__wrt_localedir}}
925     done
926
927     install -m 0644 %{OUTPUT_FOLDER}/gen/wrt/resources/*.edj      %{buildroot}%{_datadir}/edje/wrtjs
928   %endif
929
930   install -d %{buildroot}%{_datadir}/dbus-1/services
931   install -m 0755 %{OUTPUT_FOLDER}/wrt-service                    %{buildroot}%{_bindir}
932   install -m 0755 %{OUTPUT_FOLDER}/wrt-service                    %{buildroot}%{_bindir}/wrt-service-standalone
933   install -m 0755 %{OUTPUT_FOLDER}/wrt-service-launcher           %{buildroot}%{_bindir}
934
935   %if "%{?profile}" == "tv"
936     for file in $(find %{__wrt_localedir} -type f -name *.mo); do
937       install -m 644 -D $file                                     %{buildroot}%{CHROMIUM_LIB_DIR}/res/locale/${file#%{__wrt_localedir}}
938     done
939
940     install -d %{buildroot}/etc/notstrip/
941     install -m 644 packaging/wrt.notstrip                         %{buildroot}/etc/notstrip/wrt.notstrip
942     %if 0%{?__generate_tpk}
943       echo "start to get wrtjs package"
944       install -d %{buildroot}%{__wrt_resourcedir}/app
945       cd tizen_src/downloadable/wrtjs
946       rpm2cpio wrtjs-1.1.1-1.armv7l.rpm | cpio -divm
947       cp -rf usr/share/wrt/app/*                                   %{buildroot}%{__wrt_resourcedir}/app/
948       cd -
949     %endif
950     mkdir -p %{buildroot}/etc/spolicy/
951     %if 0%{?__generate_tpk}
952       echo "start to get wrtjs package"
953       install -d %{buildroot}%{__wrt_resourcedir}/app
954       cd tizen_src/downloadable/wrtjs
955       rpm2cpio wrtjs-1.1.1-1.armv7l.rpm | cpio -divm
956       cp -rf usr/share/wrt/app/*                                   %{buildroot}%{__wrt_resourcedir}/app/
957       cd -
958     %endif
959   %endif
960
961   install -d "%{buildroot}"%{_includedir}/wrt
962   install -m 0644 wrt/electron.d.ts                              "%{buildroot}"%{_includedir}/wrt/
963   install -m 0644 wrt/native_wrtjs.d.ts                          "%{buildroot}"%{_includedir}/wrt/
964 %endif
965
966 %pre
967 if (( $(rpm -qa | grep 'wrtjs-[[:digit:]]' | wc -l) > 1 )); then
968   echo -e "\033[31m*****************************************************"
969   echo -e "Please remove wrtjs rpm(s) except for one:\n"
970   rpm -qa | grep 'wrtjs-[[:digit:]]'
971   echo -e "*****************************************************\033[m"
972   exit 1
973 fi
974
975 export CHROMIUM_REVISION=$(echo %{version} | awk -F. '{print $2}')
976 export WRTJS_REVISION=$(rpm -qa | grep wrtjs | awk -F. '{print $2}')
977 if [[ "${WRTJS_REVISION}" == "" ]]; then
978   WRTJS_REVISION="not installed"
979 fi
980
981 echo -e "\033[32m*****************************************************"
982 echo -e "* chromium-efl revision : ${CHROMIUM_REVISION}"
983 echo -e "* wrtjs revision        : ${WRTJS_REVISION}"
984 echo -e "*"
985 if [[ "${WRTJS_REVISION}" == "not installed" ]] || \
986     (( ${CHROMIUM_REVISION} == ${WRTJS_REVISION} )); then
987   echo -e "* Succeeded to check rpm versions"
988 else
989   if (( ${CHROMIUM_REVISION} < ${WRTJS_REVISION} )); then
990     echo -e "\033[31m* You're trying to install too old chromium-efl."
991     echo -e "* Please install chromium-efl as revision ${WRTJS_REVISION}"
992     echo -e "* or"
993   else
994     echo -e "\033[31m* You have too old wrtjs."
995   fi
996   echo -e "* please re-install wrtjs as revision ${CHROMIUM_REVISION} first."
997 fi
998 echo -e "*****************************************************\033[m"
999
1000 %post
1001 %if 0%{?__enable_wrt_js}
1002 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/alarm -t ALLOW
1003 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/application.info -t ALLOW
1004 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/application.launch -t ALLOW
1005 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/appmanager.certificate -t ALLOW
1006 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/appmanager.kill -t ALLOW
1007 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/filesystem.read -t ALLOW
1008 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/filesystem.write -t ALLOW
1009 cyad -s -k MANIFESTS_GLOBAL -c User::Pkg::org.tizen.chromium-efl -u '*' -p http://tizen.org/privilege/packagemanager.install -t ALLOW
1010 # Prevent executing wrt-service by third party apps
1011 chsmack -a "User::Pkg::org.tizen.chromium-efl" %{_bindir}/wrt-service
1012 # It's essential to drop thread privilege of service app
1013 chsmack -e "System::Privileged" %{_bindir}/wrt-service
1014 %if "%{?_local_build}" == "1"
1015 setcap cap_mac_admin=eip %{_bindir}/wrt-service
1016 %endif
1017 %endif
1018
1019 %if "%{?profile}" == "tv"
1020 chsmack -a "*" opt/usr/home/owner/.pki/nssdb/cert9.db
1021 %endif
1022
1023 if [ -f %{CHROMIUM_APP_DIR}/res/%{name}.img ]; then
1024   echo "chromium-efl-squasfs image will be mounted on boot by chromium-efl-squasfs rpm."
1025   echo "If you want to use chromium-efl without squashfs, please uninstall chromium-efl-squashfs rpm."
1026 fi
1027
1028 %preun
1029 # Stop chromium-efl mount systemd unit if script called from target.
1030 # "id -G" - helps to determine the current environment:
1031 #   0     - called from image creation process
1032 #   other - called form target
1033 if [[ "$(id -G)" != "0" ]]; then
1034   if [ -f %{_unitdir}/chromium-efl.service ]; then
1035     echo "systemctl stop chromium-efl.service"
1036     systemctl stop chromium-efl.service
1037   fi
1038   if [ -f %{_unitdir_user}/default.target.wants/chromium-efl-vd.service ]; then
1039     echo "su - owner -c 'systemctl --user stop chromium-efl-vd.service'"
1040     su - owner -c 'systemctl --user stop chromium-efl-vd.service'
1041   fi
1042 fi
1043
1044 %postun
1045 %if 0%{?__make_squashfs_rpm}
1046 %preun squashfs
1047 # Stop chromium-efl mount systemd unit if script called from target.
1048 # "id -G" - helps to determine the current environment:
1049 #   0     - called from image creation process
1050 #   other - called form target
1051 if [[ "$(id -G)" != "0" ]]; then
1052   if [ -f %{_unitdir}/chromium-efl.service ]; then
1053     echo "systemctl stop chromium-efl.service"
1054     systemctl stop chromium-efl.service
1055   fi
1056   if [ -f %{_unitdir_user}/default.target.wants/chromium-efl-vd.service ]; then
1057     echo "su - owner -c 'systemctl --user stop chromium-efl-vd.service'"
1058     su - owner -c 'systemctl --user stop chromium-efl-vd.service'
1059   fi
1060 fi
1061
1062 %pre squashfs
1063
1064 %post squashfs
1065 rm -rf %{CHROMIUM_LIB_DIR}/*
1066 echo "All regular files in /usr/share/chromium-efl have been removed."
1067 echo "Note: It requries to reboot the device for mounting squashfs image!"
1068 %endif
1069
1070 %if 0%{?__generate_tpk}
1071 %preun tpk
1072 pkgcmd -un %{_tpkid}
1073
1074 %post tpk
1075 pkgcmd -i -t tpk -p %{CHROMIUM_TPK_DIR}/%{_tpk_file_name}.tpk
1076 rm -rf %{CHROMIUM_TPK_DIR}/%{_tpk_file_name}.tpk
1077 %endif
1078
1079 %files
1080 %manifest packaging/chromium-efl.manifest
1081 %if 0%{?__package_signing}
1082   %{CHROMIUM_APP_DIR}/author-signature.xml
1083   %{CHROMIUM_APP_DIR}/signature1.xml
1084 %endif
1085 %{_xmldir}/%{_pkgid}.xml
1086 %defattr(-,root,root,-)
1087 %if "%{?tizen_profile_name}" != "tv"
1088   %{_libdir}/libscl-common.so
1089 %endif
1090 %if %{__use_clang} == 1
1091   %{_libdir}/../local/lib/libatomic.so*
1092 %endif
1093
1094 %{CHROMIUM_LIB_DIR}/version
1095 %{CHROMIUM_LIB_DIR}/bin/snapshot_blob.bin
1096 %{CHROMIUM_LIB_DIR}/bin/content_shell.pak
1097 %{CHROMIUM_LIB_DIR}/bin/locales/*.pak
1098 %{CHROMIUM_LIB_DIR}/res/themes/*.edj
1099
1100 %if %{__build_chrome} == 1
1101   %{CHROMIUM_LIB_DIR}/bin/chrome_100_percent.pak
1102   %{CHROMIUM_LIB_DIR}/bin/resources.pak
1103   %{CHROMIUM_LIB_DIR}/bin/ui_resources_100_percent.pak
1104   %{CHROMIUM_LIB_DIR}/bin/content_shell
1105   %{_bindir}/content_shell
1106   %{CHROMIUM_LIB_DIR}/bin/chrome
1107   %{_bindir}/chrome
1108   %{CHROMIUM_LIB_DIR}/bin/chrome_crashpad_handler
1109   %{_bindir}/chrome_crashpad_handler
1110   %{_libdir}/libminigbm.so
1111 %else
1112   %{CHROMIUM_LIB_DIR}/res/locale/*
1113   %{_libdir}/libchromium-ewk.so
1114   %{_libdir}/libtest_trace_processor.so
1115   %{_libdir}/libewebkit2.so*
1116   %if 0%{?__enable_squashfs_image}
1117     %if "%{?tizen_profile_name}" == "tv"
1118       %{_bindir}/chromium-efl-install
1119       %{_unitdir_user}/chromium-efl-vd.service
1120       %{_unitdir_user}/default.target.wants/chromium-efl-vd.service
1121       %dir %{CHROMIUM_LIB_UPGRADE_DIR}
1122     %else
1123       %{_unitdir}/chromium-efl.service
1124       %{_unitdir}/multi-user.target.wants/chromium-efl.service
1125       %{_unitdir}/chromium-efl-update.service
1126       %{_unitdir}/multi-user.target.wants/chromium-efl-update.service
1127     %endif
1128   %endif
1129   %{CHROMIUM_APP_DIR}/bin/efl_webview_app
1130   %{CHROMIUM_APP_DIR}/bin/mini_browser
1131   %{CHROMIUM_APP_DIR}/bin/ubrowser
1132
1133   %if "%{?tizen_profile_name}" == "tv"
1134     %caps(cap_mac_admin,cap_mac_override,cap_setgid=ei) %{_bindir}/efl_webprocess
1135     %{_bindir}/efl_pluginprocess
1136   %else
1137     %{_bindir}/efl_webprocess
1138   %endif
1139   %if 0%{?__enable_ewk_interface}
1140     %{CHROMIUM_LIB_DIR}/lib/libchromium-impl.so
1141   %else
1142     %{CHROMIUM_LIB_DIR}/lib/libchromium-ewk.so
1143   %endif
1144   %{CHROMIUM_LIB_DIR}/res/images/*.png
1145 %endif
1146
1147 %if "%{?__use_system_icu}" != "1"
1148   %{CHROMIUM_LIB_DIR}/bin/icudtl.dat
1149 %endif
1150
1151 %if 0%{?__enable_wrt_js}
1152   %if "%{?profile}" == "tv"
1153     %caps(cap_mac_admin,cap_mac_override,cap_setgid,cap_setpcap,cap_setuid,cap_sys_chroot,cap_sys_ptrace,cap_sys_admin,cap_dac_override,cap_sys_nice=eip) %{_bindir}/wrt
1154     /etc/notstrip/wrt.notstrip
1155     %if 0%{?__generate_tpk}
1156       %{__wrt_resourcedir}/app/*
1157     %endif
1158   %else
1159     %{_bindir}/wrt
1160   %endif
1161   %{_bindir}/wrt-client
1162   %{_sysconfdir}/profile.d/wrt_env.sh
1163   %if %{__build_chrome} != 1
1164     %{CHROMIUM_LIB_DIR}/bin/wrt_resources.pak
1165     %{__xwalk_extension_path}/liboffload_js_plugin.so
1166     %{__xwalk_extension_path}/libsplash_screen_plugin.so
1167     %{__xwalk_extension_path}/libwidget_plugin.so
1168     %{__xwalk_extension_path}/libwrt-service-override.so
1169     %{__xwalk_extension_path}/offload_js.json
1170     %{__xwalk_extension_path}/splash_screen.json
1171     %{__xwalk_extension_path}/widget.json
1172   %endif
1173   %if "%{?profile}" != "tv"
1174     %{_datadir}/edje/wrtjs/*.edj
1175     %{_datadir}/locale/*
1176   %endif
1177   %if "%{?profile}" == "wearable"
1178     %{_datadir}/icons/wrtjs/*
1179   %endif
1180
1181   %{_bindir}/wrt-service
1182   %{_bindir}/wrt-service-standalone
1183   %{_bindir}/wrt-service-launcher
1184 %endif
1185
1186 %if 0%{?__make_squashfs_rpm}
1187 %files squashfs
1188 %defattr(-,root,root,-)
1189 %{CHROMIUM_APP_DIR}/res/%{name}.img
1190 %endif
1191
1192 %if 0%{?__generate_tpk}
1193 %files tpk
1194 %defattr(-,root,root,-)
1195 %{CHROMIUM_TPK_DIR}/*
1196 %endif
1197
1198 %files devel
1199 %defattr(-,root,root,-)
1200 %{_includedir}/chromium-ewk/*.h
1201 %{_libdir}/pkgconfig/chromium-efl.pc
1202 %{_libdir}/pkgconfig/*.pc
1203 %{_includedir}/v8/*
1204
1205 %if 0%{?_support_node_module}
1206 %{_includedir}/node/*
1207 %endif
1208
1209 %if 0%{?__enable_wrt_js}
1210   %{_includedir}/wrt/*
1211 %endif
1212
1213 %if 0%{?_enable_unittests}
1214 %files unittests
1215 %defattr(-,root,root,-)
1216 %{CHROMIUM_UNITTESTS_DIR}/*
1217 %endif
1218
1219 %if 0%{?build_ewk_unittests}
1220 %files ewktest
1221 %defattr(-,root,root,-)
1222 %manifest ./packaging/chromium-ewktest.manifest
1223 /opt/usr/utc_exec/*
1224 /opt/usr/resources/*
1225 %endif
1226
1227 %if "%{chromium_efl_tizen_profile}" == "tv"
1228 ln -s %{CHROMIUM_EXE_DIR}/efl_webprocess %{buildroot}%{CHROMIUM_EXE_DIR}/efl_pluginprocess
1229 %endif
1230
1231 %if 0%{?build_tizen_ppapi_extension_unittests}
1232 %files tizen_ppapi_extension_unittests
1233 %defattr(-,root,root,-)
1234 %manifest ./packaging/chromium-tizen_ppapi_extension_unittests.manifest
1235 /opt/usr/utc_exec/*
1236 %endif