Skip to contentSkip to conversation

The big webkitgtk bump

PATCH Superseded Gustavo Zacarias 2 participants 15 messages Apr 19, 2015

v3 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

v3 cover The big webkitgtk bump

Second take at the webkit/midori bump...

There's support for libgtk2 & libgtk3, though libgtk2 is always needed for the plugin system.

GL* support was only tested via mesa software renderer.

Wayland support wasn't enabled because it still needs gtk2 (plugins) - this could possibly be patched away.

Multimedia support is automatic via detection of gst1-plugins-base, ideally this should be an option but right now opencv+gst generate a dependency loop if gstreamer1 is selected. Also codecs will need to be catered by the user via the appropiate gst selects.

MIPS support was disabled pending libatomic support for __sync_fetch_and_add_8 which is handled there for some 32-bit architectures.
Update for v2: MIPS(eb) SIGBUSes, so disabled in general, kept the libatomic tweak for reference. MIPSel untested.

Possible TODOs:
Wayland in a proper way, granite support, gcr support, more arch testing/support.

v3:
* Work around make 3.81 looping bug for webkitgtk24. [Gustavo]

* Fold libatomic patches.
webkitgtk24 requires libatomic for i386 support. While a better solution is desirable for other packages such as strongswan on microblazeel there's no final solution yet, and it most likely will require copying them anyway. [Gustavo]

* Add host variants of: harfbuzz, cairo, pango, librsvg. host-librsvg is required by midori for rsvg-convert. The rest are just dependencies of host-librsvg. [Gustavo]

v2:
* Needs NPTL [Gustavo]
It uses pthread_getattr_np()

* Handle libatomic [Gustavo]
Needed for i386, mips & mipsel at least.

* Deprecate libgail, no longer used by any package [Gustavo]

v1:

* Bump webkitgtk to version 2.4.x in a versioned package. This is because midori can't use 2.6.x or 2.8.x and this way we can have another webkitgtk package in parallel for other uses. The series is still security-supported upstream.

* Bump midori to version 0.5.9.
No effort was made to enable support for the old webkit 1.x. series, it may be possible to do so but it makes no sense.

* Deprecate old webkit package.
Security bugs, build issues, general instability.

Gustavo Zacarias (11):
gcc-final: install libatomic
toolchain-external: install libatomic
harfbuzz: add host variant
cairo: add host variant
pango: add host variant
librsvg: add host variant
librsvg: add hash file
webkitgtk24: new package
midori: bump to version 0.5.9
webkit: mark as deprecated
libgail: mark as deprecated

 package/Config.in                                  |   1 +
 package/cairo/cairo.mk                             |  28 ++++++
 package/gcc/gcc-final/gcc-final.mk                 |   9 ++
 package/harfbuzz/harfbuzz.mk                       |  15 +++
 package/libgail/Config.in                          |   2 +
 package/librsvg/librsvg.hash                       |   2 +
 package/librsvg/librsvg.mk                         |   2 +
 package/midori/0001-disable-libnotify.patch        |  43 +++++++++
 package/midori/Config.in                           |  39 +++++---
 package/midori/midori.hash                         |   2 +
 package/midori/midori.mk                           |  58 +++++------
 package/pango/pango.mk                             |   9 ++
 package/webkit/Config.in                           |   3 +
 package/webkitgtk24/0001-fix-bug-137640.patch      |  17 ++++
 package/webkitgtk24/Config.in                      |  56 +++++++++++
 package/webkitgtk24/webkitgtk24.hash               |   2 +
 package/webkitgtk24/webkitgtk24.mk                 | 107 +++++++++++++++++++++
 toolchain/toolchain-external/toolchain-external.mk |   2 +-
 18 files changed, 357 insertions(+), 40 deletions(-)
 create mode 100644 package/librsvg/librsvg.hash
 create mode 100644 package/midori/0001-disable-libnotify.patch
 create mode 100644 package/midori/midori.hash
 create mode 100644 package/webkitgtk24/0001-fix-bug-137640.patch
 create mode 100644 package/webkitgtk24/Config.in
 create mode 100644 package/webkitgtk24/webkitgtk24.hash
 create mode 100644 package/webkitgtk24/webkitgtk24.mk
Signature · 1 line
2.0.5
#1 lore raw

PATCH v3 1/11 gcc-final: install libatomic

It's required in some 32-bit architectures for the extended (64-bit) atomic operations, like __sync_add_and_fetch_8.
These arches are at least: i386, mips & mipsel.

Target size growth is ~15 KiB for ARM.

---
 package/gcc/gcc-final/gcc-final.mk | 9 +++++++++
 1 file changed, 9 insertions(+)
package/gcc/gcc-final/gcc-final.mk +9 -0
index d76eb31..8fda883 100644
@@ -118,6 +118,15 @@ endef
 
 HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBGCC
 
+define HOST_GCC_FINAL_INSTALL_LIBATOMIC
+	-cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/libatomic* \
+		$(STAGING_DIR)/lib/
+	-cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/libatomic* \
+		$(TARGET_DIR)/lib/
+endef
+
+HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBATOMIC
+
 # Handle the installation of libraries in /usr/lib
 HOST_GCC_FINAL_USR_LIBS =
 
Signature · 1 line
2.0.5
#2 lore raw

PATCH v3 2/11 toolchain-external: install libatomic

In reply to Gustavo Zacarias

It's required in some 32-bit architectures for the extended (64-bit) atomic operations, like __sync_add_and_fetch_8.
These arches are at least: i386, mips & mipsel.

---
 toolchain/toolchain-external/toolchain-external.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
toolchain/toolchain-external/toolchain-external.mk +1 -1
index c0429bb..2427463 100644
@@ -64,7 +64,7 @@
 #  of Buildroot is handled identical for the 2 toolchain types.
 
 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
-LIB_EXTERNAL_LIBS += libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
+LIB_EXTERNAL_LIBS += libatomic.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_ARM_EABIHF),yy)
 LIB_EXTERNAL_LIBS += ld-linux-armhf.so.*
 else
Signature · 1 line
2.0.5
#3 lore raw

PATCH v3 3/11 harfbuzz: add host variant

In reply to Gustavo Zacarias

Required for host-pango, which in turn is required for host-librsvg and at last midori.

---
 package/harfbuzz/harfbuzz.mk | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
package/harfbuzz/harfbuzz.mk +15 -0
index 0a69b09..9cfd613 100644
@@ -11,6 +11,20 @@ HARFBUZZ_LICENSE = MIT, ISC (ucdn library)
 HARFBUZZ_LICENSE_FILES = COPYING src/hb-ucdn/COPYING
 HARFBUZZ_INSTALL_STAGING = YES
 HARFBUZZ_CONF_OPTS = --without-coretext --without-uniscribe --without-graphite2
+
+# freetype & glib2 support required by host-pango
+HOST_HARFBUZZ_DEPENDENCIES = \
+	host-freetype \
+	host-libglib2
+HOST_HARFBUZZ_CONF_OPTS = \
+	--without-corext \
+	--without-uniscribe \
+	--without-graphite2 \
+	--with-cairo=no \
+	--with-icu=no \
+	--with-freetype=yes \
+	--with-glib=yes
+
 # beta libtool version
 HARFBUZZ_AUTORECONF = YES
 
@@ -48,3 +62,4 @@ HARFBUZZ_CONF_OPTS += --with-icu=no
 endif
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
2.0.5
#4 lore raw

PATCH v3 4/11 cairo: add host variant

In reply to Gustavo Zacarias

Required for host-pango, which in turn is required for host-librsvg and at last midori.

---
 package/cairo/cairo.mk | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
package/cairo/cairo.mk +28 -0
index 2c55338..098f249 100644
@@ -74,6 +74,33 @@ CAIRO_CONF_OPTS = \
 
 CAIRO_DEPENDENCIES = host-pkgconf fontconfig pixman
 
+# Just the bare minimum to make other host-* packages happy
+HOST_CAIRO_CONF_OPTS = \
+	--enable-trace=no \
+	--enable-interpreter=no \
+	--disable-directfb \
+	--enable-ft \
+	--disable-gobject \
+	--disable-glesv2 \
+	--disable-vg \
+	--disable-xlib \
+	--disable-xcb \
+	--without-x \
+	--disable-xlib-xrender \
+	--disable-ps \
+	--disable-pdf \
+	--enable-png \
+	--disable-script \
+	--disable-svg \
+	--disable-tee \
+	--disable-xml
+HOST_CAIRO_DEPENDENCIES = \
+	host-freetype \
+	host-fontconfig \
+	host-libpng \
+	host-pixman \
+	host-pkgconf
+
 # DirectFB svg support rely on Cairo and Cairo DirectFB support depends on
 # DirectFB. Break circular dependency by disabling DirectFB support in Cairo
 # (which is experimental)
@@ -172,3 +199,4 @@ CAIRO_CONF_OPTS += --disable-xml
 endif
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
2.0.5
#5 lore raw

PATCH v3 5/11 pango: add host variant

In reply to Gustavo Zacarias

Required by librsvg which in turn is required by midori.

---
 package/pango/pango.mk | 9 +++++++++
 1 file changed, 9 insertions(+)
package/pango/pango.mk +9 -0
index e37e75f..75e2d1b 100644
@@ -67,6 +67,7 @@ PANGO_CONF_ENV = \
 	ac_cv_path_FREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config
 
 PANGO_CONF_OPTS = --enable-explicit-deps=no
+HOST_PANGO_CONF_OPTS = --enable-explicit-deps=no
 
 PANGO_DEPENDENCIES = \
 	$(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext) \
@@ -76,6 +77,13 @@ PANGO_DEPENDENCIES = \
 	harfbuzz \
 	fontconfig \
 	freetype
+HOST_PANGO_DEPENDENCIES = \
+	host-pkgconf \
+	host-libglib2 \
+	host-cairo \
+	host-harfbuzz \
+	host-fontconfig \
+	host-freetype
 
 ifeq ($(BR2_PACKAGE_XORG7),y)
 PANGO_CONF_OPTS += \
@@ -95,3 +103,4 @@ define PANGO_INSTALL_INIT_SYSV
 endef
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
2.0.5
#6 lore raw

PATCH v3 6/11 librsvg: add host variant

In reply to Gustavo Zacarias

Required by the midori build process (rsvg-convert).

---
 package/librsvg/librsvg.mk | 2 ++
 1 file changed, 2 insertions(+)
package/librsvg/librsvg.mk +2 -0
index 674dca4..5c385dc 100644
@@ -10,6 +10,7 @@ LIBRSVG_SITE = http://ftp.gnome.org/pub/GNOME/sources/librsvg/$(LIBRSVG_VERSION_
 LIBRSVG_INSTALL_STAGING = YES
 LIBRSVG_CONF_OPTS = --disable-tools
 LIBRSVG_DEPENDENCIES = libxml2 cairo pango libglib2 gdk-pixbuf
+HOST_LIBRSVG_DEPENDENCIES = host-libxml2 host-cairo host-pango host-libglib2 host-gdk-pixbuf
 LIBRSVG_LICENSE = LGPLv2+
 LIBRSVG_LICENSE_FILES = COPYING.LIB
 
@@ -20,3 +21,4 @@ LIBRSVG_DEPENDENCIES += libgtk2
 endif
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
2.0.5
#7 lore raw

PATCH v3 7/11 librsvg: add hash file

In reply to Gustavo Zacarias
---
 package/librsvg/librsvg.hash | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 package/librsvg/librsvg.hash
