web-runtime: Update from chromium68 to chromium79 48/25848/3
authorLorenzo Tilve <ltilve@igalia.com>
Tue, 22 Dec 2020 11:13:14 +0000 (12:13 +0100)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Fri, 8 Jan 2021 11:56:40 +0000 (11:56 +0000)
This patch contains all the squashed changes needed
to bump WAM and Chromium to M79, including all the
ported changes from both upstream Chromium, webOSE and
and the former chromium 68 version.

It includes the needed changes on the recipes, and bumps
the versions to the new commits/branches of the
Chromium and Wam repositories.

The split of the ongoing changes merged is available here:
https://github.com/Igalia/meta-agl-html5-dev/commits/chromium79

Bug-AGL: SPEC-3576

Change-Id: Ia0de6f11001189789d4ffbf01ed81929c57bc7c5
Signed-off-by: Lorenzo Tilve <ltilve@igalia.com>
recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb
recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb
recipes-wam/chromium/chromium-browser-service.bb [deleted file]
recipes-wam/chromium/chromium.inc [moved from recipes-wam/chromium/chromium68_git.bb with 72% similarity]
recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch [deleted file]
recipes-wam/chromium/chromium79/0001-GCC-fix-includes-for-gcc-10.patch [new file with mode: 0644]
recipes-wam/chromium/chromium79_git.bb [new file with mode: 0644]
recipes-wam/chromium/gn-utils.inc
recipes-wam/wam/files/WebAppMgr@.service
recipes-wam/wam/wam_git.bb

index cc9ed3d..a857a15 100644 (file)
@@ -13,6 +13,5 @@ ALLOW_EMPTY_${PN} = "1"
 
 # add packages for WAM
 RDEPENDS_${PN} += " \
-    chromium-browser-service \
     wam \
     "
index 176bfef..751743b 100644 (file)
@@ -13,7 +13,6 @@ ALLOW_EMPTY_${PN} = "1"
 
 RDEPENDS_${PN} += "\
     packagegroup-agl-image-ivi \
-    packagegroup-agl-profile-graphical-html5 \
     packagegroup-agl-demo \
     "
 
diff --git a/recipes-wam/chromium/chromium-browser-service.bb b/recipes-wam/chromium/chromium-browser-service.bb
deleted file mode 100644 (file)
index 90242d7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Chromium browser widget"
-DESCRIPTION = "Wgt packaging for running chromium installed browser"
-HOMEPAGE = "https://webosose.org"
-SECTION = "apps"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/chromium;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-#build-time dependencies
-DEPENDS += "af-binder af-main-native chromium68"
-
-inherit cmake aglwgt
-
-RDEPENDS_${PN} += "chromium68-browser"
similarity index 72%
rename from recipes-wam/chromium/chromium68_git.bb
rename to recipes-wam/chromium/chromium.inc
index 4f545c1..8230160 100644 (file)
@@ -18,12 +18,6 @@ DEPENDS = "virtual/gettext wayland wayland-native pixman freetype glib-2.0 fontc
 
 PROVIDES = "${BROWSER_APPLICATION}"
 
-SRC_URI = "\
-    git://github.com/igalia/${BPN};branch=WIP@39.agl.compositor;protocol=https;rev=${SRCREV_chromium68};name=chromium68 \
-    git://github.com/webosose/v8;destsuffix=git/src/v8;rev=${SRCREV_v8};name=v8 \
-    file://v8-qemu-wrapper.patch \
-"
-SRCREV_chromium68 = "61e96d1ee5dfc2461697457d287bf922d8a03d9a"
 SRCREV_v8 = "1e3af71f1ff3735e8a5b639c48dfca63a7b8a647"
 
 # we don't include SRCPV in PV, so we have to manually include SRCREVs in do_fetch vardeps
@@ -43,18 +37,13 @@ BROWSER_APP_BUILD_TARGET = "chrome"
 BROWSER_APPLICATION = "chromium68-browser"
 BROWSER_APPLICATION_DIR = "/opt/chromium68"
 
