summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-wam/chromium/chromium84_git.bb5
-rw-r--r--recipes-wam/chromium/files/add-a-delay-to-agl-ready-event.patch70
-rw-r--r--recipes-wam/chromium/files/chromium-quiche-invalid-offsetof.patch57
-rw-r--r--recipes-wam/chromium/files/chromium-skia-no_sanitize.patch63
-rw-r--r--recipes-wam/wam/files/WebAppMgr.service (renamed from recipes-wam/wam/files/WebAppMgr@.service)18
-rw-r--r--recipes-wam/wam/files/trunc-webapp-roles.patch56
-rwxr-xr-xrecipes-wam/wam/files/wam-user-setup.sh25
-rw-r--r--recipes-wam/wam/files/wam-user-setup@.service10
-rw-r--r--recipes-wam/wam/wam_git.bb26
9 files changed, 15 insertions, 315 deletions
diff --git a/recipes-wam/chromium/chromium84_git.bb b/recipes-wam/chromium/chromium84_git.bb
index 24613db95..aaff50bdd 100644
--- a/recipes-wam/chromium/chromium84_git.bb
+++ b/recipes-wam/chromium/chromium84_git.bb
@@ -3,15 +3,12 @@ require chromium.inc
SRC_URI = "\
git://github.com/igalia/${PN};branch=marlin;protocol=https;rev=${SRCREV_chromium84};name=chromium84 \
git://github.com/webosose/chromium-v8;branch=@chromium84;destsuffix=git/src/v8;rev=${SRCREV_v8};name=v8;protocol=https \
- file://add-a-delay-to-agl-ready-event.patch \
- file://chromium-quiche-invalid-offsetof.patch \
- file://chromium-skia-no_sanitize.patch \
"
# Needed by catapult
DEPENDS += "python-six-native python-beautifulsoup4-native python-lxml-native python-html5lib-native python-webencodings-native"
-SRCREV_chromium84 = "3d6fd5dd0b836dbda2ea356ee1b25a9149419fef"
+SRCREV_chromium84 = "005a9257d3ba9eb363e19f5a8efc6758924dbf9b"
SRCREV_v8 = "5c1d89dd2945a10cf7a6a3458050b3177a870b09"
BROWSER_APPLICATION = "chromium84-browser"
diff --git a/recipes-wam/chromium/files/add-a-delay-to-agl-ready-event.patch b/recipes-wam/chromium/files/add-a-delay-to-agl-ready-event.patch
deleted file mode 100644
index 20caccbf6..000000000
--- a/recipes-wam/chromium/files/add-a-delay-to-agl-ready-event.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From d2d09d3e13a3874961971d343553106a1f3d5ac7 Mon Sep 17 00:00:00 2001
-From: Roger Zanoni <rzanoni@igalia.com>
-Date: Thu, 3 Jun 2021 10:53:40 +0200
-Subject: [PATCH] Add a delay to agl ready event
-
-Delay ready() to ensure that all the window and surfaces setup
-is done before notifying the compositor
----
- .../ozone/platform/wayland/host/wayland_window.cc | 14 +++++++++++++-
- .../ozone/platform/wayland/host/wayland_window.h | 5 +++++
- 2 files changed, 18 insertions(+), 1 deletion(-)
-
-diff --git a/src/ui/ozone/platform/wayland/host/wayland_window.cc b/src/ui/ozone/platform/wayland/host/wayland_window.cc
-index d2a9b0dae5..27749fd70d 100644
---- a/src/ui/ozone/platform/wayland/host/wayland_window.cc
-+++ b/src/ui/ozone/platform/wayland/host/wayland_window.cc
-@@ -299,7 +299,19 @@ WaylandWindow::SetAglReady(void)
- if (!connection_->agl_shell_manager) {
- return;
- }
-- connection_->agl_shell_manager->ready();
-+
-+ // Delay activation to ensure that all the setup is done
-+ // TODO(rzanoni): find a more deterministic way of doing this
-+ set_ready_timer_.Start(FROM_HERE,
-+ base::TimeDelta::FromMilliseconds(500),
-+ this,
-+ &WaylandWindow::SetReadyCallback);
-+}
-+
-+
-+void WaylandWindow::SetReadyCallback() {
-+ connection_->agl_shell_manager->ready();
-+ connection_->ScheduleFlush();
- }
-
- bool WaylandWindow::CanDispatchEvent(const PlatformEvent& event) {
-diff --git a/src/ui/ozone/platform/wayland/host/wayland_window.h b/src/ui/ozone/platform/wayland/host/wayland_window.h
-index 2acac98ae9..c10db38d21 100644
---- a/src/ui/ozone/platform/wayland/host/wayland_window.h
-+++ b/src/ui/ozone/platform/wayland/host/wayland_window.h
-@@ -15,6 +15,7 @@
- #include "base/containers/flat_set.h"
- #include "base/gtest_prod_util.h"
- #include "base/memory/ref_counted.h"
-+#include "base/timer/timer.h"
- #include "ui/events/platform/platform_event_dispatcher.h"
- #include "ui/gfx/geometry/rect.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -232,6 +233,8 @@ class WaylandWindow : public PlatformWindow, public PlatformEventDispatcher {
- // Returns a root parent window.
- WaylandWindow* GetRootParentWindow();
-
-+ void SetReadyCallback();
-+
- // Install a surface listener and start getting wl_output enter/leave events.
- void AddSurfaceListener();
-
-@@ -311,6 +314,8 @@ class WaylandWindow : public PlatformWindow, public PlatformEventDispatcher {
- // The type of the current WaylandWindow object.
- ui::PlatformWindowType type_ = ui::PlatformWindowType::kWindow;
-
-+ base::OneShotTimer set_ready_timer_;
-+
- DISALLOW_COPY_AND_ASSIGN(WaylandWindow);
- };
-
---
-2.32.0
-
diff --git a/recipes-wam/chromium/files/chromium-quiche-invalid-offsetof.patch b/recipes-wam/chromium/files/chromium-quiche-invalid-offsetof.patch
deleted file mode 100644
index 4fdd98de4..000000000
--- a/recipes-wam/chromium/files/chromium-quiche-invalid-offsetof.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 4cea86e76af28b28aa72cb7c69ff7cf242b2bd5d Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Sat, 27 Jun 2020 12:18:05 +0000
-Subject: [PATCH] GCC: supress invalid-offsetof warning
-
-GCC emits a warning if offsetof is used for non-POD
-types. However, GCC supports this and prints only
-the warning, because it might be nonportable code.
-Disable the warning for GCC with a pragma.
----
- src/net/third_party/quiche/src/quic/core/frames/quic_frame.h | 7 +++++++
- .../quiche/src/quic/core/frames/quic_inlined_frame.h | 7 +++++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/src/net/third_party/quiche/src/quic/core/frames/quic_frame.h b/src/net/third_party/quiche/src/quic/core/frames/quic_frame.h
-index 756b69f..aceba76 100644
---- a/src/net/third_party/quiche/src/quic/core/frames/quic_frame.h
-+++ b/src/net/third_party/quiche/src/quic/core/frames/quic_frame.h
-@@ -110,8 +110,15 @@ struct QUIC_EXPORT_PRIVATE QuicFrame {
-
- static_assert(sizeof(QuicFrame) <= 24,
- "Frames larger than 24 bytes should be referenced by pointer.");
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Winvalid-offsetof"
-+#endif
- static_assert(offsetof(QuicStreamFrame, type) == offsetof(QuicFrame, type),
- "Offset of |type| must match in QuicFrame and QuicStreamFrame");
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic pop
-+#endif
-
- // A inline size of 1 is chosen to optimize the typical use case of
- // 1-stream-frame in QuicTransmissionInfo.retransmittable_frames.
-diff --git a/src/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h b/src/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h
-index 08c4869..804e4bb 100644
---- a/src/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h
-+++ b/src/net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h
-@@ -17,8 +17,15 @@ namespace quic {
- template <typename DerivedT>
- struct QUIC_EXPORT_PRIVATE QuicInlinedFrame {
- QuicInlinedFrame(QuicFrameType type) : type(type) {
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Winvalid-offsetof"
-+#endif
- static_assert(offsetof(DerivedT, type) == 0,
- "type must be the first field.");
-+#if defined(__GNUC__)
-+#pragma GCC diagnostic pop
-+#endif
- static_assert(sizeof(DerivedT) <= 24,
- "Frames larger than 24 bytes should not be inlined.");
- }
---
-2.26.2
-
diff --git a/recipes-wam/chromium/files/chromium-skia-no_sanitize.patch b/recipes-wam/chromium/files/chromium-skia-no_sanitize.patch
deleted file mode 100644
index abfba57ab..000000000
--- a/recipes-wam/chromium/files/chromium-skia-no_sanitize.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 04765936a0a8dd3ac3f530786fce6b5cea826d3e Mon Sep 17 00:00:00 2001
-From: Roger Zanoni <rzanoni@igalia.com>
-Date: Wed, 24 Feb 2021 13:50:27 +0100
-Subject: [PATCH] [skia][build] fix skia no_sanitize build issues for gcc
-
-Based on https://src.fedoraproject.org/rpms/chromium/blob/rawhide/f/chromium-skia-no_sanitize.patch
-
----
- .../skia/include/private/SkFloatingPoint.h | 24 +++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/src/third_party/skia/include/private/SkFloatingPoint.h b/src/third_party/skia/include/private/SkFloatingPoint.h
-index 110dda2ae4..8223e9b57d 100644
---- a/src/third_party/skia/include/private/SkFloatingPoint.h
-+++ b/src/third_party/skia/include/private/SkFloatingPoint.h
-@@ -159,7 +159,15 @@ static inline int64_t sk_float_saturate2int64(float x) {
- // Cast double to float, ignoring any warning about too-large finite values being cast to float.
- // Clang thinks this is undefined, but it's actually implementation defined to return either
- // the largest float or infinity (one of the two bracketing representable floats). Good enough!
-+#if defined(__GNUC__) && __GNUC__ >= 8
-+__attribute__((no_sanitize("float-cast-overflow")))
-+#else
-+# if defined(__GNUC__)
-+__attribute__((no_sanitize_undefined))
-+# else
- [[clang::no_sanitize("float-cast-overflow")]]
-+# endif
-+#endif
- static inline float sk_double_to_float(double x) {
- return static_cast<float>(x);
- }
-@@ -226,12 +234,28 @@ static inline float sk_float_rsqrt(float x) {
- // IEEE defines how float divide behaves for non-finite values and zero-denoms, but C does not
- // so we have a helper that suppresses the possible undefined-behavior warnings.
-
-+#if defined(__GNUC__) && __GNUC__ >= 8
-+__attribute__((no_sanitize("float-divide-by-zero")))
-+#else
-+# if defined(__GNUC__)
-+__attribute__((no_sanitize_undefined))
-+# else
- [[clang::no_sanitize("float-divide-by-zero")]]
-+# endif
-+#endif
- static inline float sk_ieee_float_divide(float numer, float denom) {
- return numer / denom;
- }
-
-+#if defined(__GNUC__) && __GNUC__ >= 8
-+__attribute__((no_sanitize("float-cast-overflow")))
-+#else
-+# if defined(__GNUC__)
-+__attribute__((no_sanitize_undefined))
-+# else
- [[clang::no_sanitize("float-divide-by-zero")]]
-+# endif
-+#endif
- static inline double sk_ieee_double_divide(double numer, double denom) {
- return numer / denom;
- }
---
-2.30.1
-
diff --git a/recipes-wam/wam/files/WebAppMgr@.service b/recipes-wam/wam/files/WebAppMgr.service
index beffd114c..5cb536d9a 100644
--- a/recipes-wam/wam/files/WebAppMgr@.service
+++ b/recipes-wam/wam/files/WebAppMgr.service
@@ -12,26 +12,18 @@
[Unit]
Description="WebAppMgr is responsible for running web apps and manage their lifecycle"
-After=afm-service-homescreen-service--0.1--main@%i.service weston@display.service
-Wants=afm-service-homescreen-service--0.1--main@%i.service
-BindsTo=weston@display.service
+After=homescreen.service launcher.service agl-compositor.service
+Requires=agl-compositor.service
+Before=agl-session.target
[Service]
Type=simple
-User=%i
-Slice=user-%i.slice
-SmackProcessLabel=System
-SupplementaryGroups=audio display
UMask=0077
-CapabilityBoundingSet=
OOMScoreAdjust=-1000
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 --enable-features=UseOzonePlatform --ozone-platform=wayland --no-sandbox --use-viz-fmp-with-timeout=0 --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam
+ExecStart=/usr/bin/WebAppMgr --enable-features=UseOzonePlatform --ozone-platform=wayland --no-sandbox --use-viz-fmp-with-timeout=0 --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%u/wamdata" --webos-wam
Restart=on-failure
RestartSec=50
[Install]
-WantedBy=default.target
+WantedBy=agl-session.target
diff --git a/recipes-wam/wam/files/trunc-webapp-roles.patch b/recipes-wam/wam/files/trunc-webapp-roles.patch
deleted file mode 100644
index 829abe07f..000000000
--- a/recipes-wam/wam/files/trunc-webapp-roles.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From f31e93261f34abaa3dcdc4959963f5b5a8983002 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jan-Simon=20M=C3=B6ller?= <jsmoeller@linuxfoundation.org>
-Date: Thu, 25 Jun 2020 19:47:24 +0200
-Subject: [PATCH] Set webapp roles that are max 12 characters long.
-
-From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= <jaragunde@igalia.com>
-
-This is a workaround for SPEC-3127. To prevent repeated roles as much
-as possible, I'm using the appid as a basis instead of "Webapp-" +
-host + port, which has many chances to be redundant in the first 12
-chars.
-
-Bug-AGL: SPEC-3127
-
----
- src/agl/WebRuntimeAGL.cpp | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/src/agl/WebRuntimeAGL.cpp b/src/agl/WebRuntimeAGL.cpp
-index aed928b..efd2ee4 100644
---- a/src/agl/WebRuntimeAGL.cpp
-+++ b/src/agl/WebRuntimeAGL.cpp
-@@ -274,7 +274,6 @@ int WebAppLauncherRuntime::run(int argc, const char** argv) {
-
- m_id = getAppId(args);
- m_url = getAppUrl(args);
-- m_role = "WebApp";
-
- setup_signals();
-
-@@ -326,15 +325,9 @@ bool WebAppLauncherRuntime::init() {
- if (n != std::string::npos) {
- std::string sport = authority.substr(n+1);
- m_host = authority.substr(0, n);
-- m_role.push_back('-');
-- m_role.append(m_host);
-- m_role.push_back('-');
-- m_role.append(sport);
- m_port = stringTo<int>(sport);
- } else {
- m_host = authority;
-- m_role.push_back('-');
-- m_role.append(m_host);
- }
- }
-
-@@ -375,6 +368,9 @@ bool WebAppLauncherRuntime::init() {
- m_role = "homescreen";
- else if (m_id.rfind("webapps-homescreen", 0) == 0)
- m_role = "homescreen";
-+ else {
-+ m_role = m_id.substr(0,12);
-+ }
-
- LOG_DEBUG("id=[%s], name=[%s], role=[%s], url=[%s], host=[%s], port=%d, token=[%s], width=[%s], height[%s], surface_type[%d], panel_type[%d]",
- m_id.c_str(), m_name.c_str(), m_role.c_str(), m_url.c_str(),
diff --git a/recipes-wam/wam/files/wam-user-setup.sh b/recipes-wam/wam/files/wam-user-setup.sh
deleted file mode 100755
index 515ea82ec..000000000
--- a/recipes-wam/wam/files/wam-user-setup.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-uid="$1"
-bdir=/run/user
-udir="$bdir/$uid"
-hdir="/home/$uid"
-
-dodir() {
- local x smackset="$1"
- shift
- for x; do
- test -e "$x" || mkdir -m 700 "$x"
- chmod 700 "$x"
- chown "$uid:$uid" "$x"
- chsmack $smackset "$x"
- done
-}
-
-dodir '-t -a User::Home' "$hdir/wamdata"
-
-# Initialize lockfile, without this apps will be blocked by SMACK
-touch "$udir/wamsocket.lock"
-chmod 660 "$udir/wamsocket.lock"
-chown "$uid:$uid" "$udir/wamsocket.lock"
-chsmack -a User::App-Shared "$udir/wamsocket.lock"
diff --git a/recipes-wam/wam/files/wam-user-setup@.service b/recipes-wam/wam/files/wam-user-setup@.service
deleted file mode 100644
index f4814787d..000000000
--- a/recipes-wam/wam/files/wam-user-setup@.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Set up WAM for user %i
-Requires=afm-user-setup@i.service
-After=user-runtime-dir@%i.service afm-user-setup@i.service
-Before=user@%i.service
-
-[Service]
-Type=oneshot
-StartLimitInterval=0
-ExecStart=-/usr/libexec/wam/wam-user-setup.sh %i
diff --git a/recipes-wam/wam/wam_git.bb b/recipes-wam/wam/wam_git.bb
index a7bfde7e0..18ace85ee 100644
--- a/recipes-wam/wam/wam_git.bb
+++ b/recipes-wam/wam/wam_git.bb
@@ -26,33 +26,25 @@ SECURITY_STACK_PROTECTOR = ""
SRC_URI = "\
git://github.com/igalia/${BPN}.git;branch=marlin;protocol=https \
- file://WebAppMgr@.service \
+ file://WebAppMgr.service \
file://WebAppMgr.env \
- file://wam-user-setup.sh \
- file://wam-user-setup@.service \
- file://trunc-webapp-roles.patch \
"
S = "${WORKDIR}/git"
-SRCREV = "916ad4cc233eaec1f1b12f21c548a31f2b090104"
+SRCREV = "478bc7b00d2704d74814c4685c60d62afca50872"
do_install:append() {
- install -d ${D}${sysconfdir}/wam
+ install -v -d ${D}${sysconfdir}/wam
install -v -m 644 ${S}/files/launch/security_policy.conf ${D}${sysconfdir}/wam/security_policy.conf
- install -d ${D}${systemd_system_unitdir}
- install -v -m 644 ${WORKDIR}/WebAppMgr@.service ${D}${systemd_system_unitdir}/WebAppMgr@.service
- install -d ${D}${sysconfdir}/default/
+ install -v -d ${D}${systemd_user_unitdir}
+ install -v -m 644 ${WORKDIR}/WebAppMgr.service ${D}${systemd_user_unitdir}/WebAppMgr.service
+ install -v -d ${D}${sysconfdir}/default/
install -v -m 644 ${WORKDIR}/WebAppMgr.env ${D}${sysconfdir}/default/WebAppMgr.env
ln -snf WebAppMgr ${D}${bindir}/web-runtime
- install -d ${D}${systemd_system_unitdir}/afm-user-session@.target.wants
- ln -sf ../WebAppMgr@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/
- install -d ${D}${libexecdir}/wam/
- install -v -m 755 ${WORKDIR}/wam-user-setup.sh ${D}${libexecdir}/wam/wam-user-setup.sh
- install -v -m 644 ${WORKDIR}/wam-user-setup@.service ${D}${systemd_system_unitdir}/wam-user-setup@.service
- install -d ${D}${systemd_system_unitdir}/user-runtime-dir@.service.wants/
- ln -sf ../wam-user-setup@.service ${D}${systemd_system_unitdir}/user-runtime-dir@.service.wants/
+ install -v -d ${D}${systemd_user_unitdir}/agl-session.target.wants
+ ln -sf ../WebAppMgr.service ${D}${systemd_user_unitdir}/agl-session.target.wants/
}
-FILES:${PN} += "${sysconfdir}/init ${sysconfdir}/wam ${libdir}/webappmanager/plugins/*.so ${systemd_system_unitdir}"
+FILES:${PN} += "${sysconfdir}/init ${sysconfdir}/wam ${libdir}/webappmanager/plugins/*.so ${systemd_user_unitdir}"
CXXFLAGS:append:agl-devel = " -DAGL_DEVEL"