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