package/librsvg/librsvg.hash new file +2 -0
new file mode 100644
index 0000000..7572d6c
@@ -0,0 +1,2 @@
+# From http://ftp.gnome.org/pub/gnome/sources/librsvg/2.26/librsvg-2.26.3.sha256sum
+sha256	3761e3d446a9c2f4ebe52431289e15976f1d447f64ed33bb7f35cb1c430eac49	librsvg-2.26.3.tar.gz
Signature · 1 line
2.0.5
#8 lore raw

PATCH v3 8/11 webkitgtk24: new package

In reply to Gustavo Zacarias

Add new webkitgtk24 package.

The difference with the legacy webkit package is that this one uses the new webkit2 API, and optionally the webkit1 API.

It's versioned because the latest release of midori can't use the newer 2.6.x or 2.8.x webkitgtk versions yet.

This paves the way for a newer webkitgtk26 or webkitgtk28 package that can live side-by-side with this one for other uses.

Some loose checks (like !xorg7) are in place for possible/future wayland support.
Right now wayland requires gtk2, hence xorg, but it might be possible to patch that out with some work (it seems to be done for version 2.6.x, though the build system changed to cmake so it might not be a straighfoward patch).

Choices had to be made in the GL-area, right now the preference order is libGL (full OpenGL), then GLES, then nothing (obviously). And when gtk3 is around it's also preferred as well.

---
 package/Config.in                             |   1 +
 package/webkitgtk24/0001-fix-bug-137640.patch |  17 ++++
 package/webkitgtk24/Config.in                 |  56 ++++++++++++++
 package/webkitgtk24/webkitgtk24.hash          |   2 +
 package/webkitgtk24/webkitgtk24.mk            | 107 ++++++++++++++++++++++++++
 5 files changed, 183 insertions(+)
 create mode 100644 package/webkitgtk24/0001-fix-bug-137640.patch
 create mode 100644 package/webkitgtk24/Config.in
 create mode 100644 package/webkitgtk24/webkitgtk24.hash
 create mode 100644 package/webkitgtk24/webkitgtk24.mk
package/Config.in +1 -0
index ee51593..0acd35b 100644
@@ -772,6 +772,7 @@ menu "Graphics"
 	source "package/tiff/Config.in"
 	source "package/wayland/Config.in"
 	source "package/webkit/Config.in"
+	source "package/webkitgtk24/Config.in"
 	source "package/webp/Config.in"
 	source "package/zxing/Config.in"
 endmenu
package/webkitgtk24/0001-fix-bug-137640.patch new file +17 -0
new file mode 100644
index 0000000..2d5b94f
@@ -0,0 +1,17 @@
+Fix for bug #137640 - build breaks without accelerated compositing.
+See: https://bugs.webkit.org/show_bug.cgi?id=137640
+
+Singed-off-by: Gustavo Zacarias <[email protected]>
+
+diff -urN webkitgtk-2.4.6.orig/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp webkitgtk-2.4.6/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp
+--- webkitgtk-2.4.6.orig/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp	2014-09-26 11:40:45.000000000 +0400
++++ webkitgtk-2.4.6/Source/WebKit2/WebProcess/soup/WebProcessSoup.cpp	2014-10-11 20:43:16.687116807 +0400
+@@ -110,7 +110,7 @@
+     WebCore::memoryCache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
+     WebCore::pageCache()->setCapacity(pageCacheCapacity);
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(ACCELERATED_COMPOSITING)
+     WebCore::pageCache()->setShouldClearBackingStores(true);
+ #endif
+ 
package/webkitgtk24/Config.in new file +56 -0

56 lines not on this page · raw message

package/webkitgtk24/webkitgtk24.hash new file +2 -0
new file mode 100644
index 0000000..90e925f
@@ -0,0 +1,2 @@
+# From http://www.webkitgtk.org/releases/webkitgtk-2.4.8.tar.xz.sha1
+sha1	44c6bbe52108297126830525619c1df047886a6f	webkitgtk-2.4.8.tar.xz
package/webkitgtk24/webkitgtk24.mk new file +107 -0

