Webkitgtk 2.12.x bump
cover Webkitgtk 2.12.x bump
This series bumps webkitgtk from the current 2.4.x series to 2.12.x and midori to match as well.
It's a major bump that deprecates the 2.4.x series since it isn't 100% security supported by upstream.
Patch 5 are proof-of-concept sample defconfigs that build both x11 and wayland-based bootable images intended to run on qemu and/or real hardware burned to pendrive media directly.
It's not supposed to be committed as-is - there's no EFI support in it yet, just BIOS. The directory hierarchy isn't too nice either. And documentation is missing as well.
In general it's geared towards intel-based hardware, though there are some other drivers enabled as well mostly for video and wifi hardware. Networking settings can be changed/set via the connman-gtk app. Both Webkit's MiniBrowser and midori are provided, with the addition of wireshark-gtk as another libgtk3-using application intended for testing.
Permament/Volatile storage isn't properly implemented yet, it's only running on volatile yet.
Gustavo Zacarias (5):
cairo: enable opengl for cairo-gl
webkitgtk: new package
midori: bump to version 0.5.11
webkitgtk24: mark as deprecated
qemu/x86_64: add midori samples for wayland and x11r7
board/qemu/x86_64/busybox-extras.config | 1 +
board/qemu/x86_64/genimage-x86_64.cfg | 24 +++++++
board/qemu/x86_64/grub.cfg | 10 +++
board/qemu/x86_64/linux-extras.config | 51 +++++++++++++
.../x86_64/midori_overlay/etc/X11/xinit/xinitrc | 3 +
board/qemu/x86_64/midori_overlay/etc/fb.modes | 4 ++
.../x86_64/midori_overlay/etc/init.d/S00rootfs | 5 ++
.../qemu/x86_64/midori_overlay/etc/init.d/S98audio | 6 ++
board/qemu/x86_64/midori_overlay/etc/init.d/S99gui | 21 ++++++
board/qemu/x86_64/midori_overlay/etc/weston.ini | 43 +++++++++++
.../x86_64/midori_overlay/usr/share/fluxbox/init | 7 ++
.../x86_64/midori_overlay/usr/share/fluxbox/menu | 29 ++++++++
board/qemu/x86_64/post-image.sh | 20 ++++++
board/qemu/x86_64/post-process.sh | 8 +++
configs/midori_wayland_x86_64_defconfig | 63 ++++++++++++++++
configs/midori_x11_x86_64_defconfig | 76 ++++++++++++++++++++
package/Config.in | 1 +
package/cairo/cairo.mk | 10 ++-
package/midori/0001-disable-libnotify.patch | 43 -----------
package/midori/0001-fix-bug-1492932.patch | 44 ++++++++++++
package/midori/0002-gcr-for-x11-only.patch | 32 +++++++++
package/midori/0002-new-vala.patch | 26 -------
package/midori/Config.in | 36 ++++------
package/midori/midori.hash | 2 +-
package/midori/midori.mk | 36 +++-------
package/{webkitgtk24 => webkitgtk}/Config.in | 46 ++++++------
package/webkitgtk/webkitgtk.hash | 4 ++
package/webkitgtk/webkitgtk.mk | 83 ++++++++++++++++++++++
package/webkitgtk24/Config.in | 2 +
29 files changed, 588 insertions(+), 148 deletions(-)
create mode 100644 board/qemu/x86_64/busybox-extras.config
create mode 100644 board/qemu/x86_64/genimage-x86_64.cfg
create mode 100644 board/qemu/x86_64/grub.cfg
create mode 100644 board/qemu/x86_64/linux-extras.config
create mode 100644 board/qemu/x86_64/midori_overlay/etc/X11/xinit/xinitrc
create mode 100644 board/qemu/x86_64/midori_overlay/etc/fb.modes
create mode 100755 board/qemu/x86_64/midori_overlay/etc/init.d/S00rootfs
create mode 100755 board/qemu/x86_64/midori_overlay/etc/init.d/S98audio
create mode 100755 board/qemu/x86_64/midori_overlay/etc/init.d/S99gui
create mode 100644 board/qemu/x86_64/midori_overlay/etc/weston.ini
create mode 100644 board/qemu/x86_64/midori_overlay/usr/share/fluxbox/init
create mode 100644 board/qemu/x86_64/midori_overlay/usr/share/fluxbox/menu
create mode 100755 board/qemu/x86_64/post-image.sh
create mode 100755 board/qemu/x86_64/post-process.sh
create mode 100644 configs/midori_wayland_x86_64_defconfig
create mode 100644 configs/midori_x11_x86_64_defconfig
delete mode 100644 package/midori/0001-disable-libnotify.patch
create mode 100644 package/midori/0001-fix-bug-1492932.patch
create mode 100644 package/midori/0002-gcr-for-x11-only.patch
delete mode 100644 package/midori/0002-new-vala.patch
copy package/{webkitgtk24 => webkitgtk}/Config.in (60%)
create mode 100644 package/webkitgtk/webkitgtk.hash
create mode 100644 package/webkitgtk/webkitgtk.mkSignature · 1 line
2.7.3
PATCH 1/5 cairo: enable opengl for cairo-gl
If OpenGL is enabled then enable cairo-gl.
However if GLESv2 is also present we must choose which implementation to use.
Since normally OpenGL is more featured, has more dependencies and wouldn't be present "by accident" it seems like the logical choice to win over it.
This feature is useful for webkitgtk's accelerated 2d canvas.
--- package/cairo/cairo.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
package/cairo/cairo.mk +8 -2
@@ -79,11 +79,17 @@ else CAIRO_CONF_OPTS += --disable-gobject endif +# Can use GL or GLESv2 but not both +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +CAIRO_CONF_OPTS += --enable-gl --disable-glesv2 +CAIRO_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) -CAIRO_CONF_OPTS += --enable-glesv2 +CAIRO_CONF_OPTS += --disable-gl --enable-glesv2 CAIRO_DEPENDENCIES += libgles else -CAIRO_CONF_OPTS += --disable-glesv2 +CAIRO_CONF_OPTS += --disable-gl --disable-glesv2 +endif endif ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y)
Signature · 1 line
2.7.3
Thomas Petazzoni
AppliedPATCH 1/5 cairo: enable opengl for cairo-gl
Hello,
Quoted 7 lines · Gustavo Zacarias
If OpenGL is enabled then enable cairo-gl.
However if GLESv2 is also present we must choose which implementation to use.
Since normally OpenGL is more featured, has more dependencies and wouldn't be present "by accident" it seems like the logical choice to win over it.
Quoted 6 lines
This feature is useful for webkitgtk's accelerated 2d canvas.
Signed-off-by Gustavo Zacarias <[email protected]>--- package/cairo/cairo.mk | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 2/5 webkitgtk: new package
In reply to Gustavo ZacariasAdd the latest 2.12.x upstream stable branch.
Both 2.4.x and 2.12.x can live side-by-side, however only the latest stable branch/releases are security-maintained, so add it unslotted.
--- package/Config.in | 1 + package/webkitgtk/Config.in | 77 +++++++++++++++++++++++++++++++++++++ package/webkitgtk/webkitgtk.hash | 4 ++ package/webkitgtk/webkitgtk.mk | 83 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 165 insertions(+) create mode 100644 package/webkitgtk/Config.in create mode 100644 package/webkitgtk/webkitgtk.hash create mode 100644 package/webkitgtk/webkitgtk.mk
package/Config.in +1 -0
@@ -943,6 +943,7 @@ menu "Graphics" source "package/wayland/Config.in" source "package/wayland-protocols/Config.in" source "package/webkit/Config.in" + source "package/webkitgtk/Config.in" source "package/webkitgtk24/Config.in" source "package/webp/Config.in" source "package/zbar/Config.in"
package/webkitgtk/Config.in new file +77 -0
77 lines not on this page · raw message
package/webkitgtk/webkitgtk.hash new file +4 -0
@@ -0,0 +1,4 @@ +# From http://www.webkitgtk.org/releases/webkitgtk-2.12.0.tar.xz.sha1 +sha1 05b498e45ad361003918822e81c66c9c39728263 webkitgtk-2.12.0.tar.xz +# Calculated based on the hash above +sha256 a68604f8fd1bcb247d647709290226289b90c16acb1f3730538b688db8df5ea6 webkitgtk-2.12.0.tar.xz
package/webkitgtk/webkitgtk.mk new file +83 -0
83 lines not on this page · raw message
Signature · 1 line
2.7.3
PATCH 2/5 webkitgtk: new package
Hello,
Quoted 34 lines · Gustavo Zacarias
package/webkitgtk/Config.in new file +27
-0+config BR2_PACKAGE_WEBKITGTK + bool "webkitgtk" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_LIBGTK3 + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_ENCHANT + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_ICU + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBSECRET + select BR2_PACKAGE_LIBSOUP + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_LIBGTK3_X11 + help + WebKit is an open source, standards compliant web browser engine. + + http://www.webkitgtk.org/package/webkitgtk/webkitgtk.mk new file +1
-0@@ -0,0 +1,83 @@ +################################################################################
package/webkitgtk/webkitgtk.mk line 11
Quoted 10 lines
package/webkitgtk/webkitgtk.mk new file +10
-0+# +# webkitgtk +# +################################################################################ + +WEBKITGTK_VERSION = 2.12.0 +WEBKITGTK_SITE = http://www.webkitgtk.org/releases +WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz +WEBKITGTK_INSTALL_STAGING = YES +WEBKITGTK_LICENSE = LGPLv2.1+ BSD-2c
Is it an "and" (in which case they should be comma separated) or an "or" (in which case it should be "LGPLv2.1+ or BSD-2c") ? If it's an "and", are the parts under each license identifiable ?
package/webkitgtk/webkitgtk.mk line 19
Quoted 8 lines
package/webkitgtk/webkitgtk.mk new file +8
-0+WEBKITGTK_LICENSE_FILES = \ + Source/WebCore/LICENSE-APPLE \ + Source/WebCore/LICENSE-LGPL-2.1 +WEBKITGTK_DEPENDENCIES = host-ruby host-flex host-bison host-gperf \ + enchant harfbuzz icu jpeg libgtk3 libsecret libsoup \ + libxml2 libxslt sqlite webp \ + $(if $(BR_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \ + $(if $(BR_PACKAGE_XLIB_LIBXDAMAGE),xlib_libXdamage)
And those two X11 dependencies already taken care of by libgtk3 ? Why only libXcomposite and libXdamage handled here and not the other ones ? Are they really useful for Wayland ?
Quoted 31 lines
package/webkitgtk/webkitgtk.mk new file +31
-0+WEBKITGTK_CONF_OPTS = \ + -DENABLE_API_TESTS=OFF \ + -DENABLE_GEOLOCATION=OFF \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_INTROSPECTION=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_SPELLCHECK=ON \ + -DPORT=GTK \ + -DUSE_LIBNOTIFY=OFF \ + -DUSE_LIBHYPHEN=OFF + +# ARM needs NEON for JIT +# i386 & x86_64 don't seem to have any special requirements +ifeq ($(BR2_ARM_CPU_HAS_NEON)$(BR2_i386)$(BR2_x86_64),y) +WEBKITGTK_CONF_OPTS += -DENABLE_JIT=ON +else +WEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF +endif + +ifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_VIDEO=ON \ + -DENABLE_WEB_AUDIO=ON +WEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base gst1-plugins-good +else +WEBKITGTK_CONF_OPTS += \ + -DENABLE_VIDEO=OFF \ + -DENABLE_WEB_AUDIO=OFF +endif + +# Only one target platform can be built, assume X11 > Wayland
package/webkitgtk/webkitgtk.mk line 60
Quoted 10 lines
package/webkitgtk/webkitgtk.mk new file +10
-0+ +# GTK3-X11 target mandates OpenGL from newer libgtk3 versions +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_ACCELERATED_2D_CANVAS=ON \ + -DENABLE_GLES2=OFF \ + -DENABLE_OPENGL=ON \ + -DENABLE_X11_TARGET=ON +WEBKITGTK_DEPENDENCIES += libgl \ + xlib_libXcomposite xlib_libXdamage xlib_libXrender xlib_libXt
You're again handling libX* dependencies here, so I guess there is some duplication/issue here.
Quoted 13 lines
package/webkitgtk/webkitgtk.mk new file +13
-0+# It can use libgtk2 for npapi plugins +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +WEBKITGTK_CONF_OPTS += -DENABLE_PLUGIN_PROCESS_GTK2=ON +WEBKITGTK_DEPENDENCIES += libgtk2 +else +WEBKITGTK_CONF_OPTS += -DENABLE_PLUGIN_PROCESS_GTK2=OFF +endif +else # !X11 +# GTK3-WAYLAND target mandates EGL from newer libgtk3 versions +ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) +WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=ON +WEBKITGTK_DEPENDENCIES += libegl +# GLES support is optional
package/webkitgtk/webkitgtk.mk line 83
Quoted 10 lines
package/webkitgtk/webkitgtk.mk new file +10
-0+ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +WEBKITGTK_CONF_OPTS += -DENABLE_GLES2=ON +WEBKITGTK_DEPENDENCIES += libgles +else +WEBKITGTK_CONF_OPTS += -DENABLE_GLES2=OFF +endif +endif +endif + +$(eval $(cmake-package))
Otherwise, looks good to me.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 2/5 webkitgtk: new package
Quoted 5 lines · Thomas Petazzoni
Quoted 1 line
+WEBKITGTK_LICENSE = LGPLv2.1+ BSD-2c
Is it an "and" (in which case they should be comma separated) or an "or" (in which case it should be "LGPLv2.1+ or BSD-2c") ? If it's an "and", are the parts under each license identifiable ?
Hi.
It's and, LGPL for the glue part (gtk), BSD for the webkit part if i remember correctly. I'll add the coma.
Quoted 4 lines
Quoted 4 lines
package/webkitgtk/webkitgtk.mk new file +4
-0+WEBKITGTK_LICENSE_FILES = \ + Source/WebCore/LICENSE-APPLE \ + Source/WebCore/LICENSE-LGPL-2.1 +WEBKITGTK_DEPENDENCIES = host-ruby host-flex host-bison host-gperf \
Quoted 8 lines
package/webkitgtk/webkitgtk.mk line 19
Quoted 4 lines
package/webkitgtk/webkitgtk.mk new file +4
-0+ enchant harfbuzz icu jpeg libgtk3 libsecret libsoup \ + libxml2 libxslt sqlite webp \ + $(if $(BR_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \ + $(if $(BR_PACKAGE_XLIB_LIBXDAMAGE),xlib_libXdamage)And those two X11 dependencies already taken care of by libgtk3 ? Why only libXcomposite and libXdamage handled here and not the other ones ? Are they really useful for Wayland ?
No they aren't, they are explicit X11 deps for webkit, i'll move them down to the X11 block though since they aren't useful for wayland. gtk3 wants/asks for: libx11, libxext, libxrender and libxi.
Quoted 2 lines
You're again handling libX* dependencies here, so I guess there is some duplication/issue here.
Yes, forgot to clean up, will do for v2.
Regards.
PATCH 3/5 midori: bump to version 0.5.11
In reply to Gustavo ZacariasAlso drop BR2_PACKAGE_MIDORI_HTTPS option since it's now handled in the webkitgtk package to satisfy MiniBrowser.
This version can't work with the older webkitgtk24 engine so it switches to the new version.
Also make gcr support conditional on x11 support for libgtk3, it doesn't work otherwise.
--- package/midori/0001-disable-libnotify.patch | 43 ---------------------------- package/midori/0001-fix-bug-1492932.patch | 44 +++++++++++++++++++++++++++++ package/midori/0002-gcr-for-x11-only.patch | 32 +++++++++++++++++++++ package/midori/0002-new-vala.patch | 26 ----------------- package/midori/Config.in | 36 ++++++++--------------- package/midori/midori.hash | 2 +- package/midori/midori.mk | 36 ++++++----------------- 7 files changed, 98 insertions(+), 121 deletions(-) delete mode 100644 package/midori/0001-disable-libnotify.patch create mode 100644 package/midori/0001-fix-bug-1492932.patch create mode 100644 package/midori/0002-gcr-for-x11-only.patch delete mode 100644 package/midori/0002-new-vala.patch
package/midori/0001-disable-libnotify.patch deleted +0 -43
@@ -1,43 +0,0 @@ -Disable libnotify support, we've got no package and it's not very useful -in embedded targets anyway. -The webmedia extension requires libnotify as well. - -Signed-off-by: Gustavo Zacarias <[email protected]> - -diff -Nura midori-0.5.9.orig/CMakeLists.txt midori-0.5.9/CMakeLists.txt ---- midori-0.5.9.orig/CMakeLists.txt 2015-03-30 15:57:29.554632932 -0300 -+++ midori-0.5.9/CMakeLists.txt 2015-03-30 15:57:35.299830192 -0300 -@@ -143,16 +143,7 @@ - endif () - endif () - --if (WIN32) -- add_definitions("-DLIBNOTIFY_VERSION=\"No\"") --else () -- pkg_check_modules(NOTIFY REQUIRED libnotify) -- add_definitions("-DLIBNOTIFY_VERSION=\"${NOTIFY_VERSION}\"") -- add_definitions("-DHAVE_LIBNOTIFY") -- set(OPTS_INCLUDE_DIRS "${OPTS_INCLUDE_DIRS};${NOTIFY_INCLUDE_DIRS}") -- set(OPTS_LIBRARIES "${OPTS_LIBRARIES};${NOTIFY_LIBRARIES}") -- set(PKGS ${PKGS} libnotify) --endif () -+add_definitions("-DLIBNOTIFY_VERSION=\"No\"") - - option(USE_GTK3 "Use GTK+3" OFF) - option(HALF_BRO_INCOM_WEBKIT2 "Serve as a guniea pig" OFF) -diff -Nura midori-0.5.9.orig/extensions/CMakeLists.txt midori-0.5.9/extensions/CMakeLists.txt ---- midori-0.5.9.orig/extensions/CMakeLists.txt 2015-03-30 15:57:29.544632589 -0300 -+++ midori-0.5.9/extensions/CMakeLists.txt 2015-03-30 15:57:51.777395949 -0300 -@@ -24,11 +24,7 @@ - ) - endif () - --# FIXME: re-enable webmedia extension --# once we have working notifications on win --if (WIN32) -- list(REMOVE_ITEM EXTENSIONS "webmedia-now-playing.vala") --endif() -+list(REMOVE_ITEM EXTENSIONS "webmedia-now-playing.vala") - - foreach(UNIT_SRC ${EXTENSIONS}) - string(FIND ${UNIT_SRC} ".c" UNIT_EXTENSION)
package/midori/0001-fix-bug-1492932.patch new file +44 -0
44 lines not on this page · raw message
package/midori/0002-gcr-for-x11-only.patch new file +32 -0
@@ -0,0 +1,32 @@ +GCR support only works/is useful with X11 support. + +Reported upstream: https://bugs.launchpad.net/midori/+bug/1515985 + +Signed-off-by: Gustavo Zacarias <[email protected]> + +diff -Nura midori-0.5.11.orig/CMakeLists.txt midori-0.5.11/CMakeLists.txt +--- midori-0.5.11.orig/CMakeLists.txt 2015-11-12 13:41:02.045898814 -0300 ++++ midori-0.5.11/CMakeLists.txt 2015-11-12 14:00:09.765545018 -0300 +@@ -175,18 +175,14 @@ + set(PKGS ${PKGS} zeitgeist-2.0) + endif() + +-if (WIN32) +- add_definitions("-DGCR_VERSION=\"No\"") +-else () +- if (USE_GTK3) +- pkg_check_modules(GCR REQUIRED gcr-3>=2.32) +- else () +- pkg_check_modules(GCR REQUIRED gcr-base-3>=2.32) +- endif () ++if (USE_GTK3 AND X11) ++ pkg_check_modules(GCR REQUIRED gcr-3>=2.32) + add_definitions("-DGCR_VERSION=\"${GCR_VERSION}\"") + add_definitions("-DHAVE_GCR") + set(OPTS_INCLUDE_DIRS ${OPTS_INCLUDE_DIRS} ${GCR_INCLUDE_DIRS}) + set(OPTS_LIBRARIES ${OPTS_LIBRARIES} ${GCR_LIBRARIES}) ++else () ++ add_definitions("-DGCR_VERSION=\"No\"") + endif () + + if (HALF_BRO_INCOM_WEBKIT2)
package/midori/0002-new-vala.patch deleted +0 -26
@@ -1,26 +0,0 @@ -Fix build with newer (0.28+) vala versions, from: -http://www.linuxquestions.org/questions/slackware-14/midori-compile-fail-ambiguous-reference-between-glib-and-gtk-4175542325/ - -Signed-off-by: Gustavo Zacarias <[email protected]> - -diff -Nura midori-0.5.9.orig/extensions/history-list.vala midori-0.5.9/extensions/history-list.vala ---- midori-0.5.9.orig/extensions/history-list.vala 2015-07-03 21:05:01.183360199 -0300 -+++ midori-0.5.9/extensions/history-list.vala 2015-07-03 21:05:48.959900926 -0300 -@@ -319,7 +319,7 @@ - } - - private void create_widgets () { -- ListStore model; -+ Gtk.ListStore model; - TreeIter iter; - TreeIter? active_iter = null; - -@@ -331,7 +331,7 @@ - - var tab_closing_behavior = this.hl_manager.get_integer ("TabClosingBehavior"); - -- model = new ListStore (2, typeof (string), typeof (int)); -+ model = new Gtk.ListStore (2, typeof (string), typeof (int)); - - model.append (out iter); - model.set (iter, TabClosingBehaviorModel.TEXT, _("Do nothing"),
package/midori/Config.in +12 -24
@@ -1,37 +1,25 @@ -comment "midori needs libgtk2 and a toolchain w/ C++, wchar, NPTL, gcc >= 4.8" - depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ - !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_LIBGTK2 \ - || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 +comment "midori needs libgtk3 and an (e)glibc toolchain w/ C++, gcc >= 4.9" + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_LIBGTK3 \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 config BR2_PACKAGE_MIDORI bool "midori" + # GCR can only be used with the X11 backend + select BR2_PACKAGE_GCR if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_GRANITE select BR2_PACKAGE_LIBSOUP select BR2_PACKAGE_LIBSOUP_GNOME select BR2_PACKAGE_LIBXML2 select BR2_PACKAGE_SQLITE - select BR2_PACKAGE_WEBKITGTK24 + select BR2_PACKAGE_WEBKITGTK select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE - depends on (BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_XORG7) - depends on BR2_INSTALL_LIBSTDCPP # webkitgtk24 - depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # webkitgtk24 - depends on BR2_USE_WCHAR # webkitgtk24 - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # webkitgtk24 - depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS + depends on BR2_PACKAGE_LIBGTK3_X11 || BR2_PACKAGE_LIBGTK3_WAYLAND + depends on BR2_INSTALL_LIBSTDCPP # webkitgtk + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # webkitgtk + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS help Midori is a lightweight web browser based on WebKit http://www.midori-browser.org/ - -if BR2_PACKAGE_MIDORI - -config BR2_PACKAGE_MIDORI_HTTPS - bool "HTTPS support" - select BR2_PACKAGE_CA_CERTIFICATES # runtime - select BR2_PACKAGE_GLIB_NETWORKING - select BR2_PACKAGE_GNUTLS # for glib-networking - help - Enable HTTPS protocol support - -endif
package/midori/midori.hash +1 -1
@@ -1,2 +1,2 @@ # From download link @ http://midori-browser.org/download/source/ -sha1 475614dcc89a214a3c2fdc2aaefc817a5fa0ca03 midori_0.5.9_all_.tar.bz2 +sha1 64c86935028feb5f89d799c2acacaad67764da6f midori_0.5.11_all_.tar.bz2
package/midori/midori.mk +9 -27
@@ -4,9 +4,9 @@ # ################################################################################ -MIDORI_VERSION = 0.5.9 +MIDORI_VERSION = 0.5.11 MIDORI_SOURCE = midori_$(MIDORI_VERSION)_all_.tar.bz2 -MIDORI_SITE = https://launchpad.net/midori/trunk/$(MIDORI_VERSION)/+download +MIDORI_SITE = http://midori-browser.org/downloads MIDORI_LICENSE = LGPLv2.1+ MIDORI_LICENSE_FILES = COPYING MIDORI_DEPENDENCIES = \
@@ -15,38 +15,20 @@ MIDORI_DEPENDENCIES = \ host-pkgconf \ host-vala \ host-python \ + $(if $(BR2_PACKAGE_LIBGTK3_X11),gcr) \ + granite \ + libgtk3 \ libsoup \ libxml2 \ sqlite \ - webkitgtk24 \ + webkitgtk \ $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext) \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) MIDORI_CONF_OPTS = \ + -DHALF_BRO_INCOM_WEBKIT2=ON \ + -DUSE_GRANITE=ON \ + -DUSE_GTK3=ON \ -DUSE_ZEITGEIST=OFF -# Requires uClibc backtrace support, normally not enabled -ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) -define MIDORI_REMOVE_DEVPET - rm -f $(@D)/extensions/devpet.vala -endef -MIDORI_POST_PATCH_HOOKS += MIDORI_REMOVE_DEVPET -endif - -ifeq ($(BR2_PACKAGE_MIDORI_HTTPS),y) -MIDORI_DEPENDENCIES += glib-networking -endif - -ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) -MIDORI_CONF_OPTS += -DUSE_GTK3=ON -DHALF_BRO_INCOM_WEBKIT2=ON -MIDORI_DEPENDENCIES += libgtk3 -# Only useful with gtk3 -ifeq ($(BR2_PACKAGE_GCR),y) -MIDORI_DEPENDENCIES += gcr -endif -else -MIDORI_CONF_OPTS += -DUSE_GTK3=OFF -MIDORI_DEPENDENCIES += libgtk2 -endif - $(eval $(cmake-package))
Signature · 1 line
2.7.3
PATCH 4/5 webkitgtk24: mark as deprecated
In reply to Gustavo ZacariasIt's affected by 40+ security bugs, and upstream will only care to fix the latest stable branch, which is 2.12.x
Some effort was made with the 2.4.10 release to address some security bugs but it's incomplete.
See:
https://blogs.gnome.org/mcatanzaro/2016/02/01/on-webkit-security-updates/
https://blogs.gnome.org/mcatanzaro/2016/02/19/webkitgtk-gets-security-updates/
Also:
http://webkitgtk.org/security/WSA-2016-0002.html
http://webkitgtk.org/security/WSA-2016-0001.html
http://webkitgtk.org/security/WSA-2015-0002.html
--- package/webkitgtk24/Config.in | 2 ++ 1 file changed, 2 insertions(+)
package/webkitgtk24/Config.in +2 -0
@@ -16,9 +16,11 @@ comment "webkitgtk24 needs libgtk2 and a toolchain w/ C++, wchar, NPTL, gcc >=4. !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP \ || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 depends on BR2_USE_MMU + depends on BR2_DEPRECATED_SINCE_2016_05 config BR2_PACKAGE_WEBKITGTK24 bool "webkitgtk 2.4.x" + depends on BR2_DEPRECATED_SINCE_2016_05 depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
Signature · 1 line
2.7.3
PATCH 5/5 qemu/x86_64: add midori samples for wayland and x11r7
In reply to Gustavo Zacarias--- board/qemu/x86_64/busybox-extras.config | 1 + board/qemu/x86_64/genimage-x86_64.cfg | 24 +++++++ board/qemu/x86_64/grub.cfg | 10 +++ board/qemu/x86_64/linux-extras.config | 51 +++++++++++++++ .../x86_64/midori_overlay/etc/X11/xinit/xinitrc | 3 + board/qemu/x86_64/midori_overlay/etc/fb.modes | 4 ++ .../x86_64/midori_overlay/etc/init.d/S00rootfs | 5 ++ .../qemu/x86_64/midori_overlay/etc/init.d/S98audio | 6 ++ board/qemu/x86_64/midori_overlay/etc/init.d/S99gui | 21 ++++++ board/qemu/x86_64/midori_overlay/etc/weston.ini | 43 ++++++++++++ .../x86_64/midori_overlay/usr/share/fluxbox/init | 7 ++ .../x86_64/midori_overlay/usr/share/fluxbox/menu | 29 +++++++++ board/qemu/x86_64/post-image.sh | 20 ++++++ board/qemu/x86_64/post-process.sh | 8 +++ configs/midori_wayland_x86_64_defconfig | 63 ++++++++++++++++++ configs/midori_x11_x86_64_defconfig | 76 ++++++++++++++++++++++ 16 files changed, 371 insertions(+) create mode 100644 board/qemu/x86_64/busybox-extras.config create mode 100644 board/qemu/x86_64/genimage-x86_64.cfg create mode 100644 board/qemu/x86_64/grub.cfg create mode 100644 board/qemu/x86_64/linux-extras.config create mode 100644 board/qemu/x86_64/midori_overlay/etc/X11/xinit/xinitrc create mode 100644 board/qemu/x86_64/midori_overlay/etc/fb.modes create mode 100755 board/qemu/x86_64/midori_overlay/etc/init.d/S00rootfs create mode 100755 board/qemu/x86_64/midori_overlay/etc/init.d/S98audio create mode 100755 board/qemu/x86_64/midori_overlay/etc/init.d/S99gui create mode 100644 board/qemu/x86_64/midori_overlay/etc/weston.ini create mode 100644 board/qemu/x86_64/midori_overlay/usr/share/fluxbox/init create mode 100644 board/qemu/x86_64/midori_overlay/usr/share/fluxbox/menu create mode 100755 board/qemu/x86_64/post-image.sh create mode 100755 board/qemu/x86_64/post-process.sh create mode 100644 configs/midori_wayland_x86_64_defconfig create mode 100644 configs/midori_x11_x86_64_defconfig
board/qemu/x86_64/busybox-extras.config new file +1 -0
@@ -0,0 +1 @@ +CONFIG_RDEV=y
board/qemu/x86_64/genimage-x86_64.cfg new file +24 -0
@@ -0,0 +1,24 @@ +image disk.img { + + hdimage { + } + + partition boot { + in-partition-table = "no" + image = "boot.img" + offset = 0 + size = 512 + } + + partition grub { + in-partition-table = "no" + image = "grub.img" + offset = 512 + } + + partition root { + partition-type = 0x83 + image = "rootfs.squashfs" + } + +}
board/qemu/x86_64/grub.cfg new file +10 -0
@@ -0,0 +1,10 @@ +set default="0" +set timeout="5" + +menuentry "Private mode" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} + +menuentry "Permanent mode" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 grow_root +}
board/qemu/x86_64/linux-extras.config new file +51 -0
51 lines not on this page · raw message
board/qemu/x86_64/midori_overlay/etc/X11/xinit/xinitrc new file +3 -0
@@ -0,0 +1,3 @@ +#!/bin/sh + +fluxbox
board/qemu/x86_64/midori_overlay/etc/fb.modes new file +4 -0
@@ -0,0 +1,4 @@ +mode "1024x768-60" + geometry 1024 768 1024 768 24 + timings 15385 160 24 29 3 136 6 +endmode
board/qemu/x86_64/midori_overlay/etc/init.d/S00rootfs new file +5 -0
@@ -0,0 +1,5 @@ +#!/bin/sh +if [ "$1" = "start" ]; then +# Mount a volatile root user home directory + mount -t tmpfs root_home /root +fi
board/qemu/x86_64/midori_overlay/etc/init.d/S98audio new file +6 -0
@@ -0,0 +1,6 @@ +#!/bin/sh +if [ "$1" = "start" ]; then + if [ -x /usr/bin/amixer ]; then + amixer set Master 100 unmute >/dev/null 2>&1 + fi +fi
board/qemu/x86_64/midori_overlay/etc/init.d/S99gui new file +21 -0
@@ -0,0 +1,21 @@ +#!/bin/sh +if [ "$1" = "start" ]; then + + # XDG setup + export HOME=/root + export UID=`id -u` + export XDG_RUNTIME_DIR=/run/user/${UID} + mkdir -p /run/user/${UID} + chmod 700 /run/user/${UID} + + # X11 + if [ -x /usr/bin/startx ]; then + startx + fi + + # Wayland/Weston + if [ -x /usr/bin/weston ]; then + openvt -c 2 -s -- weston --backend=fbdev-backend.so --config=/etc/weston.ini --tty=2 --log=/var/log/weston.log + fi + +fi
board/qemu/x86_64/midori_overlay/etc/weston.ini new file +43 -0
43 lines not on this page · raw message
board/qemu/x86_64/midori_overlay/usr/share/fluxbox/init new file +7 -0
@@ -0,0 +1,7 @@ +! If you're looking for settings to configure, they won't be saved here until +! you change something in the fluxbox configuration menu. + +session.menuFile: ~/.fluxbox/menu +session.keyFile: ~/.fluxbox/keys +session.styleFile: /usr/share/fluxbox/styles/zimek_green +session.configVersion: 13
board/qemu/x86_64/midori_overlay/usr/share/fluxbox/menu new file +29 -0
@@ -0,0 +1,29 @@ +[begin] (Fluxbox-1.3.7) +[encoding] {UTF-8} + [exec] (connman-gtk) {connman-gtk} + [exec] (midori) {midori} + [exec] (MiniBrowser) {MiniBrowser} + [exec] (wireshark) {wireshark-gtk} + [exec] (xterm) {xterm} + [separator] + [exec] (Reboot) {/sbin/reboot} + [exec] (Power off) {/sbin/poweroff} + [separator] +[submenu] (Fluxbox menu) + [config] (Configure) +[submenu] (System Styles) {Choose a style...} + [stylesdir] (/usr/share/fluxbox/styles) +[end] +[submenu] (User Styles) {Choose a style...} + [stylesdir] (~/.fluxbox/styles) +[end] + [workspaces] (Workspace List) + [commanddialog] (Fluxbox Command) + [reconfig] (Reload config) + [restart] (Restart) + [exec] (About) {(fluxbox -v; fluxbox -info | sed 1d) | xmessage -file - -center} + [separator] + [exit] (Exit) +[end] +[endencoding] +[end]
board/qemu/x86_64/post-image.sh new file +20 -0
@@ -0,0 +1,20 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +BOARD_NAME="$(basename ${BOARD_DIR})" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +# Copy grub 1st stage to output/images +cp -f ${HOST_DIR}/usr/lib/grub/i386-pc/boot.img ${BINARIES_DIR} + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $?
board/qemu/x86_64/post-process.sh new file +8 -0
@@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +BOARD_NAME="$(basename ${BOARD_DIR})" + +# Copy grub config to target +cp -f ${BOARD_DIR}/grub.cfg ${TARGET_DIR}/boot/grub +
configs/midori_wayland_x86_64_defconfig new file +63 -0
63 lines not on this page · raw message
configs/midori_x11_x86_64_defconfig new file +76 -0
76 lines not on this page · raw message
Signature · 1 line
2.7.3
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 5/5 qemu/x86_64: add midori samples for wayland and x11r7
Quoted 3 lines · Arnout Vandecappelle
A demo defconfig! Great!
I have nothing major to comment on, just a few points.
Hi.
Let's see, it was mostly a proof-of-concept (POC) / RFC so adjustments are definitely welcome/needed.
Quoted 10 lines
I think it would be better to start the name with the base defconfig,
soqemu_x86_64_midori_wayland_defconfig.Oh, wait, is it actually a qemu defconfig? I guess not because it
creates a full disk image...Maybe it would be better then to first add a separate
x86_64_defconfig
that creates a simple disk image forx86_64, and in a second patch add thex86_64_midori_x11and_waylanddefconfigs. That would also make the patches much easier to review.
Yes, i already have a pc_bios_x86_64_defconfig, it just happens that this config can be used via qemu or real hardware.
The idea is indeed to have a base "pc" config to have the kernel config fragment with all the drivers, though it might be a little overkill for qemu since many will go unused just adding up size.
Quoted 1 line
Oh, and you're also missing a readme.
Oh yes.
Quoted 1 line
Maybe add a comment why this is needed.
I'm using this for the volatile/permanent storage logic, will expand on this below...
Quoted 2 lines
The meaning of this "Private" and "Permanent" is a bit vague.
Actually, what does thegrow_rootmean?
s/Private/Volatile/
Or "just run don't store anything".
Quoted 2 lines
Why squashfs? Ext4 would be the more logical choice IMHO, you can make
it writable as well.
The image is quite smaller than ext4, and also with ext4 and genimage you must know your target size or set it to some arbitrary number. Previously i used +128 MB free space for the image size on ext4, resulting on a squashfs4 wayland a target image of roughly 100 MB, whereas for ext4 it was more around 450 MB.
The extra free space is needed for the browser to store temporary files, the worst offender being watching some html5 video that potentially needs the full size on disk at one given time (it will go away once you close it).
I decided that setting +128 MB wasn't nearly good enough - it would waste available space if the media is bigger (likely), or some people just don't want to store it altogether, or some $video wouldn't fit, so going to a "keep binaries RO and small" solution seemed better, with a boot option to select the mode. On volatile just throw a tmpfs for /root, if it's permanent (unimplemented yet, but not difficult) add an extra partition with an ext4 filesystem to store it. That's where rdev is needed, to find out the root filesystem device.
That's also the reason e2fsprogs & parted are in there.
Quoted 2 lines
Wouldn't it be better to enable everything that works on x86 as
modules? This is a bit a random selection...
Yes, indeed.
Quoted 1 line
Same here.
Ditto, it's not complete and we wouldn't want to complete with builtins.
Quoted 1 line
If / is rw, this isn't needed.
Dual-strategy scenario above, without the permanent implemented yet.
Quoted 1 line
Can't wayland autodetect the backend like X?
It has a default, but no, it doesn't autodetect.
There are only two of interest here though: drm or fbdev, with fbdev being the most foolproof of all.
We might throw this in a config file in /etc though.
Quoted 1 line
Is it useful to have all these commented out lines?
They were there for testing/debugging, they can go.
Quoted 1 line
post-build.shwould be a better name.
Yes, sure.
Quoted 1 line
Couldn't it just be part of the overlay?
Probably, i didn't clean-up everything, it wasn't intended to be a final config, just to get the ball rolling to discuss.
Quoted 1 line
Why mtools?
Leftover from testing with syslinux, no longer necessary.
A couple of extra comments from myself ("i'm not crazy!") ;-)
* We can add squashfs support directly to the grub2 default, size growth is minimal and we're talking about x86/x86_64 which normally aren't that strained in resources. Hence drop it in the defconfig.
* Fluxbox creates the menu config dynamically based on host installed/detected tools, it might be interesting changing this since you may miss a lot of entries, or have too many missing ones. Even having a simple base menu config and disabling the automatic one might be desirable, while adding a comment to fluxbox's Config.in
Regards.
PATCH 5/5 qemu/x86_64: add midori samples for wayland and x11r7
Quoted 2 lines · Gustavo Zacarias
On 27/03/16 08:55, Arnout Vandecappelle wrote:
[snip]
Quoted 7 lines
Quoted 4 lines
Maybe it would be better then to first add a separate
x86_64_defconfig
that creates a simple disk image forx86_64, and in a second patch add thex86_64_midori_x11and_waylanddefconfigs. That would also make the patches much easier to review.Yes, i already have a
pc_bios_x86_64_defconfig, it just happens that this config can be used via qemu or real hardware.
Well, if you post that defconfig, it should be possible to apply quickly, no?
Nothing controversial there I expect.
Quoted 3 lines
The idea is indeed to have a base "pc" config to have the kernel config fragment with all the drivers, though it might be a little overkill for qemu since many will go unused just adding up size.
You mean that the pc_bios_x86_64_defconfig would useboard/qemu/x86_64/linux-4.5.config + kconfig fragment to enable all kinds of network and display devices as modules, no?
Quoted 15 lines
Quoted 1 line
Oh, and you're also missing a readme.
Oh yes.
Quoted 1 line
Maybe add a comment why this is needed.
I'm using this for the volatile/permanent storage logic, will expand on this below...
Quoted 2 lines
The meaning of this "Private" and "Permanent" is a bit vague.
Actually, what does thegrow_rootmean?s/Private/Volatile/
Or "just run don't store anything".
Quoted 8 lines
Quoted 2 lines
Why squashfs? Ext4 would be the more logical choice IMHO, you can make
it writable as well.The image is quite smaller than ext4, and also with ext4 and genimage you must know your target size or set it to some arbitrary number. Previously i used +128 MB free space for the image size on ext4, resulting on a squashfs4 wayland a target image of roughly 100 MB, whereas for ext4 it was more around 450 MB.
OK.
Quoted 11 lines
The extra free space is needed for the browser to store temporary files, the worst offender being watching some html5 video that potentially needs the full size on disk at one given time (it will go away once you close it). I decided that setting +128 MB wasn't nearly good enough - it would waste available space if the media is bigger (likely), or some people just don't want to store it altogether, or some $video wouldn't fit, so going to a "keep binaries RO and small" solution seemed better, with a boot option to select the mode. On volatile just throw a tmpfs for /root, if it's permanent (unimplemented yet, but not difficult) add an extra partition with an ext4 filesystem to store it. That's where rdev is needed, to find out the root filesystem device. That's also the reason e2fsprogs & parted are in there.
Since it's not implemented yet, I'd propose to post something now already that
just has the Volatile option (it can already be called that).
Quoted 12 lines
Quoted 3 lines
Wouldn't it be better to enable everything that works on x86 as
modules? This is a bit a random selection...Yes, indeed.
Quoted 1 line
Same here.
Ditto, it's not complete and we wouldn't want to complete with builtins.
Quoted 1 line
If / is rw, this isn't needed.
Quoted 8 lines
Dual-strategy scenario above, without the permanent implemented yet.
Quoted 1 line
Can't wayland autodetect the backend like X?
It has a default, but no, it doesn't autodetect.
There are only two of interest here though: drm or fbdev, with fbdev being the most foolproof of all.
We might throw this in a config file in /etc though.
If / isn't writeable there isn't much point. You anyway have to adapt the
config to change that defaults file, so in that case you can just as well change S99gui directly.
Quoted 5 lines
Quoted 2 lines
Is it useful to have all these commented out lines?
They were there for testing/debugging, they can go.
Quoted 8 lines
Quoted 1 line
post-build.shwould be a better name.Yes, sure.
Quoted 1 line
Couldn't it just be part of the overlay?
Probably, i didn't clean-up everything, it wasn't intended to be a final config, just to get the ball rolling to discuss.
We're discussing all right :-)
Quoted 10 lines
Quoted 2 lines
Why mtools?
Leftover from testing with syslinux, no longer necessary.
A couple of extra comments from myself ("i'm not crazy!") ;-)
* We can add squashfs support directly to the grub2 default, size growth is minimal and we're talking about x86/x86_64 which normally aren't that strained in resources. Hence drop it in the defconfig.
OK for me, but not essential I think; it's not a problem that the grub config
is non-default.
Quoted 5 lines
* Fluxbox creates the menu config dynamically based on host installed/detected tools, it might be interesting changing this since you may miss a lot of entries, or have too many missing ones.
Even having a simple base menu config and disabling the automatic one might be desirable, while adding a comment to fluxbox's Config.in
This is completely independent of this defconfig, right? You are basically
saying that the fluxbox.mk is wrong because it leaks host info into the target?
Regards,
Arnout
Quoted 3 lines
Regards.
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF