Opened 11 years ago

Closed 9 years ago

#41560 closed update (fixed)

webkit-gtk3 2.4.0 with webkit2 support needed

Reported by: dbevans (David B. Evans) Owned by: dbevans (David B. Evans)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: jeremyhu (Jeremy Huddleston Sequoia), cooljeanius (Eric Gallager), ballapete (Peter "Pete" Dyballa), juanrgar (Juan R. García Blanco), bitpup
Port: webkit-gtk3 webkit-gtk3-2.0

Description (last modified by dbevans (David B. Evans))

As of GNOME 3.12.2, several ports now have hard dependencies on webit-gtk3 2.0.0 or later with webkit2 support.

port current version requires
devhelp 3.12.1 webkit2gtk-3.0 >= 2.0.0
epiphany 3.12.1 webkit2gtk-3.0 >= 2.4.0
gitg 0.3.3 webkit2gtk-3.0 >= 2.2

Attachments (3)

webkit-gtk.patch (5.3 KB) - added by jeremyhu (Jeremy Huddleston Sequoia) 11 years ago.
current patch in progress
webkit-gtk.2.patch (6.8 KB) - added by jeremyhu (Jeremy Huddleston Sequoia) 11 years ago.
updated patch, builds for x86_64 on Mavericks (not i386)
patch-webkit-gtk3-ml.diff (1.4 KB) - added by dbevans (David B. Evans) 11 years ago.
Revision ML patch including freetype fix

Download all attachments as: .zip

Change History (27)

Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Attachment: webkit-gtk.patch added

current patch in progress

comment:1 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Well that's unfortunate because webkit-gtk 2.2.2 is quite broken:

1) requires C++11 which makes it Mavericks+

2) stil haven't gotten it to build

I've sent some emails to the webkit-gtk mailing list about issues I've run into and get no response.

Current patch is attached if someone wants to continue working on it.

comment:2 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Current failure is at:

:info:build Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:40:43: fatal error: recursive template instantiation exceeded maximum depth of 128
:info:build     const unsigned initialCapacity = WTF::HashTableCapacityForSize<size>::value;
:info:build                                           ^
:info:build Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:71:5: note: in instantiation of function template specialization 'TestWebKitAPI::testInitialCapacity<1>' requested here
:info:build     testInitialCapacity<size>();
:info:build     ^
:info:build Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:70:5: note: in instantiation of function template specialization 'TestWebKitAPI::generateTestCapacityUpToSize<1>' requested here
:info:build     generateTestCapacityUpToSize<size - 1>();
:info:build     ^
:info:build Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:70:5: note: in instantiation of function template specialization 'TestWebKitAPI::generateTestCapacityUpToSize<2>' requested here
:info:build     generateTestCapacityUpToSize<size - 1>();
:info:build     ^
:info:build Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:70:5: note: in instantiation of function template specialization 'TestWebKitAPI::generateTestCapacityUpToSize<3>' requested here
:info:build     generateTestCapacityUpToSize<size - 1>();
:info:build     ^

Adding -ftemplate-depth=256 should get past that issue, but there are likely more issues ...

Last edited 11 years ago by jeremyhu (Jeremy Huddleston Sequoia) (previous) (diff)

Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Attachment: webkit-gtk.2.patch added

updated patch, builds for x86_64 on Mavericks (not i386)

comment:3 Changed 11 years ago by dbevans (David B. Evans)

Unfortunate, indeed. Thanks for the update.

comment:4 Changed 11 years ago by dbevans (David B. Evans)

Using your patch, I was able to build webkit-gtk3 on Mavericks as expected. But, also as expected, I ran into problems building on ML with this error:

In file included from Source/WTF/wtf/Assertions.cpp:40:
In file included from ./Source/WTF/wtf/text/CString.h:29:
In file included from ./Source/WTF/wtf/HashFunctions.h:24:
./Source/WTF/wtf/RefPtr.h:149:27: error: no member named 'move' in namespace 'std'
        RefPtr ptr = std::move(o);
                     ~~~~~^
./Source/WTF/wtf/RefPtr.h:156:27: error: no member named 'move' in namespace 'std'
        RefPtr ptr = std::move(o);
In file included from Source/WTF/wtf/Assertions.cpp:40:
In file included from ./Source/WTF/wtf/text/CString.h:29:
In file included from ./Source/WTF/wtf/HashFunctions.h:24:
./Source/WTF/wtf/RefPtr.h:149:27: error: no member named 'move' in namespace 'std'
        RefPtr ptr = std::move(o);
                     ~~~~~^
./Source/WTF/wtf/RefPtr.h:156:27: error: no member named 'move' in namespace 'std'
        RefPtr ptr = std::move(o);

This is a 'needs libc++' issue: std::move is not available in libstdc++.

After adding -stdlib=libc++ to both CXXFLAGS and LDFLAGS, the build proceeded and I got a successful build after one further minor patch concerning the path name for freetype.h.

Attached is an additional set of patches that encapsulates these changes and allows the build on ML. This should work as long as Xcode 5 is available.

Not sure about Lion and certainly SL and earlier remain a problem.

So looks like the issues are:

  • needs a C++11 capable compiler
  • needs libc++

What's the best way to do this on the earlier platforms?

Last edited 11 years ago by dbevans (David B. Evans) (previous) (diff)

