diff --git a/lib/const.rb b/lib/const.rb index 465e169cc..632e7c6dc 100644 --- a/lib/const.rb +++ b/lib/const.rb @@ -475,6 +475,7 @@ unless defined?(CREW_ANITYA_PACKAGE_NAME_MAPPINGS) { pkg_name: 'vidstab', anitya_pkg: 'vid.stab', comments: 'Prefer to GitHub' }, { pkg_name: 'vim_runtime', anitya_pkg: 'vim', comments: '' }, { pkg_name: 'wayland_info', anitya_pkg: 'wayland-utils', comments: '' }, + { pkg_name: 'webkit2gtk_4_0', anitya_pkg: 'webkitgtk~stable', comments: '' }, { pkg_name: 'webkit2gtk_4_1', anitya_pkg: 'webkitgtk~stable', comments: '' }, { pkg_name: 'webkitgtk_6', anitya_pkg: 'webkitgtk~stable', comments: '' }, { pkg_name: 'xauth', anitya_pkg: 'xorg-x11-xauth', comments: '' }, diff --git a/manifest/armv7l/w/webkit2gtk_4.filelist b/manifest/armv7l/w/webkit2gtk_4.filelist index 8b5b9bcb7..1b7a9d168 100644 --- a/manifest/armv7l/w/webkit2gtk_4.filelist +++ b/manifest/armv7l/w/webkit2gtk_4.filelist @@ -1,4 +1,4 @@ -# Total size: 78884156 +# Total size: 102245191 /usr/local/bin/WebKitWebDriver_4.0 /usr/local/include/webkitgtk-4.0/JavaScriptCore/JSBase.h /usr/local/include/webkitgtk-4.0/JavaScriptCore/JSContextRef.h @@ -90,6 +90,7 @@ /usr/local/include/webkitgtk-4.0/webkit/WebKitWebEditor.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebExtension.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebExtensionAutocleanups.h +/usr/local/include/webkitgtk-4.0/webkit/WebKitWebExtensionMatchPattern.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebFormManager.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebHitTestResult.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebInspector.h @@ -224,15 +225,16 @@ /usr/local/lib/girepository-1.0/WebKit2WebExtension-4.0.typelib /usr/local/lib/libjavascriptcoregtk-4.0.so /usr/local/lib/libjavascriptcoregtk-4.0.so.18 -/usr/local/lib/libjavascriptcoregtk-4.0.so.18.23.10 +/usr/local/lib/libjavascriptcoregtk-4.0.so.18.28.6 /usr/local/lib/libwebkit2gtk-4.0.so /usr/local/lib/libwebkit2gtk-4.0.so.37 -/usr/local/lib/libwebkit2gtk-4.0.so.37.67.4 +/usr/local/lib/libwebkit2gtk-4.0.so.37.74.4 /usr/local/lib/pkgconfig/javascriptcoregtk-4.0.pc /usr/local/lib/pkgconfig/webkit2gtk-4.0.pc /usr/local/lib/pkgconfig/webkit2gtk-web-extension-4.0.pc /usr/local/lib/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so /usr/local/libexec/webkit2gtk-4.0/MiniBrowser +/usr/local/libexec/webkit2gtk-4.0/WebKitGPUProcess /usr/local/libexec/webkit2gtk-4.0/WebKitNetworkProcess /usr/local/libexec/webkit2gtk-4.0/WebKitWebProcess /usr/local/libexec/webkit2gtk-4.0/jsc diff --git a/manifest/x86_64/w/webkit2gtk_4.filelist b/manifest/x86_64/w/webkit2gtk_4.filelist index def946c7b..933771cd2 100644 --- a/manifest/x86_64/w/webkit2gtk_4.filelist +++ b/manifest/x86_64/w/webkit2gtk_4.filelist @@ -1,4 +1,4 @@ -# Total size: 121829314 +# Total size: 146078029 /usr/local/bin/WebKitWebDriver_4.0 /usr/local/include/webkitgtk-4.0/JavaScriptCore/JSBase.h /usr/local/include/webkitgtk-4.0/JavaScriptCore/JSContextRef.h @@ -90,6 +90,7 @@ /usr/local/include/webkitgtk-4.0/webkit/WebKitWebEditor.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebExtension.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebExtensionAutocleanups.h +/usr/local/include/webkitgtk-4.0/webkit/WebKitWebExtensionMatchPattern.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebFormManager.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebHitTestResult.h /usr/local/include/webkitgtk-4.0/webkit/WebKitWebInspector.h @@ -224,15 +225,16 @@ /usr/local/lib64/girepository-1.0/WebKit2WebExtension-4.0.typelib /usr/local/lib64/libjavascriptcoregtk-4.0.so /usr/local/lib64/libjavascriptcoregtk-4.0.so.18 -/usr/local/lib64/libjavascriptcoregtk-4.0.so.18.23.10 +/usr/local/lib64/libjavascriptcoregtk-4.0.so.18.28.6 /usr/local/lib64/libwebkit2gtk-4.0.so /usr/local/lib64/libwebkit2gtk-4.0.so.37 -/usr/local/lib64/libwebkit2gtk-4.0.so.37.67.4 +/usr/local/lib64/libwebkit2gtk-4.0.so.37.74.4 /usr/local/lib64/pkgconfig/javascriptcoregtk-4.0.pc /usr/local/lib64/pkgconfig/webkit2gtk-4.0.pc /usr/local/lib64/pkgconfig/webkit2gtk-web-extension-4.0.pc /usr/local/lib64/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so /usr/local/libexec/webkit2gtk-4.0/MiniBrowser +/usr/local/libexec/webkit2gtk-4.0/WebKitGPUProcess /usr/local/libexec/webkit2gtk-4.0/WebKitNetworkProcess /usr/local/libexec/webkit2gtk-4.0/WebKitWebProcess /usr/local/libexec/webkit2gtk-4.0/jsc diff --git a/packages/webkit2gtk_4.rb b/packages/webkit2gtk_4.rb index 979bd177d..5dfbc1d18 100644 --- a/packages/webkit2gtk_4.rb +++ b/packages/webkit2gtk_4.rb @@ -1,33 +1,36 @@ -require 'package' +require 'buildsystems/cmake' -class Webkit2gtk_4 < Package +class Webkit2gtk_4 < CMake description 'Web content engine for GTK' homepage 'https://webkitgtk.org' - version '2.42.1' + version '2.50.1' license 'LGPL-2+ and BSD-2' compatibility 'aarch64 armv7l x86_64' - source_url 'https://webkitgtk.org/releases/webkitgtk-2.42.1.tar.xz' - source_sha256 '6f41fac9989d3ee51c08c48de1d439cdeddecbc757e34b6180987d99b16d2499' + source_url 'https://github.com/WebKit/WebKit.git' + git_hashtag "webkitgtk-#{version}" + # From the webkitglib/2.50 branch. + # git_hashtag '84fb745f2dec1b1f6417ee6059e76a60f6a4f96b' + # source_url "https://webkitgtk.org/releases/webkitgtk-#{version.split('-').first}.tar.xz" + # source_sha256 'e564b8099f9a3ae32409539b290bbd2ad084e99b6d22d4aac5e51e4554df8bc2' binary_compression 'tar.zst' binary_sha256({ - aarch64: 'dfc34529afd99bd8c619757b4b3d7b837b819a8554fe291f5e936b09ed447133', - armv7l: 'dfc34529afd99bd8c619757b4b3d7b837b819a8554fe291f5e936b09ed447133', - x86_64: '6349949a24e1fbae37cb576454602287e136efb305ac7cd506a0ae84c6d26d98' + aarch64: '1b66a5f767a4adddbe8ac2afe674dece407738b70ffba198104f5958e9c1b4bf', + armv7l: '1b66a5f767a4adddbe8ac2afe674dece407738b70ffba198104f5958e9c1b4bf', + x86_64: '3ebd8287b6602a71b1c0a64c0de06bdc54b3733921c8b2416dd5cd3f5c1d4706' }) depends_on 'at_spi2_core' # R - depends_on 'cairo' - depends_on 'ccache' => :build - depends_on 'dav1d' + depends_on 'cairo' # R + depends_on 'dav1d' => :build depends_on 'enchant' # R + depends_on 'expat' # R depends_on 'fontconfig' depends_on 'freetype' # R - depends_on 'gcc10' => :build depends_on 'gcc_lib' # R depends_on 'gdk_pixbuf' # R - depends_on 'glibc' # R depends_on 'glib' # R + depends_on 'glibc' # R depends_on 'gobject_introspection' => :build depends_on 'gstreamer' # R depends_on 'gtk3' # R @@ -37,143 +40,112 @@ class Webkit2gtk_4 < Package depends_on 'icu4c' # R depends_on 'lcms' # R depends_on 'libavif' # R + depends_on 'libbacktrace' # R depends_on 'libdrm' # R depends_on 'libepoxy' # R depends_on 'libgcrypt' # R - depends_on 'libglvnd' # R depends_on 'libgpg_error' # R depends_on 'libjpeg_turbo' # R depends_on 'libjxl' # R depends_on 'libnotify' depends_on 'libpng' # R depends_on 'libsecret' # R - depends_on 'libsoup' depends_on 'libsoup2' # R depends_on 'libtasn1' # R depends_on 'libwebp' # R - depends_on 'libwpe' # R depends_on 'libx11' # R - depends_on 'libxcomposite' # R - depends_on 'libxdamage' # R depends_on 'libxml2' # R - depends_on 'libxrender' # R depends_on 'libxslt' # R - depends_on 'libxt' # R depends_on 'mesa' # R - depends_on 'openjpeg' # R depends_on 'pango' # R depends_on 'py3_gi_docgen' => :build depends_on 'py3_smartypants' => :build depends_on 'sqlite' # R + depends_on 'sysprof' => :build depends_on 'unifdef' => :build depends_on 'valgrind' => :build - depends_on 'vulkan_headers' => :build depends_on 'vulkan_icd_loader' depends_on 'wayland' # R depends_on 'woff2' # R - depends_on 'wpebackend_fdo' # R depends_on 'zlib' # R + cache_build no_env_options + no_lto def self.patch system "sed -i 's,/usr/bin,/usr/local/bin,g' Source/JavaScriptCore/inspector/scripts/codegen/preprocess.pl" - @arch_flags = '' - @gcc_ver = '' - if ARCH == 'armv7l' || ARCH == 'aarch64' - ## Patch from https://bugs.webkit.org/show_bug.cgi?id=226557#c27 to - ## handle issue with gcc > 11. - # @gcc_patch = <<~'GCCEOF' - # diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake - # index 77ebb802ebb03450b5e96629a47b6819a68672c6..d49d6e43d7eeb6673c624e00eadf3edfca0674eb 100644 - #--- a/Source/cmake/WebKitCompilerFlags.cmake - #+++ b/Source/cmake/WebKitCompilerFlags.cmake - # @@ -143,6 +143,13 @@ if (COMPILER_IS_GCC_OR_CLANG) - # WEBKIT_PREPEND_GLOBAL_CXX_FLAGS(-Wno-nonnull) - # endif () + end - # + # This triggers warnings in wtf/Packed.h, a header that is included in many places. It does not - # + # respect ignore warning pragmas and we cannot easily suppress it for all affected files. - # + # https://bugs.webkit.org/show_bug.cgi?id=226557 - # + if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL "11.0") - # + WEBKIT_PREPEND_GLOBAL_CXX_FLAGS(-Wno-stringop-overread) - # + endif () - # + - ## -Wexpansion-to-defined produces false positives with GCC but not Clang - ## https://bugs.webkit.org/show_bug.cgi?id=167643#c13 - # if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") - # GCCEOF - # File.write('gcc.patch', @gcc_patch) - # system 'patch -Np1 -F 10 -i gcc.patch' - # Patch from https://github.com/WebKit/WebKit/pull/1233 - # downloader 'https://patch-diff.githubusercontent.com/raw/WebKit/WebKit/pull/1233.diff', - # '70c990ced72c5551b01c9d7c72da7900d609d0f7891e7b99ab132ac1b4aa33ea' - # system "sed -i 's,data.pixels->bytes(),data.pixels->data(),' 1233.diff" - # system 'patch -Np1 -F 10 -i 1233.diff' - # Patch from https://github.com/WebKit/WebKit/pull/2926 - # downloader 'https://patch-diff.githubusercontent.com/raw/WebKit/WebKit/pull/2926.diff', - # '26a8d5a9dd9d61865645158681b766e13cf05b3ed07f30bebb79ff73259d0664' - # system "sed -i '22,63d' 2926.diff" - # system 'patch -Np1 -F 10 -i 2926.diff' - # @arch_flags = '-mtune=cortex-a15 -mfloat-abi=hard -mfpu=neon -mtls-dialect=gnu -marm -mlibarch=armv8-a+crc+simd -march=armv8-a+crc+simd' + pre_cmake_options "CC=#{CREW_PREFIX}/bin/gcc CXX=#{CREW_PREFIX}/bin/g++" + cmake_options "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DENABLE_BUBBLEWRAP_SANDBOX=OFF \ + -DENABLE_DOCUMENTATION=OFF \ + -DENABLE_GAMEPAD=OFF \ + -DENABLE_JOURNALD_LOG=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_SPEECH_SYNTHESIS=OFF \ + -DPORT=GTK \ + -DPYTHON_EXECUTABLE=`which python` \ + -DUSER_AGENT_BRANDING='Chromebrew' \ + -DUSE_GTK4=OFF \ + -DUSE_JPEGXL=ON \ + -DUSE_SOUP2=ON" + cmake_pre_cache_build_extras do + # This only works in the container. + system "sudo ln -sf #{CREW_PREFIX}/bin/gcc /usr/bin/gcc" if CREW_IN_CONTAINER + system "sudo ln -sf #{CREW_PREFIX}/bin/g++ /usr/bin/g++" if CREW_IN_CONTAINER + if ARCH == 'armv7l' @arch_flags = '-mfloat-abi=hard -mtls-dialect=gnu -mthumb -mfpu=vfpv3-d16 -mlibarch=armv7-a+fp -march=armv7-a+fp' - end - @gcc_ver = '-10' - @new_gcc = <<~NEW_GCCEOF - #!/bin/bash - gcc#{@gcc_ver} #{@arch_flags} $@ - NEW_GCCEOF - @new_gpp = <<~NEW_GPPEOF - #!/bin/bash - g++#{@gcc_ver} #{@arch_flags} $@ - NEW_GPPEOF - FileUtils.mkdir_p 'bin' - File.write('bin/gcc', @new_gcc) - FileUtils.chmod 0o755, 'bin/gcc' - File.write('bin/g++', @new_gpp) - FileUtils.chmod 0o755, 'bin/g++' - end - - def self.build - # This builds webkit2gtk4 (which uses gtk3 and libsoup2) - @workdir = Dir.pwd - # Bubblewrap sandbox breaks on epiphany with - # bwrap: Can't make symlink at /var/run: File exists - # LDFLAGS from debian: -Wl,--no-keep-memory - unless File.file?('build.ninja') - @arch_linker_flags = ARCH == 'x86_64' ? '' : '-Wl,--no-keep-memory' - system "CREW_LINKER_FLAGS='#{@arch_linker_flags}' CC='#{@workdir}/bin/gcc' CXX='#{@workdir}/bin/g++' \ - cmake -B builddir -G Ninja \ - #{CREW_CMAKE_OPTIONS.sub('-pipe', '-pipe -Wno-error').gsub('-flto=auto', '').sub('-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE', '')} \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ - -DENABLE_BUBBLEWRAP_SANDBOX=OFF \ - -DENABLE_DOCUMENTATION=OFF \ - -DENABLE_GLES2=OFF \ - -DENABLE_JOURNALD_LOG=OFF \ - -DENABLE_GAMEPAD=OFF \ - -DENABLE_MINIBROWSER=ON \ - -DUSE_SYSTEM_MALLOC=ON \ - -DPORT=GTK \ - -DUSE_JPEGXL=ON \ - -DUSE_GTK4=OFF \ - -DUSE_SOUP2=ON \ - -DPYTHON_EXECUTABLE=`which python` \ - -DUSER_AGENT_BRANDING='Chromebrew'" - end - @counter = 1 - @counter_max = 20 - loop do - break if Kernel.system "#{CREW_NINJA} -C builddir -j #{CREW_NPROC}" - - puts "Make iteration #{@counter} of #{@counter_max}...".orange - - @counter += 1 - break if @counter > @counter_max + @new_gcc = <<~NEW_GCCEOF + #!/bin/bash + gcc #{@arch_flags} $@ + NEW_GCCEOF + @new_gpp = <<~NEW_GPPEOF + #!/bin/bash + # See https://wiki.debian.org/ReduceBuildMemoryOverhead + g++ #{@arch_flags} --param ggc-min-expand=10 $@ + # g++ #{@arch_flags} $@ + NEW_GPPEOF + FileUtils.mkdir_p 'bin' + File.write('bin/gcc', @new_gcc) + FileUtils.chmod 0o755, 'bin/gcc' + File.write('bin/g++', @new_gpp) + FileUtils.chmod 0o755, 'bin/g++' end end - def self.install - system "DESTDIR=#{CREW_DEST_DIR} #{CREW_NINJA} -C builddir install" + if ARCH == 'armv7l' + def self.build + # This builds webkit2gtk4 (which uses gtk3 and libsoup2) + @workdir = Dir.pwd + # Bubblewrap sandbox breaks on epiphany with + # bwrap: Can't make symlink at /var/run: File exists + # LDFLAGS from debian: -Wl,--no-keep-memory + unless File.file?('build.ninja') + @arch_linker_flags = ARCH == 'x86_64' ? '' : '-Wl,--no-keep-memory' + system "CC='#{@workdir}/bin/gcc' CXX='#{@workdir}/bin/g++' CREW_LINKER_FLAGS='#{@arch_linker_flags}' \ + cmake -B builddir -G Ninja \ + #{CREW_CMAKE_OPTIONS.sub('-pipe', '-pipe -Wno-error').gsub('-flto=auto', '').sub('-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE', '')} \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DENABLE_BUBBLEWRAP_SANDBOX=OFF \ + -DENABLE_DOCUMENTATION=OFF \ + -DENABLE_GAMEPAD=OFF \ + -DENABLE_JOURNALD_LOG=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_SPEECH_SYNTHESIS=OFF \ + -DPORT=GTK \ + -DPYTHON_EXECUTABLE=`which python` \ + -DUSER_AGENT_BRANDING='Chromebrew' \ + -DUSE_GTK4=OFF \ + -DUSE_JPEGXL=ON \ + -DUSE_SOUP2=ON" + end + Kernel.system "#{CREW_NINJA} -C builddir -j #{CREW_NPROC}" + end + end + + cmake_install_extras do FileUtils.mv "#{CREW_DEST_PREFIX}/bin/WebKitWebDriver", "#{CREW_DEST_PREFIX}/bin/WebKitWebDriver_4.0" end end