-TARGET = "${WEBRUNTIME_BUILD_TARGET} ${BROWSER_APP_BUILD_TARGET}"
+TARGET = "${WEBRUNTIME_BUILD_TARGET}"
 
 # Skip do_install_append of webos_system_bus. It is not compatible with this component.
 WEBOS_SYSTEM_BUS_FILES_LOCATION = "${S}/files/sysbus"
 
 PACKAGECONFIG ?= "jumbo use-upstream-wayland"
 
-# Options to enable debug-webcore build.
-# Add the following line to local.conf (or local.dev.inc) to enable them:
-#   PACKAGECONFIG_append_pn-chromium68 = " debug-webcore"
-# Other debug options are controlled by sections later in this file
-PACKAGECONFIG[debug-webcore] = "remove_webcore_debug_symbols=false,remove_webcore_debug_symbols=true"
 
 # Set a default value for jumbo file merge of 8. This should be good for build
 # servers and workstations with a big number of cores. In case build is
@@ -86,16 +75,16 @@ GN_ARGS = "\
     treat_warnings_as_errors=false\
     is_agl=true\
     use_cbe=true\
-    is_chrome_cbe=true\
+    is_chrome_cbe=false\
     use_cups=false\
     use_custom_libcxx=false\
     use_kerberos=false\
     use_neva_media=false\
     use_ozone=true\
     use_xkbcommon=true\
+    use_wayland_gbm=false\
     use_pmlog=false\
     use_system_debugger_abort=true\
-    use_webos_gpu_info_collector=false\
     ${PACKAGECONFIG_CONFARGS}\
 "
 
@@ -140,21 +129,6 @@ GN_ARGS += "symbol_level=0"
 # let Yocto handle everything.
 GN_ARGS += "use_sysroot=false"
 
-# Toolchains we will use for the build. We need to point to the toolchain file
-# we've created, set the right target architecture and make sure we are not
-# using Chromium's toolchain (bundled clang, bundled binutils etc).
-GN_ARGS += "\
-        custom_toolchain=\"//build/toolchain/yocto:yocto_target\" \
-        gold_path=\"\" \
-        host_toolchain=\"//build/toolchain/yocto:yocto_native\" \
-        is_clang=${@is_default_cc_clang(d)} \
-        clang_base_path=\"${@clang_install_path(d)}\" \
-        clang_use_chrome_plugins=false \
-        linux_use_bundled_binutils=false \
-        target_cpu=\"${@gn_target_arch_name(d)}\" \
-        v8_snapshot_toolchain=\"//build/toolchain/yocto:yocto_target\" \
-"
-
 # ARM builds need special additional flags (see ${S}/build/config/arm.gni).
 # If we do not pass |arm_arch| and friends to GN, it will deduce a value that
 # will then conflict with TUNE_CCARGS and CC.
@@ -200,43 +174,6 @@ GN_ARGS_append_armv6 += 'arm_use_neon=false'
 # https://github.com/gperftools/gperftools/issues/693
 GN_ARGS_append_libc-musl = ' use_allocator_shim=false'
 
-# V8's JIT infrastructure requires binaries such as mksnapshot and
-# mkpeephole to be run in the host during the build. However, these
-# binaries must have the same bit-width as the target (e.g. a x86_64
-# host targeting ARMv6 needs to produce a 32-bit binary). Instead of
-# depending on a third Yocto toolchain, we just build those binaries
-# for the target and run them on the host with QEMU.
-python do_create_v8_qemu_wrapper () {
-    """Creates a small wrapper that invokes QEMU to run some target V8 binaries
-    on the host."""
-    qemu_libdirs = [d.expand('${STAGING_DIR_HOST}${libdir}'),
-                    d.expand('${STAGING_DIR_HOST}${base_libdir}')]
-    qemu_cmd = qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST', True),
-                                    qemu_libdirs)
-    wrapper_path = d.expand('${B}/v8-qemu-wrapper.sh')
-    with open(wrapper_path, 'w') as wrapper_file:
-        wrapper_file.write("""#!/bin/sh
-
-# This file has been generated automatically.
-# It invokes QEMU to run binaries built for the target in the host during the
-# build process.
-
-%s "$@"
-""" % qemu_cmd)
-    os.chmod(wrapper_path, 0o755)
-}
-do_create_v8_qemu_wrapper[dirs] = "${B}"
-addtask create_v8_qemu_wrapper after do_patch before do_configure
-
-python do_write_toolchain_file () {
-    """Writes a BUILD.gn file for Yocto detailing its toolchains."""
-    toolchain_dir = d.expand("${S}/src/build/toolchain/yocto")
-    bb.utils.mkdirhier(toolchain_dir)
-    toolchain_file = os.path.join(toolchain_dir, "BUILD.gn")
-    write_toolchain_file(d, toolchain_file)
-}
-addtask write_toolchain_file after do_patch before do_configure
-
 # More options to speed up the build
 GN_ARGS += "\
     enable_nacl=false\
@@ -248,12 +185,6 @@ GN_ARGS += "\
     use_pulseaudio=false\
 "
 
-# Respect ld-is-gold in DISTRO_FEATURES when enabling gold
-# Similar patch applied in meta-browser
-# http://patchwork.openembedded.org/patch/77755/
-EXTRA_OEGN_GOLD = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'use_gold=true', 'use_gold=false', d)}"
-GN_ARGS += "${EXTRA_OEGN_GOLD}"
-
 # Doesn't build for armv[45]*
 COMPATIBLE_MACHINE = "(-)"
 COMPATIBLE_MACHINE_aarch64 = "(.*)"
@@ -279,7 +210,7 @@ do_compile() {
     fi
 
     export PATH="${S}/depot_tools:$PATH"
-    ${S}/depot_tools/ninja -v -C ${OUT_DIR}/${BUILD_TYPE} ${TARGET}
+    ${S}/depot_tools/ninja ${PARALLEL_MAKE} -v -C ${OUT_DIR}/${BUILD_TYPE} ${TARGET}
 }
 
 do_configure() {
@@ -331,35 +262,38 @@ install_chromium_browser() {
 }
 
 install_webruntime() {
+
+    # # Generate install webos webview files
+    # ${S}/depot_tools/ninja ${PARALLEL_MAKE} -C ${OUT_DIR}/${BUILD_TYPE} webos/install/weboswebruntime
+
+    # # Move installation files to D directory
+    # mv ${OUT_DIR}/${BUILD_TYPE}/image/* ${D}
+    # # Rename include and locale directories
+    # mv ${D}${includedir}/webruntime ${D}${includedir}/${BPN}
+    # mv ${D}${CBE_DATA_PATH}/neva_locales ${D}${CBE_DATA_LOCALES_PATH}
+
+    # # move this to separate mksnapshot-cross recipe once we figure out how to build just cross mksnapshot from chromium repository
+    # install -d ${D}${bindir_cross}
+    # gzip -c ${OUT_DIR}/${BUILD_TYPE}/${MKSNAPSHOT_PATH}mksnapshot > ${D}${bindir_cross}/${HOST_SYS}-mksnapshot.gz
+
     install -d ${D}${libdir}
     install -d ${D}${includedir}/${BPN}
     install -d ${D}${CBE_DATA_PATH}
     install -d ${D}${CBE_DATA_LOCALES_PATH}
 
     # Install webos webview files
-    if [ -e "${SRC_DIR}/webos/install" ]; then
-        cd ${SRC_DIR}
-        xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/staging_inc.list cp --parents --target-directory=${D}${includedir}/${BPN}
-
-        cd ${OUT_DIR}/${BUILD_TYPE}
-
-        cp libcbe.so ${D}${libdir}/
-        if [ "${WEBOS_LTTNG_ENABLED}" = "1" ]; then
-          # use bindir if building non-cbe
-          cp libchromium_lttng_provider.so ${D}${libdir}/
-        fi
-        xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/binary.list cp --parents --target-directory=${D}${CBE_DATA_PATH}
-        cat ${SRC_DIR}/webos/install/weboswebruntime/data_locales.list | xargs -I{} install -m 755 -p {} ${D}${CBE_DATA_LOCALES_PATH}
-    fi
+    ${S}/depot_tools/ninja ${PARALLEL_MAKE} -C ${OUT_DIR}/${BUILD_TYPE} webos/install/weboswebruntime
+    chown root:root -R ${D}${libdir}
+    chown root:root -R ${D}${includedir}
 
     # move this to separate mksnapshot-cross recipe once we figure out how to build just cross mksnapshot from chromium repository
-    install -d ${D}${bindir_cross}
-    gzip -c ${OUT_DIR}/${BUILD_TYPE}/${MKSNAPSHOT_PATH}mksnapshot > ${D}${bindir_cross}/${HOST_SYS}-mksnapshot.gz
+    install -d ${D}${base_bindir}
+    gzip -c ${OUT_DIR}/${BUILD_TYPE}/${MKSNAPSHOT_PATH}mksnapshot > ${D}${base_bindir}/${HOST_SYS}-mksnapshot.gz
+
 }
 
 do_install() {
     install_webruntime
-    install_chromium_browser
 }
 
 WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION = " \
diff --git a/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch b/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch
deleted file mode 100644 (file)
index 485766b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Inappropriate [embedder specific]
-
-The patch below makes the V8 binaries run during the build be invoked through
-QEMU, as they are built for the target.
-
-Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-Signed-off-by: Maksim Sisov <msisov@igalia.com>
-
-Index: git/src/tools/v8_context_snapshot/BUILD.gn
-===================================================================
---- git.orig/src/tools/v8_context_snapshot/BUILD.gn
-+++ git/src/tools/v8_context_snapshot/BUILD.gn
-@@ -62,6 +62,7 @@ if (use_v8_context_snapshot) {
-     output_path = rebase_path(output_file, root_build_dir)
-     args = [
-+      "./v8-qemu-wrapper.sh",
-       "./" + rebase_path(
-               get_label_info(
-                       ":v8_context_snapshot_generator($v8_snapshot_toolchain)",
-Index: git/src/v8/BUILD.gn
-===================================================================
---- git.orig/src/v8/BUILD.gn
-+++ git/src/v8/BUILD.gn
-@@ -900,6 +900,7 @@ action("run_torque") {
-   }
-   args = [
-+    "./v8-qemu-wrapper.sh",
-     "./" + rebase_path(get_label_info(":torque($v8_torque_toolchain)",
-                                       "root_out_dir") + "/torque",
-                        root_build_dir),
-@@ -977,6 +978,7 @@ template("run_mksnapshot") {
-     data = []
-     args = [
-+      "./v8-qemu-wrapper.sh",
-       "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)",
-                                         "root_out_dir") + "/mksnapshot",
-                          root_build_dir),
diff --git a/recipes-wam/chromium/chromium79/0001-GCC-fix-includes-for-gcc-10.patch b/recipes-wam/chromium/chromium79/0001-GCC-fix-includes-for-gcc-10.patch
new file mode 100644 (file)
index 0000000..c3f8abd
--- /dev/null
@@ -0,0 +1,101 @@
+From 07c48d101166930daa13bbcab6bf5c6be89a8bd8 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Tue, 7 Apr 2020 10:02:27 +0000
+Subject: [PATCH] GCC: fix includes for gcc-10
+
+From
+https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files/chromium-81-gcc-10.patch
+---
+ src/base/trace_event/trace_event_memory_overhead.h               | 1 +
+ src/chrome/browser/search/background/ntp_backgrounds.h           | 1 +
+ src/media/cdm/supported_cdm_versions.h                           | 1 +
+ src/third_party/angle/include/platform/Platform.h                | 1 +
+ src/third_party/perfetto/include/perfetto/base/task_runner.h     | 1 +
+ src/third_party/webrtc/call/rtx_receive_stream.h                 | 1 +
+ .../webrtc/modules/audio_processing/aec3/clockdrift_detector.h   | 1 +
+ 7 files changed, 7 insertions(+)
+
+diff --git a/src/base/trace_event/trace_event_memory_overhead.h b/src/base/trace_event/trace_event_memory_overhead.h
+index 69468d464..3f5b786aa 100644
+--- a/src/base/trace_event/trace_event_memory_overhead.h
++++ b/src/base/trace_event/trace_event_memory_overhead.h
+@@ -9,6 +9,7 @@
+ #include <stdint.h>
+ #include <unordered_map>
++#include <string>
+ #include "base/base_export.h"
+ #include "base/macros.h"
+diff --git a/src/chrome/browser/search/background/ntp_backgrounds.h b/src/chrome/browser/search/background/ntp_backgrounds.h
+index 7afc0a230..ea5818e0d 100644
+--- a/src/chrome/browser/search/background/ntp_backgrounds.h
++++ b/src/chrome/browser/search/background/ntp_backgrounds.h
+@@ -6,6 +6,7 @@
+ #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_
+ #include <array>
++#include <cstddef>
+ class GURL;
+diff --git a/src/media/cdm/supported_cdm_versions.h b/src/media/cdm/supported_cdm_versions.h
+index 2b54e197b..f34a2a265 100644
+--- a/src/media/cdm/supported_cdm_versions.h
++++ b/src/media/cdm/supported_cdm_versions.h
+@@ -6,6 +6,7 @@
+ #define MEDIA_CDM_SUPPORTED_CDM_VERSIONS_H_
+ #include <array>
++#include <cstddef>
+ #include "media/base/media_export.h"
+ #include "media/cdm/api/content_decryption_module.h"
+diff --git a/src/third_party/angle/include/platform/Platform.h b/src/third_party/angle/include/platform/Platform.h
+index cea607055..829ada6d0 100644
+--- a/src/third_party/angle/include/platform/Platform.h
++++ b/src/third_party/angle/include/platform/Platform.h
+@@ -11,6 +11,7 @@
+ #include <stdint.h>
+ #include <array>
++#include <cstddef>
+ #define EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX 0x3482
+diff --git a/src/third_party/perfetto/include/perfetto/base/task_runner.h b/src/third_party/perfetto/include/perfetto/base/task_runner.h
+index cf6040123..02658e713 100644
+--- a/src/third_party/perfetto/include/perfetto/base/task_runner.h
++++ b/src/third_party/perfetto/include/perfetto/base/task_runner.h
+@@ -18,6 +18,7 @@
+ #define INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_
+ #include <functional>
++#include <cstdint>
+ #include "perfetto/base/export.h"
+diff --git a/src/third_party/webrtc/call/rtx_receive_stream.h b/src/third_party/webrtc/call/rtx_receive_stream.h
+index 8ffa4400a..113a8168b 100644
+--- a/src/third_party/webrtc/call/rtx_receive_stream.h
++++ b/src/third_party/webrtc/call/rtx_receive_stream.h
+@@ -12,6 +12,7 @@
+ #define CALL_RTX_RECEIVE_STREAM_H_
+ #include <map>
++#include <cstdint>
+ #include "call/rtp_packet_sink_interface.h"
+diff --git a/src/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/src/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+index 22528c948..69e624e8b 100644
+--- a/src/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
++++ b/src/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
+@@ -12,6 +12,7 @@
+ #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_
+ #include <array>
++#include <cstddef>
+ namespace webrtc {
diff --git a/recipes-wam/chromium/chromium79_git.bb b/recipes-wam/chromium/chromium79_git.bb
new file mode 100644 (file)
index 0000000..37ebb41
--- /dev/null
@@ -0,0 +1,60 @@
+require chromium.inc
+
+SRC_URI = "\
+    git://github.com/igalia/${PN};branch=@45.agl.jellyfish;protocol=https;rev=${SRCREV_chromium79};name=chromium79 \
+    git://github.com/webosose/chromium-v8;branch=@chromium79;destsuffix=git/src/v8;rev=${SRCREV_v8};name=v8 \
+    file://0001-GCC-fix-includes-for-gcc-10.patch \
+"
+
+# Needed by catapult
+DEPENDS += "python-six-native python-beautifulsoup4-native python-lxml-native python-html5lib-native python-webencodings-native"
+
+SRCREV_chromium79 = "c568380f34a275ed5430f3927b1bdee0e14220e0"
+SRCREV_v8 = "e876fd0e28bd3bda5815394874183b7e6079d440"
+
+BROWSER_APPLICATION = "chromium79-browser"
+BROWSER_APPLICATION_DIR = "/opt/chromium79"
+MKSNAPSHOT_PATH = "v8_snapshot/"
+
+GN_ARGS += "use_gtk=false"
+
+# Disable closure_compile
+# Else we need HOSTTOOLS += "java"
+GN_ARGS += "closure_compile=false"
+
+# When using meta-clang, one can switch to using the lld linker
+# by using the ld-is-lld distro feature otherwise use gold linker
+GN_ARGS += "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'use_lld=true use_gold=false', 'use_lld=false use_gold=true', d)}"
+
+# Toolchains we will use for the build. We need to point to the toolchain file
+# we've created, set the right target architecture and make sure we are not
+# using Chromium's toolchain (bundled clang, bundled binutils etc).
+GN_ARGS += "\
+    host_toolchain=\"//build/toolchain/cros:host\" \
+    cros_host_is_clang=false \
+    use_custom_libcxx_for_host=false \
+    cros_host_ar=\"${BUILD_AR}\" \
+    cros_host_cc=\"${BUILD_CC}\" \
+    cros_host_cxx=\"${BUILD_CXX}\" \
+    cros_host_extra_ldflags=\"${BUILD_LDFLAGS}\" \
+    custom_toolchain=\"//build/toolchain/cros:target\" \
+    is_clang=false \
+    use_custom_libcxx=false \
+    target_cpu=\"${@gn_arch_name('${TUNE_ARCH}')}\" \
+    cros_target_ar=\"${AR}\" \
+    cros_target_cc=\"${CC}\" \
+    cros_target_cxx=\"${CXX}\" \
+    cros_target_extra_ldflags=\"${LDFLAGS}\" \
+    v8_snapshot_toolchain=\"//build/toolchain/cros:v8_snapshot\" \
+    cros_v8_snapshot_is_clang=false \
+    cros_v8_snapshot_ar=\"${BUILD_AR}\" \
+    cros_v8_snapshot_cc=\"${BUILD_CC}\" \
+    cros_v8_snapshot_cxx=\"${BUILD_CXX}\" \
+    linux_use_bundled_binutils=false \
+    gold_path=\"\" \
+    v8_enable_embedded_builtins=false \
+    use_v8_context_snapshot=false \
+"
+
+D = "${OUT_DIR}/${BUILD_TYPE}/image"
+
index 0fd55a6..156b56d 100644 (file)
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 
-# GN host architecture helpers.
-#
-# BUILD_ARCH's value corresponds to what uname returns as the machine name.
-# The mapping in gn_host_arch_name() tries to match several possible values
-# returned by the Linux kernel in uname(2) into the corresponding values GN
-# understands.
-def gn_host_arch_name(d):
-    """Returns a GN architecture name corresponding to the build host's machine
-    architecture."""
-    import re
-    arch_translations = {
-        r'aarch64.*': 'arm64',
-        r'arm.*': 'arm',
-        r'i[3456]86$': 'x86',
-        r'x86_64$': 'x64',
-    }
-    build_arch = d.getVar("BUILD_ARCH")
-    for arch_regexp, gn_arch_name in arch_translations.items():
-        if re.match(arch_regexp, build_arch):
-            return gn_arch_name
-    bb.fatal('Unsuported BUILD_ARCH value: "%s"' % build_arch)
-
-# GN target architecture helpers.
-#
-# Determining the target architecture is more difficult, as there are many
-# different values we can use on the Yocto side (e.g. TUNE_ARCH, TARGET_ARCH,
-# MACHINEOVERRIDES etc). What we do is define the mapping with regular,
-# non-Python variables with overrides that are generic enough (i.e. "x86"
-# instead of "i586") and then use gn_target_arch_name() to return the right
-# value with some validation.
-GN_TARGET_ARCH_NAME_aarch64 = "arm64"
-GN_TARGET_ARCH_NAME_arm = "arm"
-GN_TARGET_ARCH_NAME_x86 = "x86"
-GN_TARGET_ARCH_NAME_x86-64 = "x64"
-
-BUILD_CC_toolchain-clang = "clang"
-BUILD_CXX_toolchain-clang = "clang++"
-BUILD_LD_toolchain-clang = "clang"
-
-# knob for clang, when using meta-clang to provide clang and case where
-# clang happens to be default compiler for OE we should let it use clang
-def is_default_cc_clang(d):
-    """Return true if clang is default cross compiler."""
-    toolchain = d.getVar("TOOLCHAIN")
-    overrides = d.getVar("OVERRIDES")
-    if toolchain == "clang" and "toolchain-clang" in overrides.split(":"):
-        return "true"
-    return "false"
-
-def clang_install_path(d):
-    """Return clang compiler install path."""
-    return d.getVar("STAGING_BINDIR_NATIVE")
-
-def gn_target_arch_name(d):
-    """Returns a GN architecture name corresponding to the target machine's
-    architecture."""
-    name = d.getVar("GN_TARGET_ARCH_NAME")
-    if name is None:
-        bb.fatal('Unsupported target architecture. A valid override for the '
-                 'GN_TARGET_ARCH_NAME variable could not be found.')
-    return name
-
-def write_toolchain_file(d, file_path):
-    """Creates a complete GN toolchain file in |file_path|."""
-    import string
-    gcc_toolchain_tmpl = string.Template(
-        'gcc_toolchain("${toolchain_name}") {\n'
-        '  cc = "${cc}"\n'
-        '  cxx = "${cxx}"\n'
-        '  ar = "${ar}"\n'
-        '  ld = cxx  # GN expects a compiler, not a linker.\n'
-        '  nm = "${nm}"\n'
-        '  readelf = "${readelf}"\n'
-        '  extra_cflags = "${extra_cflags}"\n'
-        '  extra_cppflags = "${extra_cppflags}"\n'
-        '  extra_cxxflags = "${extra_cxxflags}"\n'
-        '  extra_ldflags = "${extra_ldflags}"\n'
-        '  toolchain_args = {\n'
-        '    current_cpu = "${current_cpu}"\n'
-        '    current_os = "linux"\n'
-        '    is_clang = false\n'
-        '  }\n'
-        '}\n'
-    )
-    clang_toolchain_tmpl = string.Template(
-        'clang_toolchain("clang_${toolchain_name}") {\n'
-        '  extra_cflags = "${extra_cflags}"\n'
-        '  extra_cppflags = "${extra_cppflags}"\n'
-        '  extra_cxxflags = "${extra_cxxflags}"\n'
-        '  extra_ldflags = "${extra_ldflags}"\n'
-        '  toolchain_args = {\n'
-        '    current_cpu = "${current_cpu}"\n'
-        '    current_os = "linux"\n'
-        '    is_clang = true\n'
-        '    use_gold = true\n'
-        '  }\n'
-        '}\n'
-    )
-
-    native_toolchain = {
-        'toolchain_name': 'yocto_native',
-        'current_cpu': gn_host_arch_name(d),
-        'cc': d.expand('${BUILD_CC}'),
-        'cxx': d.expand('${BUILD_CXX}'),
-        'ar': d.expand('${BUILD_AR}'),
-        'nm': d.expand('${BUILD_NM}'),
-        'readelf': d.expand('${BUILD_PREFIX}readelf'),
-        'extra_cflags': d.expand('${BUILD_CFLAGS}'),
-        'extra_cppflags': d.expand('${BUILD_CPPFLAGS}'),
-        'extra_cxxflags': d.expand('${BUILD_CXXFLAGS}'),
-        'extra_ldflags': d.expand('${BUILD_LDFLAGS}'),
-    }
-    target_toolchain = {
-        'toolchain_name': 'yocto_target',
-        'current_cpu': gn_target_arch_name(d),
-        'cc': d.expand('${CC}'),
-        'cxx': d.expand('${CXX}'),
-        'ar': d.expand('${AR}'),
-        'nm': d.expand('${NM}'),
-        'readelf': d.expand('${TARGET_PREFIX}readelf'),
-        'extra_cflags': d.expand('${TARGET_CFLAGS}'),
-        'extra_cppflags': d.expand('${TARGET_CPPFLAGS}'),
-        'extra_cxxflags': d.expand('${TARGET_CXXFLAGS}'),
-        'extra_ldflags': d.expand('${TARGET_LDFLAGS}'),
-        'strip': '',
+def gn_arch_name(yocto_arch):
+    """Translates between Yocto's architecture values and the corresponding
+    ones used by GN."""
+    translation_table = {
+        'aarch64': 'arm64',
+        'arm': 'arm',
+        'i586': 'x86',
+        'i686': 'x86',
+        'x86_64': 'x64',
     }
-
-    with open(file_path, 'w') as toolchain_file:
-        toolchain_file.write(
-            '# This file has been generated automatically.\n'
-            '\n'
-            'import("//build/config/sysroot.gni")\n'
-            'import("//build/toolchain/gcc_toolchain.gni")\n'
-            '\n'
-        )
-        toolchain_file.write(gcc_toolchain_tmpl.substitute(native_toolchain))
-        toolchain_file.write(gcc_toolchain_tmpl.substitute(target_toolchain))
-        toolchain_file.write(clang_toolchain_tmpl.substitute(native_toolchain))
-        toolchain_file.write(clang_toolchain_tmpl.substitute(target_toolchain))
+    try:
+        return translation_table[yocto_arch]
+    except KeyError:
+        bb.fatal('"%s" is not a supported architecture.' % yocto_arch)
index a855bf9..5dfed9c 100644 (file)
@@ -29,7 +29,7 @@ EnvironmentFile=-/etc/default/WebAppMgr.env
 Environment=XDG_RUNTIME_DIR=/run/user/%i
 Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus
 Environment=WAM_DATA_PATH="/home/%i/wamdata"
-ExecStart=/usr/bin/WebAppMgr --no-sandbox --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam
+ExecStart=/usr/bin/WebAppMgr --no-sandbox --use-viz-fmp-with-timeout=0 --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam
 Restart=on-failure
 RestartSec=50
 
index d50a14f..ab3a1ae 100644 (file)
@@ -5,27 +5,33 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7ca
 
 inherit cmake
 
-DEPENDS = "glib-2.0 jsoncpp boost chromium68 wayland-ivi-extension libhomescreen"
+DEPENDS = "glib-2.0 jsoncpp boost chromium79 libhomescreen"
 
 EXTRA_OECMAKE = "\
     -DCMAKE_BUILD_TYPE=Release \
     -DCMAKE_INSTALL_PREFIX=${prefix} \
     -DPLATFORM_NAME=${@'${DISTRO}'.upper().replace('-', '_')} \
-    -DCHROMIUM_SRC_DIR=${STAGING_INCDIR}/chromium68"
+    -DCHROMIUM_SRC_DIR=${STAGING_INCDIR}/chromium79"
 
 PR="r0"
 
 PROVIDES += "virtual/webruntime"
 RPROVIDES_${PN} += "virtual/webruntime"
 
+# Disable some of securit_flags
+# Disable D_FORTIFY_SOURCE=2 and -fstack-protector-strong
+# Refer conf/distro/include/security_flags.inc in meta-webos/conf/distro/include/webos.inc
+lcl_maybe_fortify = ""
+SECURITY_STACK_PROTECTOR = ""
+
 SRC_URI = "\
-    git://github.com/igalia/${BPN}.git;branch=WIP@6.agl.compositor;protocol=https \
+    git://github.com/igalia/${BPN}.git;branch=@43.agl.jellyfish;protocol=https \
     file://WebAppMgr@.service \
     file://WebAppMgr.env \
     file://trunc-webapp-roles.patch \
 "
 S = "${WORKDIR}/git"
-SRCREV = "bd650046b688eb1593ae68c16ba3912837507d08"
+SRCREV = "88e9df41cf6dfbcb5d2ea10c769a44e69171a1c3"
 
 do_install_append() {
     install -d ${D}${sysconfdir}/wam