diff options
Diffstat (limited to 'nonprism/webkit2gtk/PKGBUILD')
-rw-r--r-- | nonprism/webkit2gtk/PKGBUILD | 261 |
1 files changed, 212 insertions, 49 deletions
diff --git a/nonprism/webkit2gtk/PKGBUILD b/nonprism/webkit2gtk/PKGBUILD index b90927799..e6762d337 100644 --- a/nonprism/webkit2gtk/PKGBUILD +++ b/nonprism/webkit2gtk/PKGBUILD @@ -1,20 +1,30 @@ # Maintainer (arch): Jan Alexander Steffens (heftig) <heftig@archlinux.org> -# Contributor (arch): Eric Bélanger <eric@archlinux.org> +# Contributor: Eric Bélanger <eric@archlinux.org> # Contributor: Andreas Grapentin <andreas@grapentin.org> # Contributor: Jesús E. <heckyel@parabola.nu> # Contributor: André Silva <emulatorman@hyperbola.info> # Contributor: Luke R. <g4jc@openmailbox.org> # Contributor: Freemor <freemor@fremor.ca> # Contributor: bill-auger <bill-auger@programmer.net> +# Maintainer (archarm): Kevin Mihelich <kevin@archlinuxarm.org> +# Maintainer: Parabola Hackers <dev@lists.parabola.nu> # parabola changes and rationale: # - remove geoclue2 support # - pinned to 'icu' sodep +# archarm changes: +# - build v7 with vfpv3, neon is broken +# NOTE: i686 currently fails to build (FS32#310) -pkgname=webkit2gtk -pkgver=2.32.0 + +pkgbase=webkit2gtk +pkgname=( + webkit2gtk + webkit2gtk-docs +) +pkgver=2.42.5 pkgrel=2 pkgrel+=.nonprism1 pkgdesc="Web content engine for GTK" @@ -23,69 +33,214 @@ url="https://webkitgtk.org" arch=(x86_64) arch+=(armv7h i686) license=(custom) -depends=(cairo fontconfig freetype2 libgcrypt glib2 gtk3 harfbuzz harfbuzz-icu - icu libjpeg libsoup libxml2 zlib libpng sqlite atk libwebp at-spi2-core - libegl libgl libgles libwpe wpebackend-fdo libxslt libsecret libtasn1 - enchant libx11 libxext libice libxt wayland libnotify hyphen openjpeg2 - woff2 libsystemd bubblewrap libseccomp xdg-dbus-proxy gstreamer - gst-plugins-base-libs libmanette) -makedepends=(cmake ninja gtk-doc python ruby gobject-introspection - wayland-protocols systemd gst-plugins-bad gperf) -#makedepends=(${makedepends[@]/geoclue/}) -optdepends=('gst-plugins-good: media decoding' - 'gst-plugins-bad: media decoding' - 'gst-libav: nonfree media decoding') -source=($url/releases/webkitgtk-$pkgver.tar.xz{,.asc} - unhide-deprecated-api.patch) -source_i686=(webkitgtk-2.24.2-no-sse2.patch) -sha256sums=('9d7df4dae9ada2394257565acc2a68ace9308c4c61c3fcc00111dc1f11076bf0' +depends=( + at-spi2-core + atk + bubblewrap + cairo + enchant + fontconfig + freetype2 + glib2 + gst-plugins-bad-libs + gst-plugins-base-libs + gstreamer + gtk3 + harfbuzz + harfbuzz-icu + hyphen + icu + libavif + libdrm + libegl + libepoxy + libgcrypt + libgl + libgles + libjpeg + libjxl + libmanette + libpng + libseccomp + libsecret + libsoup + libsystemd + libtasn1 + libwebp + libwpe + libx11 + libxcomposite + libxml2 + libxslt + libxt + mesa + openjpeg2 + sqlite + wayland + woff2 + wpebackend-fdo + xdg-dbus-proxy + zlib +) +makedepends=( + clang + cmake + gi-docgen + gobject-introspection + gperf + gst-plugins-bad + lld + ninja + python + ruby + systemd + unifdef + wayland-protocols +) +options=(debug) +source=( + $url/releases/webkitgtk-$pkgver.tar.xz{,.asc} + GTK-MiniBrowser-should-hide-the-toolbar-when-using-full-screen.patch + GTK-Disable-DMABuf-renderer-for-NVIDIA-proprietary-drivers.patch +) +source_i686=(webkitgtk-2.36.3-no-sse2.arch32.patch) +sha256sums=('b64278c1f20b8cfdbfb5ff573c37d871aba74a1db26d9b39f74e8953fe61e749' 'SKIP' - '48ee7bee0b50776c8153c20b96854bd5086e0a7d04e621fd57ea7fc6c690c3a2') -sha256sums_i686=('e95391eceeb29d0ebc57d6b867afd7cd95ed92683edeb28c6a7a5048b5a9b85b') -validpgpkeys=('D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3' # Carlos Garcia Campos <cgarcia@igalia.com> - '5AA3BC334FD7E3369E7C77B291C559DBE4C9123B') # Adrián Pérez de Castro <aperez@igalia.com> + 'a921d6be1303e9f23474971f381886fd291ec5bb1a7ff1e85acede8cfb88bef2' + '655f3b2c96355ac83c4fa1fc6048e3256bbfdbfb9727e1e18c5af12613536206') +sha256sums_i686=('58a724b7f1092a9049186a3b8c61689c31558b6c2b587c827cec04219397adac') +b2sums=('4b772d91d3e2c3fc3a48455f43016d2cc1699b18fcc78253d1527eecabbfc1f47cd3bf3c512508fd683d29de68f980511d2057e4c65979bab38083a2da5cb516' + 'SKIP' + 'd440d82c769f1b35caf5464dc850cdf1c896224205c90c17d8b0a44aee62e4b1383e11306936aaca067fde8836770d346d5122d7b05c91a5c7c1741c89c65e2f' + 'daa782d4d40cc12a05c02b2494e879333f66f32820f1a1b89b7ab68f62fd53043b116ecb5ef476004095a7c7b924b12695b7e87e21dd547f66e72fa02a972f0d') +validpgpkeys=( + 'D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3' # Carlos Garcia Campos <cgarcia@igalia.com> + '5AA3BC334FD7E3369E7C77B291C559DBE4C9123B' # Adrián Pérez de Castro <aperez@igalia.com> +) prepare() { cd webkitgtk-$pkgver + + # Requested by eworm + # https://github.com/WebKit/WebKit/pull/17909 + patch -Np1 -i ../GTK-MiniBrowser-should-hide-the-toolbar-when-using-full-screen.patch + + # https://bugs.archlinux.org/task/79783 + # https://github.com/WebKit/WebKit/pull/18614 + patch -Np1 -i ../GTK-Disable-DMABuf-renderer-for-NVIDIA-proprietary-drivers.patch + + + ## arch-specific patching ## + case "$CARCH" in - i686) - # disable SSE2 on 486 and 686 - source+=('webkitgtk-2.24.2-no-sse2.patch') - sha256sums+=('e95391eceeb29d0ebc57d6b867afd7cd95ed92683edeb28c6a7a5048b5a9b85b') - options+=(!debug) - patch -p1 < ../webkitgtk-2.24.2-no-sse2.patch - ;; - esac + i686) + options+=(!debug) - # Use deprecated API for ubrk_safeClone until ICU 69 is officially supported - patch -Np1 -i ../unhide-deprecated-api.patch + # disable SSE2 on 486 and 686 + echo "applying webkitgtk-2.36.3-no-sse2.arch32.patch" + patch -Rp1 -i "$srcdir"/webkitgtk-2.36.3-no-sse2.arch32.patch + ;; + esac } build() { -# CFLAGS+=" $CPPFLAGS" -# CXXFLAGS+=" $CPPFLAGS" + local cmake_options=( + -DPORT=GTK + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=/usr + -DCMAKE_INSTALL_LIBDIR=lib + -DCMAKE_INSTALL_LIBEXECDIR=lib + -DCMAKE_SKIP_RPATH=ON + -DUSE_AVIF=ON + -DUSE_SOUP2=ON + -DENABLE_DOCUMENTATION=ON + -DENABLE_MINIBROWSER=ON + ) + + # GCC with LTO fails to link libjavascriptcoregtk + # /usr/bin/ld: /tmp/ccXxyWZV.ltrans0.ltrans.o: in function `ipint_table_size_validate': + # <artificial>:(.text+0x49f0f): undefined reference to `ipint_extern_table_size' + # /usr/bin/ld: /tmp/ccXxyWZV.ltrans0.ltrans.o: in function `ipint_table_fill_validate': + # <artificial>:(.text+0x4a019): undefined reference to `ipint_extern_table_fill' + # collect2: error: ld returned 1 exit status + export CC=clang CXX=clang++ + LDFLAGS+=" -fuse-ld=lld" + + # JITted code crashes when CET is used + CFLAGS+=' -fcf-protection=none' + CXXFLAGS+=' -fcf-protection=none' + + # Produce minimal debug info: 4.3 GB of debug data makes the + # build too slow and is too much to package for debuginfod + CFLAGS+=' -g1' + CXXFLAGS+=' -g1' + + + ## parabola config ## + + # clang-16: error: unknown argument: '-fvar-tracking-assignments' + CFLAGS="${CFLAGS/-fvar-tracking-assignments/}" + CXXFLAGS="${CXXFLAGS/-fvar-tracking-assignments/}" + + + ## arch-specific config ## + + case "${CARCH}" in + armv7h) + export -n CC CXX + LDFLAGS="${LDFLAGS/ -fuse-ld=lld/}" + [[ $CARCH == "armv7h" ]] && CFLAGS=`echo $CFLAGS | sed -e 's/neon/vfpv3/'` && CXXFLAGS="$CFLAGS" + ;; + i686) + # linker runs out of memory on 32-bit + LDFLAGS+=" -Wl,--no-keep-memory" + + # do not build JIT code on non-pentium4 (breaks in micro-optimizations) + cmake_options+=( -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON -DENABLE_SAMPLING_PROFILER=OFF ) + + # Could NOT find GIDocgen (missing: GIDocgen_VERSION) (found version "") + # ENABLE_INTROSPECTION is needed for gi-docgen. + cmake_options+=( -DENABLE_DOCUMENTATION=OFF ) + + # Package 'gstreamer-webrtc-1.0' has version '1.16.2', required version is '>= 1.18.4' + # GStreamerTranscoder >= 1.20 is needed for USE_GSTREAMER_TRANSCODER. + cmake_options+=( -DUSE_GSTREAMER_TRANSCODER=OFF ) + ;; + esac local parabola_options=( -DENABLE_GEOLOCATION=OFF ) + cmake_options+=( ${parabola_options[@]} ) - cmake -S webkitgtk-$pkgver -B build -G Ninja \ - ${parabola_options[@]} \ - -DPORT=GTK \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_INSTALL_LIBEXECDIR=lib \ - -DCMAKE_SKIP_RPATH=ON \ - -DENABLE_GTKDOC=ON \ - -DENABLE_MINIBROWSER=ON + + ## upstream ## + + cmake -S webkitgtk-$pkgver -B build -G Ninja "${cmake_options[@]}" cmake --build build } -package() { - depends+=(libwpe-1.0.so libWPEBackend-fdo-1.0.so) - depends+=(libicui18n.so libicuuc.so) - provides+=(libjavascriptcoregtk-4.0.so libwebkit2gtk-4.0.so) +package_webkit2gtk() { + depends+=( + libWPEBackend-fdo-1.0.so + libwpe-1.0.so + ) + depends+=( libicui18n.so libicuuc.so ) + provides+=( + libjavascriptcoregtk-4.0.so + libwebkit2gtk-4.0.so + ) + optdepends=( + # 'geoclue: Geolocation support' # anti-feature + 'gst-libav: nonfree media decoding' + 'gst-plugins-bad: media decoding' + 'gst-plugins-good: media decoding' + ) DESTDIR="$pkgdir" cmake --install build + rm -r "$pkgdir/usr/bin" + + mkdir -p doc/usr/share + mv {"$pkgdir",doc}/usr/share/gtk-doc + cd webkitgtk-$pkgver find Source -name 'COPYING*' -or -name 'LICENSE*' -print0 | sort -z | while IFS= read -d $'\0' -r _f; do @@ -95,3 +250,11 @@ package() { done | install -Dm644 /dev/stdin "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } + +package_webkit2gtk-docs() { + pkgdesc+=" (documentation)" + depends=() + + mv doc/* "$pkgdir" +} + |