comment:5 Changed 11 years ago by dbevans (David B. Evans)

Summarizing, this build of webkit-gtk3 on Mavericks and Mountain Lion allows gnome-online-accounts 3.10.2 to build but the others still require Webkit2 support.

I've added the patched version of webkit-gtk to my GNOME-3 stable test branch if anyone is interested. If anyone has additional fixes they are welcome to commit them there.

http://svn.macports.org/repository/macports/users/devans/GNOME-3/stable/dports/www/webkit-gtk

Happy Thanksgiving to all.

Changed 11 years ago by dbevans (David B. Evans)

Attachment: patch-webkit-gtk3-ml.diff added

Revision ML patch including freetype fix

comment:6 in reply to:  4 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Replying to devans@…:

So looks like the issues are:

  • needs a C++11 capable compiler
  • needs libc++

What's the best way to do this on the earlier platforms?

Error out if unsupported. Until trunk is released, we'll need to do this a tad messily:

platform darwin {
    set cxx_stdlib {}

    if {[info exists configure.cxx_stdlib] &&
        ${configure.cxx_stdlib} ne {} &&
        [string match *clang* ${configure.cxx}]} {
        set cxx_stdlib ${configure.cxx_stdlib}
    } elseif {[string match *clang* ${configure.cxx}] &&
              ${os.major} >= 13} {
        set cxx_stdlib libc++
    } else {
        set cxx_stdlib libstdc++
    }

    if {${cxx_stdlib} == "libstdc++"} {
       ui_error "$name is not supported for this installation of MacPorts.  It requires libc++ be selected as your C++ runtime"
       error "unsupported configuration"
    }
}

comment:7 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

FWIW, this works on my Lion and ML installs that use libc++

comment:8 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Resolution: fixed
Status: newclosed

comment:9 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Resolution: fixed
Status: closedreopened

Actually, reopening because of the webkit2 support request as well...

comment:10 Changed 11 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:11 Changed 11 years ago by bitpup

Cc: wheeltong@… added

Cc Me!

comment:12 in reply to:  9 Changed 11 years ago by ballapete (Peter "Pete" Dyballa)

Replying to jeremyhu@…:

Actually, reopening because of the webkit2 support request as well...

There is also a zenity request for webkit-gtk3. On Snow Leopard at least. Here a 'port upgrade outdated' leads to the message

Error: webkit-gtk3 is not supported for this installation of MacPorts.  It requires libc++ be selected as your C++ runtime.  Please use webkit-gtk3-2.0 instead
Error: org.macports.configure for port webkit-gtk3 returned: unsupported configuration

but 'port dependents webkit-gtk3' tells:

zenity depends on webkit-gtk3

comment:13 Changed 11 years ago by ballapete (Peter "Pete" Dyballa)

Cc: Peter_Dyballa@… added

Cc Me!

comment:14 Changed 11 years ago by juanrgar (Juan R. García Blanco)

Cc: juanrgar@… added

Cc Me!

comment:15 Changed 11 years ago by juanrgar (Juan R. García Blanco)

As of gitg@0.3.1 webkit2gtk-3.0 >= 1.9.92

comment:16 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)

comment:17 Changed 11 years ago by dbevans (David B. Evans)

Description: modified (diff)
Summary: webkit-gtk3 2.2.2 with webkit2 support neededwebkit-gtk3 2.4.0 with webkit2 support needed
Version: 2.2.1

As of GNOME 3.12.1, updated requirements are

  • devhelp 3.12.1 (webkit2gtk-3.0 >= 2.0.0)
  • epiphany 3.12.1 (webkit2gtk-3.0 >= 2.4.0)
  • gitg 0.3.2 (webkit2gtk-3.0 >= 2.2)

comment:18 Changed 11 years ago by dbevans (David B. Evans)

Description: modified (diff)

comment:19 Changed 11 years ago by dbevans (David B. Evans)

Port: webkit-gtk3-2.0 added

comment:20 Changed 10 years ago by bitpup

Cc: wheeltong@… removed

Cc Me!

comment:21 Changed 10 years ago by bitpup

Cc: wheeltong@… added

Cc Me!

comment:22 Changed 10 years ago by dbevans (David B. Evans)

Description: modified (diff)

As of GNOME 3.12.2 released 20140514, updated requirements are

  • devhelp 3.12.1 (webkit2gtk-3.0 >= 2.0.0)
  • epiphany 3.12.1 (webkit2gtk-3.0 >= 2.4.0)
  • gitg 0.3.3 (webkit2gtk-3.0 >= 2.2)

comment:23 Changed 9 years ago by jeremyhu (Jeremy Huddleston Sequoia)

Cc: jeremyhu@… added
Owner: changed from jeremyhu@… to devans@…
Status: reopenednew

comment:24 Changed 9 years ago by dbevans (David B. Evans)

Resolution: fixed
Status: newclosed

After much dedicated and patient work by jeremyhu, webkit2-gtk 2.11.2 was committed in r144206 and updated to version 2.11.3 in r144610. Although some remaining bugs need to be resolved (#50334, #50335), this port meets the requirements requested here for the GNOME 3.18 stable release and the GNOME 3.19 unstable release series for platforms that support libc++.

Closing this ticket on that basis. Thanks for all your work, Jeremy.

Note: See TracTickets for help on using tickets.