diff options
-rw-r--r-- | recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb | 1 | ||||
-rw-r--r-- | recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb | 1 | ||||
-rw-r--r-- | recipes-wam/chromium/chromium-browser-service.bb | 19 | ||||
-rw-r--r-- | recipes-wam/chromium/chromium.inc (renamed from recipes-wam/chromium/chromium68_git.bb) | 114 | ||||
-rw-r--r-- | recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch | 40 | ||||
-rw-r--r-- | recipes-wam/chromium/chromium79/0001-GCC-fix-includes-for-gcc-10.patch | 101 | ||||
-rw-r--r-- | recipes-wam/chromium/chromium79_git.bb | 60 | ||||
-rw-r--r-- | recipes-wam/chromium/gn-utils.inc | 151 | ||||
-rw-r--r-- | recipes-wam/wam/files/WebAppMgr@.service | 2 | ||||
-rw-r--r-- | recipes-wam/wam/wam_git.bb | 14 |
10 files changed, 209 insertions, 294 deletions
diff --git a/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb b/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb index cc9ed3d64..a857a15b2 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb @@ -13,6 +13,5 @@ ALLOW_EMPTY_${PN} = "1" # add packages for WAM RDEPENDS_${PN} += " \ - chromium-browser-service \ wam \ " diff --git a/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb b/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb index 176bfefd9..751743b3c 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb @@ -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 index 90242d792..000000000 --- a/recipes-wam/chromium/chromium-browser-service.bb +++ /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" diff --git a/recipes-wam/chromium/chromium68_git.bb b/recipes-wam/chromium/chromium.inc index 4f545c145..823016039 100644 --- a/recipes-wam/chromium/chromium68_git.bb +++ b/recipes-wam/chromium/chromium.inc @@ -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 index 485766b02..000000000 --- a/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch +++ /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 index 000000000..c3f8abdf4 --- /dev/null +++ b/recipes-wam/chromium/chromium79/0001-GCC-fix-includes-for-gcc-10.patch @@ -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 index 000000000..37ebb41b3 --- /dev/null +++ b/recipes-wam/chromium/chromium79_git.bb @@ -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" + diff --git a/recipes-wam/chromium/gn-utils.inc b/recipes-wam/chromium/gn-utils.inc index 0fd55a638..156b56d2d 100644 --- a/recipes-wam/chromium/gn-utils.inc +++ b/recipes-wam/chromium/gn-utils.inc @@ -16,142 +16,17 @@ # 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) diff --git a/recipes-wam/wam/files/WebAppMgr@.service b/recipes-wam/wam/files/WebAppMgr@.service index a855bf9f5..5dfed9c53 100644 --- a/recipes-wam/wam/files/WebAppMgr@.service +++ b/recipes-wam/wam/files/WebAppMgr@.service @@ -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 diff --git a/recipes-wam/wam/wam_git.bb b/recipes-wam/wam/wam_git.bb index d50a14fa0..ab3a1ae09 100644 --- a/recipes-wam/wam/wam_git.bb +++ b/recipes-wam/wam/wam_git.bb @@ -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 |