diff options
-rw-r--r-- | recipes-wam/chromium/chromium84_git.bb | 5 | ||||
-rw-r--r-- | recipes-wam/chromium/files/add-a-delay-to-agl-ready-event.patch | 70 | ||||
-rw-r--r-- | recipes-wam/chromium/files/chromium-quiche-invalid-offsetof.patch | 57 | ||||
-rw-r--r-- | recipes-wam/chromium/files/chromium-skia-no_sanitize.patch | 63 | ||||
-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.patch | 56 | ||||
-rwxr-xr-x | recipes-wam/wam/files/wam-user-setup.sh | 25 | ||||
-rw-r--r-- | recipes-wam/wam/files/wam-user-setup@.service | 10 | ||||
-rw-r--r-- | recipes-wam/wam/wam_git.bb | 26 |
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" |