107 lines not on this page · raw message

Signature · 1 line
2.0.5
#9 lore raw

PATCH v3 8/11 webkitgtk24: new package

Dear Gustavo Zacarias,

Quoted 10 lines · Gustavo Zacarias

Add new webkitgtk24 package.

The difference with the legacy webkit package is that this one uses the new webkit2 API, and optionally the webkit1 API.

It's versioned because the latest release of midori can't use the newer 2.6.x or 2.8.x webkitgtk versions yet.

This paves the way for a newer webkitgtk26 or webkitgtk28 package that can live side-by-side with this one for other uses.

I'm a bit unhappy with webkitgtk24 as the name. Are the newer versions API incompatible? Also, is it possible to install both webkitgtk24 and webkitgtk26 or 28 on the same system?

Quoted 10 lines
package/webkitgtk24/Config.in new file +4 -0
new file mode 100644
index 0000000..2057546
@@ -0,0 +1,56 @@
+config BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
+	bool
+	# ARM needs BLX, so v5t+
+	default y if (BR2_arm || BR2_armeb) && !BR2_ARM_CPU_ARMV4

package/webkitgtk24/Config.in line 14

Quoted 10 lines
package/webkitgtk24/Config.in new file +10 -0
+	# i386 / x86_64 external toolchains have issues
+	# https://bugs.webkit.org/show_bug.cgi?id=132231
+	# https://stackoverflow.com/questions/9140019/yield-is-not-a-member-of-stdthis-thread
+	default y if BR2_i386 || BR2_x86_64
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203
+	depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109
+	# Disabled on powerpc due to bug https://bugs.webkit.org/show_bug.cgi?id=113638
+	# Disabled on mips due to sigbus
+	depends on BR2_USE_MMU # libglib2

Wow, so all in all, it's only available on ARM and x86/x86-64. Not a huge list of supported architectures. But OK.

Quoted 4 lines
package/webkitgtk24/Config.in new file +4 -0
+
+comment "webkitgtk24 needs libgtk2 and a toolchain w/ C++, wchar, NPTL"
+	depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
+	depends on BR2_ARCH_HAS_ATOMICS

package/webkitgtk24/Config.in line 28

Quoted 10 lines
package/webkitgtk24/Config.in new file +10 -0
+	depends on !BR2_PACKAGE_LIBGTK2 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
+		|| !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR
+	depends on BR2_USE_MMU
+
+config BR2_PACKAGE_WEBKITGTK24
+	bool "webkitgtk 2.4.x"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_WCHAR
+	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on (BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_XORG7)

Here you require gtk2 + xorg7, but not in the comment above. Is this expected?

Quoted 11 lines
package/webkitgtk24/Config.in new file +11 -0
+	depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
+	depends on BR2_ARCH_HAS_ATOMICS
+	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_LIBCURL
+	select BR2_PACKAGE_LIBSECRET
+	select BR2_PACKAGE_LIBSOUP

package/webkitgtk24/Config.in line 49

Quoted 10 lines
package/webkitgtk24/Config.in new file +10 -0
+	select BR2_PACKAGE_LIBXML2
+	select BR2_PACKAGE_LIBXSLT
+	select BR2_PACKAGE_SQLITE
+	select BR2_PACKAGE_WEBP
+	select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7
+	# MESA3D because it wants xcomposite/xdamage if GL/glx.h is found
+	# even if the GL* backends are disabled
+	select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_HAS_LIBGL || \
+		(BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL) || \
+		BR2_PACKAGE_MESA3D

The libgles + libegl case looks a bit weird. Such a configuration is normally used *without* X.org, so why would we select some X.org libraries in this case?

package/webkitgtk24/Config.in line 53

Quoted 4 lines
package/webkitgtk24/Config.in new file +4 -0
+# make 3.81 loops into oblivion with numjobs > 1
+ifeq ($(findstring x3.81,x$(MAKE_VERSION)),)
+WEBKITGTK24_MAKE = $(MAKE1)
+endif

Aah, that's how you solved the infinite loop.

package/webkitgtk24/Config.in line 56

Quoted 3 lines
package/webkitgtk24/Config.in new file +3 -0
+# Give explicit path to icu-config and prevent ar to make thin archives.
+WEBKITGTK24_CONF_ENV = ac_cv_path_icu_config=$(STAGING_DIR)/usr/bin/icu-config \
+	AR_FLAGS="cru"

"prevent ar from making thin archives" ?

And why? :-)

package/webkitgtk24/Config.in

Quoted 7 lines
package/webkitgtk24/Config.in new file +7 -0
+# Some 32-bit architectures need libatomic support for 64-bit ops
+ifeq ($(BR2_i386)$(BR2_mips)$(BR2_mipsel),y)
+WEBKITGTK24_CONF_ENV += LIBS="-latomic"
+endif
+
+WEBKITGTK24_CONF_OPTS = \
+	--enable-dependency-tracking \

Why? Yes it is in the older webkit, but do we have a reason to have it here?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#10 lore raw

PATCH v3 8/11 webkitgtk24: new package

Quoted 3 lines · Thomas Petazzoni

I'm a bit unhappy with webkitgtk24 as the name. Are the newer versions API incompatible? Also, is it possible to install both webkitgtk24 and webkitgtk26 or 28 on the same system?

Hi.
I'm not happy with the naming either, it's crappy to type/autocomplete. But yes, multiple versions can live side-by-side and the API isn't exactly the same.
In fact i have quite a setup with a webkitgtk26 package (in process of going 28) but didn't send it yet because there are no applications in buildroot that use it.
Midori can't use 2.6.x or 2.8.x, that's probably expected for a future release (0.6.x+).
Versions 2.6.x/2.8.x can be used with epiphany (AKA web), but that would require adding many new gnome3 packages and i'm not that fond of it (and much less having time for it).

Quoted 2 lines

Wow, so all in all, it's only available on ARM and x86/x86-64. Not a huge list of supported architectures. But OK.

This is just what i managed to get building and running.
A couple of mips combinations failed to build, one built but segfaulted and i didn't test extensively because of build times.
The mips failures might be qemu's fault to be honest, at least those that didn't run properly.
Powerpc needs some build patches, and i lack any ppc with framebuffer to test (plus they're not a normal setup either).
I didn't try "fringe" or resource-constrained architectures. And it's subject to available hardware to test as well, qemu is usable but painfully slow :)
So right now it's "documentation" - these are known to work but doesn't mean others won't.
I was hoping all of the people claiming for "i want new webkit!!!!1!!1" would do some testing and feedback, but they're awfully silent on the matter.

Quoted 8 lines
Quoted 8 lines
package/webkitgtk24/Config.in new file +8 -0
+comment "webkitgtk24 needs libgtk2 and a toolchain w/ C++, wchar, NPTL"
+	depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
+	depends on BR2_ARCH_HAS_ATOMICS
+	depends on !BR2_PACKAGE_LIBGTK2 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
+		|| !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR
+	depends on BR2_USE_MMU
+
+config BR2_PACKAGE_WEBKITGTK24
Quoted 8 lines

package/webkitgtk24/Config.in line 28

Quoted 5 lines
package/webkitgtk24/Config.in new file +5 -0
+	bool "webkitgtk 2.4.x"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_WCHAR
+	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on (BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_XORG7)

Here you require gtk2 + xorg7, but not in the comment above. Is this expected?

No, it's a leftover from wayland experimentation, it needs a fix.

Quoted 3 lines

