[webkit-dev] Introducing a minimum ICU version for WebKit

Michael Catanzaro mcatanzaro at gnome.org
Thu Apr 9 13:35:17 PDT 2020



On Thu, Apr 9, 2020 at 7:08 pm, "Olmstead, Don" <Don.Olmstead at sony.com> 
wrote:
> Hi Michael,
> 
> There are a couple problems with checking in a version of ICU.
> 
> * Other libraries used by WebKit have dependencies on ICU. For our 
> ports harfbuzz, libxml2, libxslt, libpsl and CFlite all require ICU.

You're right, it's a bad idea.

> * ICU doesn't come with a CMake build system and its non-trivial to 
> make one. We've largely used this 
> https://github.com/LibCMaker/ICU_CMake_Files to handle building ICU 
> but its use is also why ICU is the library we aren't able to update 
> on a regular cadence.

Another good point. Hadn't thought that through far enough.

> * We aren't terribly good with updating things in ThirdParty. 
> Sometimes this is because there aren't releases, see gtest. Others 
> because they don't actually have releases, see ANGLE. On top of that 
> there might be local modifications to make things work within WebKit.

Of course, bundling things in ThirdParty is an absolute last resort. 
But when using system packages is no longer possible, what else to do? 
I have to support WebKit on RHEL 7, which has ICU 50. Mike from SUSE is 
trying to support SLE 12, which has ICU 52. You can see it doesn't add 
up. :)

But I didn't object to the ICU 60 proposal because (a) our dependency 
policy allows cutting off distros older than Ubuntu 18.04 and Debian 
Buster, and (b) I figured we would just bundle it. Instead, a better 
approach is probably to come up with downstream patches to revert all 
the changes that require ICU 60 and maintain them as long as we can. 
Same goes for CMake, but it's going to get a lot harder as WebKit usees 
more and more new CMake features. At some point we'll probably need to 
try bundling a custom CMake, since eventually that will be easier than 
patching WebKit to use ancient CMake.

> Could you possibly give some overview of how WebKit is packaged by 
> Linux distributions? I would have thought they would use 
> flatpack/jhbuild to get the dependencies that the WPE/GTK ports are 
> using especially if those dependencies have their own set of bug and 
> security fixes. My experience with Linux is minimal so some context 
> here would be appreciated.

No, distros build against their own system packages.

JHBuild is a developer tool. And flatpak is cool, but not used to build 
distro packages. Fedora is experimenting with distributing applications 
using flatpak, but you can't distribute system libraries that way.

> For our ports we use vcpkg to build and manage dependencies. We host 
> it at https://github.com/WebKitForWindows/WebKitRequirements and have 
> an internal fork for PlayStation. I'm guessing it's probably similar 
> to flatpack/jhbuild in terms of functionality but in our case we just 
> use GitHub releases to have binaries ready.
> 
> Perhaps there are better ways for us to approach the requirements 
> that would be beneficial to all ports?

I don't think there's really anything to do other than to decide how 
many old distros we're willing to cut off of updates. Currently the 
dependencies policy protects distros for three years. To continue 
supporting Ubuntu 16.04 (which reaches EOL in April 2021), it would 
need to be extended to five years. Probably not many developers would 
be very happy with that at all. But Ubuntu have a five-year lifecycle, 
so it's tough beans for WebKit users if we drop support before that 
time. RHEL and SLE have 10 and 12-year lifecycles, respectively... 
nobody is going to propose supporting that upstream, we just have to 
either figure out how to deal with it or cut off updates eventually 
once it becomes too hard to build.

I'd support extending our dependencies policy from three years up to 
five years... only problem is, five years makes it really hard to use 
new C++ features, and we like those. :( Anyway, with the current 
dependencies policy, ICU 60 is allowed. We'll just have to figure out 
how to deal with it downstream.

Michael




More information about the webkit-dev mailing list