The libgles + libegl case looks a bit weird. Such a configuration is normally used *without* X.org, so why would we select some X.org libraries in this case?

Right now webkit 2.4.x can't build without gtk2+ and that's the reason for it, we need xorg7 no matter what.
That's also the reason i dropped my attempts at wayland support, having xorg7 there negates many of the benefits of such a setup.
It might be possible to patch the xorg/gtk2 needs away, it's already done for 2.6.x+ actually, but i don't know how much i want to patch/diverge from upstream, even though they'd probably be a few small patches.
Most of what i'd like to see is gtk2 going away, even though gtk3 support is "experimental" it works much better than gtk2 according to my tests, and having both in the target sucks.
The leftover mandatory gtk2 support is for binary netscape api plugins, which outside of x86* (flash) it probably doesn't make any sense.

Quoted 1 line

Aah, that's how you solved the infinite loop.

Magic!
I've found this build-testing in an old debian chroot and worked it out the quick way (well, not so quick for people building in such a scenario). For webkit-gtk 2.6.x+ it's probably solved via the cmake migration.

Quoted 1 line

And why? :-)

Thin archives break the build, though i must admit i don't recall exactly how (it was at the very start of the cleanup effort).

Quoted 5 lines

package/webkitgtk24/webkitgtk24.mk line 34

Quoted 2 lines
package/webkitgtk24/webkitgtk24.mk new file +2 -0
+WEBKITGTK24_CONF_OPTS = \
+	--enable-dependency-tracking \

Why? Yes it is in the older webkit, but do we have a reason to have it here?

Makefile logic doesn't parallelize well: it breaks the build usually when building WTF (at the beginning).
It might be worth adding a comment.

Most of the build breakage is solved in the newer versions with cmake, but midori doesn't like that.

Regards.

#11 lore raw

PATCH v3 9/11 midori: bump to version 0.5.9

In reply to Gustavo Zacarias

Bump to version 0.5.9 which uses the new webkit2 API (gtk3) or alternatively fallback to webkit1 compatibility API (gtk2). The old webkit is completely unsupported now, it makes no sense because of instability and security issues.

---
 package/midori/0001-disable-libnotify.patch | 43 +++++++++++++++++++++
 package/midori/Config.in                    | 39 +++++++++++++------
 package/midori/midori.hash                  |  2 +
 package/midori/midori.mk                    | 58 +++++++++++++++--------------
 4 files changed, 103 insertions(+), 39 deletions(-)
 create mode 100644 package/midori/0001-disable-libnotify.patch
 create mode 100644 package/midori/midori.hash
package/midori/0001-disable-libnotify.patch new file +43 -0
new file mode 100644
index 0000000..830ecff
@@ -0,0 +1,43 @@
+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/Config.in +27 -12
index c3b5a1b..b3ab8a9 100644
@@ -1,20 +1,35 @@
+comment "midori needs libgtk2 and a toolchain w/ C++, wchar, NPTL"
+	depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
+		!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_LIBGTK2
+
 config BR2_PACKAGE_MIDORI
 	bool "midori"
-	select BR2_PACKAGE_WEBKIT
-	select BR2_PACKAGE_LIBSEXY
+	select BR2_PACKAGE_LIBSOUP
+	select BR2_PACKAGE_LIBSOUP_GNOME
+	select BR2_PACKAGE_LIBXML2
+	select BR2_PACKAGE_SQLITE
+	select BR2_PACKAGE_WEBKITGTK24
 	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
 	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
-	depends on BR2_PACKAGE_LIBGTK2
-	depends on BR2_INSTALL_LIBSTDCPP # webkit
-	depends on BR2_TOOLCHAIN_HAS_THREADS # webkit -> enchant -> libglib2
-	depends on BR2_USE_WCHAR	 # webkit
-	depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
+	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_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
 	help
 	  Midori is a lightweight web browser based on WebKit
 
-	  http://software.twotoasts.de/?page=midori
+	  http://www.midori-browser.org/
 
-comment "midori needs libgtk2 and a toolchain w/ C++, wchar, threads"
-	depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
-		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_LIBGTK2
+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 new file +2 -0
new file mode 100644
index 0000000..7aae4c1
@@ -0,0 +1,2 @@
+# From download link @ http://midori-browser.org/download/source/
+sha1	475614dcc89a214a3c2fdc2aaefc817a5fa0ca03	midori_0.5.9_all_.tar.bz2
package/midori/midori.mk +31 -27

76 lines not on this page · raw message

Signature · 1 line
2.0.5
#12 lore raw

PATCH v3 10/11 webkit: mark as deprecated

In reply to Gustavo Zacarias

Mark webkit as deprecated now that midori has been updated to use webkitgtk24.
It has multiple CVEs under it's belt and is no longer maintained upstream.

---
 package/webkit/Config.in | 3 +++
 1 file changed, 3 insertions(+)
package/webkit/Config.in +3 -0
index 2f0b90d..25b3eef 100644
@@ -5,11 +5,13 @@ config BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
 	default y if BR2_i386 || BR2_mips || BR2_mipsel || \
 		BR2_sparc || BR2_x86_64
 	depends on BR2_USE_MMU # libgail -> pango -> libglib2
+	depends on BR2_DEPRECATED_SINCE_2015_05
 
 # disabled on powerpc due to bug https://bugs.webkit.org/show_bug.cgi?id=113638
 
 config BR2_PACKAGE_WEBKIT
 	bool "webkit"
+	depends on BR2_DEPRECATED_SINCE_2015_05
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_WCHAR # enchant -> libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # enchant -> libglib2; icu
@@ -43,6 +45,7 @@ config BR2_PACKAGE_WEBKIT
 	  http://webkit.org/
 
 comment "webkit needs libgtk2 and a toolchain w/ C++, wchar, threads"
+	depends on BR2_DEPRECATED_SINCE_2015_05
 	depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
 	depends on BR2_ARCH_HAS_ATOMICS # cairo
 	depends on !BR2_PACKAGE_LIBGTK2 || !BR2_INSTALL_LIBSTDCPP || \
Signature · 1 line
2.0.5
#13 lore raw

PATCH v3 11/11 libgail: mark as deprecated

In reply to Gustavo Zacarias

Mark libgail as deprecated now that midori has been updated to use webkitgtk24 and the only package that uses it (webkit) has been deprecated.

---
 package/libgail/Config.in | 2 ++
 1 file changed, 2 insertions(+)
package/libgail/Config.in +2 -0
index 3967083..a92a8eb 100644
@@ -6,6 +6,7 @@ config BR2_PACKAGE_LIBGAIL
 	depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype
 	depends on BR2_ARCH_HAS_ATOMICS # pango -> cairo
 	depends on BR2_PACKAGE_LIBGTK2
+	depends on BR2_DEPRECATED_SINCE_2015_05
 	select BR2_PACKAGE_PANGO
 	help
 	  GAIL provides accessibility support for gtk+ and
@@ -27,3 +28,4 @@ comment "libgail needs a toolchain w/ C++, wchar, threads"
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_USE_MMU
 	depends on BR2_ARCH_HAS_ATOMICS
+	depends on BR2_DEPRECATED_SINCE_2015_05
Signature · 1 line
2.0.5
#14 lore raw

v3 cover The big webkitgtk bump

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 8 lines · Gustavo Zacarias

Gustavo Zacarias (11):
gcc-final: install libatomic
toolchain-external: install libatomic
harfbuzz: add host variant
cairo: add host variant
pango: add host variant
librsvg: add host variant
librsvg: add hash file

I've applied up to this point, so that at least you don't need to carry those preparation patches anymore.

Quoted 1 line

webkitgtk24: new package

I have some comments/questions on this one. I'll reply to the patch itself.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com