From 1f013e2ee91da924278e8aad546afeac875b463d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 10:09:01 +0700 Subject: [PATCH 01/11] qt6-base: move mkspecs to same package with qmake --- srcpkgs/qt6-base/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/qt6-base/template b/srcpkgs/qt6-base/template index 204d2c68ae01..024393134eef 100644 --- a/srcpkgs/qt6-base/template +++ b/srcpkgs/qt6-base/template @@ -1,7 +1,7 @@ # Template file for 'qt6-base' pkgname=qt6-base version=6.4.2 -revision=1 +revision=2 build_style=cmake configure_args="-DINSTALL_DATADIR=share/qt6 -DINSTALL_ARCHDATADIR=lib/qt6 @@ -284,7 +284,7 @@ qt6-base-devel_package() { vmove usr/include vmove usr/lib/metatypes vmove usr/lib/pkgconfig - vmove usr/lib/qt6/mkspecs + vmove usr/lib/qt6/mkspecs/modules vmove "usr/lib/*.a" vmove "usr/lib/*.so" vmove "usr/lib/*.prl" From c40670b93341b7f2567ecbe32d2e69c21601fbfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Mon, 8 Aug 2022 17:13:11 +0700 Subject: [PATCH 02/11] New package: qt6-webengine-6.3.1. --- common/shlibs | 7 + srcpkgs/qt6-webengine-devel | 1 + srcpkgs/qt6-webengine-examples | 1 + .../patches/0001-None-no-debug.patch | 11 + .../patches/0003-cross-hack.patch | 10 + .../patches/0050-no-glibc-cmake-check.patch | 14 + .../0100-chromium-revert-9d080c0.patch | 154 ++++ ...omium-102-fenced_frame_utils-include.patch | 20 + ...102-chromium-102-regex_pattern-array.patch | 14 + ...0103-chromium-i686-vaapi-fpermissive.patch | 23 + .../0104-chromium-libxml-unbundle.patch | 10 + ...-chromium-revert-drop-of-system-java.patch | 15 + .../patches/0106-chromium-system-nodejs.patch | 29 + .../patches/0107-chromium-cross-build.patch | 65 ++ .../0108-chromium-cursed^Uscoped_file.patch | 18 + ...chromium-aarch64-musl-memory-tagging.patch | 29 + ...fix-missing-TEMP_FAILURE_RETRY-macro.patch | 21 + .../patches/0111-chromium-cstdint.patch | 10 + .../patches/0112-chromium-unistd.h.patch | 10 + .../0113-chromium-pthread-stacksize.patch | 16 + .../patches/0114-do-not-narrow-int.patch | 53 ++ ...5-chromium-no-canonicalize-file-name.patch | 12 + .../0116-chromium-musl-get-thread-name.patch | 22 + .../patches/0117-chromium-musl-resolver.patch | 64 ++ .../0119-chromium-musl-stack-utils.patch | 20 + .../patches/0120-chromium-libc-malloc.patch | 34 + .../patches/0121-chromium-musl-stat.patch | 12 + .../patches/0122-chromium-condition_var.patch | 22 + .../0123-chromium-musl-no-execinfo.patch | 75 ++ .../0123-chromium-musl-no-getcontext.patch | 27 + .../patches/0124-chromium-enable-i686.patch | 17 + .../0125-chromium-remove-strip_binary.patch | 32 + .../patches/0126-chromium-no-cdefs.patch | 39 + .../0128-chromium-sandbox-membarrier.patch | 10 + .../0129-chromium-sandbox-shed_getparam.patch | 20 + ...undle-ffmpeg-av_stream_get_first_dts.patch | 10 + ...1-chromium-unbundled-cross-toolchain.patch | 13 + .../patches/0152-chromium-webrtc-size_t.patch | 10 + .../patches/0153-chromium-webrtc-size_t.patch | 16 + .../patches/0154-chromium-uit_t.patch | 11 + .../patches/0200-chromium-sndio.patch | 849 ++++++++++++++++++ .../patches/0300-chromium-musl-hacks.patch | 52 ++ .../patches/0301-chromium-musl-sandbox.patch | 86 ++ .../patches/0302-chromium-no-mallinfo.patch | 67 ++ .../patches/0700-armv7l-neon.patch | 10 + ...-chromium-musl-cross-no-asm_ptrace_h.patch | 30 + .../0751-chromium-musl-arm-user_vfp.patch | 20 + .../0752-chromium-musl-arm-elf_auxv_t.patch | 18 + .../patches/0900-cross-build-examples.patch | 16 + srcpkgs/qt6-webengine/template | 183 ++++ srcpkgs/qt6-webengine/update | 1 + 51 files changed, 2329 insertions(+) create mode 120000 srcpkgs/qt6-webengine-devel create mode 120000 srcpkgs/qt6-webengine-examples create mode 100644 srcpkgs/qt6-webengine/patches/0001-None-no-debug.patch create mode 100644 srcpkgs/qt6-webengine/patches/0003-cross-hack.patch create mode 100644 srcpkgs/qt6-webengine/patches/0050-no-glibc-cmake-check.patch create mode 100644 srcpkgs/qt6-webengine/patches/0100-chromium-revert-9d080c0.patch create mode 100644 srcpkgs/qt6-webengine/patches/0101-chromium-102-fenced_frame_utils-include.patch create mode 100644 srcpkgs/qt6-webengine/patches/0102-chromium-102-regex_pattern-array.patch create mode 100644 srcpkgs/qt6-webengine/patches/0103-chromium-i686-vaapi-fpermissive.patch create mode 100644 srcpkgs/qt6-webengine/patches/0104-chromium-libxml-unbundle.patch create mode 100644 srcpkgs/qt6-webengine/patches/0105-chromium-revert-drop-of-system-java.patch create mode 100644 srcpkgs/qt6-webengine/patches/0106-chromium-system-nodejs.patch create mode 100644 srcpkgs/qt6-webengine/patches/0107-chromium-cross-build.patch create mode 100644 srcpkgs/qt6-webengine/patches/0108-chromium-cursed^Uscoped_file.patch create mode 100644 srcpkgs/qt6-webengine/patches/0109-chromium-aarch64-musl-memory-tagging.patch create mode 100644 srcpkgs/qt6-webengine/patches/0110-chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch create mode 100644 srcpkgs/qt6-webengine/patches/0111-chromium-cstdint.patch create mode 100644 srcpkgs/qt6-webengine/patches/0112-chromium-unistd.h.patch create mode 100644 srcpkgs/qt6-webengine/patches/0113-chromium-pthread-stacksize.patch create mode 100644 srcpkgs/qt6-webengine/patches/0114-do-not-narrow-int.patch create mode 100644 srcpkgs/qt6-webengine/patches/0115-chromium-no-canonicalize-file-name.patch create mode 100644 srcpkgs/qt6-webengine/patches/0116-chromium-musl-get-thread-name.patch create mode 100644 srcpkgs/qt6-webengine/patches/0117-chromium-musl-resolver.patch create mode 100644 srcpkgs/qt6-webengine/patches/0119-chromium-musl-stack-utils.patch create mode 100644 srcpkgs/qt6-webengine/patches/0120-chromium-libc-malloc.patch create mode 100644 srcpkgs/qt6-webengine/patches/0121-chromium-musl-stat.patch create mode 100644 srcpkgs/qt6-webengine/patches/0122-chromium-condition_var.patch create mode 100644 srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-execinfo.patch create mode 100644 srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-getcontext.patch create mode 100644 srcpkgs/qt6-webengine/patches/0124-chromium-enable-i686.patch create mode 100644 srcpkgs/qt6-webengine/patches/0125-chromium-remove-strip_binary.patch create mode 100644 srcpkgs/qt6-webengine/patches/0126-chromium-no-cdefs.patch create mode 100644 srcpkgs/qt6-webengine/patches/0128-chromium-sandbox-membarrier.patch create mode 100644 srcpkgs/qt6-webengine/patches/0129-chromium-sandbox-shed_getparam.patch create mode 100644 srcpkgs/qt6-webengine/patches/0150-chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch create mode 100644 srcpkgs/qt6-webengine/patches/0151-chromium-unbundled-cross-toolchain.patch create mode 100644 srcpkgs/qt6-webengine/patches/0152-chromium-webrtc-size_t.patch create mode 100644 srcpkgs/qt6-webengine/patches/0153-chromium-webrtc-size_t.patch create mode 100644 srcpkgs/qt6-webengine/patches/0154-chromium-uit_t.patch create mode 100644 srcpkgs/qt6-webengine/patches/0200-chromium-sndio.patch create mode 100644 srcpkgs/qt6-webengine/patches/0300-chromium-musl-hacks.patch create mode 100644 srcpkgs/qt6-webengine/patches/0301-chromium-musl-sandbox.patch create mode 100644 srcpkgs/qt6-webengine/patches/0302-chromium-no-mallinfo.patch create mode 100644 srcpkgs/qt6-webengine/patches/0700-armv7l-neon.patch create mode 100644 srcpkgs/qt6-webengine/patches/0750-chromium-musl-cross-no-asm_ptrace_h.patch create mode 100644 srcpkgs/qt6-webengine/patches/0751-chromium-musl-arm-user_vfp.patch create mode 100644 srcpkgs/qt6-webengine/patches/0752-chromium-musl-arm-elf_auxv_t.patch create mode 100644 srcpkgs/qt6-webengine/patches/0900-cross-build-examples.patch create mode 100644 srcpkgs/qt6-webengine/template create mode 100644 srcpkgs/qt6-webengine/update diff --git a/common/shlibs b/common/shlibs index 282f0583d2b1..ac5ea3b46b3f 100644 --- a/common/shlibs +++ b/common/shlibs @@ -2094,6 +2094,13 @@ libQt6Positioning.so.6 qt6-location-6.2.0alpha_1 libQt6MultimediaWidgets.so.6 qt6-multimedia-6.3.1_1 libQt6MultimediaQuick.so.6 qt6-multimedia-6.3.1_1 libQt6Multimedia.so.6 qt6-multimedia-6.3.1_1 +libQt6WebEngineQuick.so.6 qt6-webengine-6.3.1_1 +libQt6PdfWidgets.so.6 qt6-webengine-6.3.1_1 +libQt6PdfQuick.so.6 qt6-webengine-6.3.1_1 +libQt6WebEngineCore.so.6 qt6-webengine-6.3.1_1 +libQt6Pdf.so.6 qt6-webengine-6.3.1_1 +libQt6WebEngineQuickDelegatesQml.so.6 qt6-webengine-6.3.1_1 +libQt6WebEngineWidgets.so.6 qt6-webengine-6.3.1_1 libnpth.so.0 npth-1.1_1 libnpupnp.so.9 libnpupnp-5.0.0_1 libglfw.so.3 glfw-3.0.4_1 diff --git a/srcpkgs/qt6-webengine-devel b/srcpkgs/qt6-webengine-devel new file mode 120000 index 000000000000..8e4d1b99c587 --- /dev/null +++ b/srcpkgs/qt6-webengine-devel @@ -0,0 +1 @@ +qt6-webengine \ No newline at end of file diff --git a/srcpkgs/qt6-webengine-examples b/srcpkgs/qt6-webengine-examples new file mode 120000 index 000000000000..8e4d1b99c587 --- /dev/null +++ b/srcpkgs/qt6-webengine-examples @@ -0,0 +1 @@ +qt6-webengine \ No newline at end of file diff --git a/srcpkgs/qt6-webengine/patches/0001-None-no-debug.patch b/srcpkgs/qt6-webengine/patches/0001-None-no-debug.patch new file mode 100644 index 000000000000..b221fdcd392f --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0001-None-no-debug.patch @@ -0,0 +1,11 @@ +--- qt6-webengine-6.4.2.orig/cmake/Functions.cmake ++++ qt6-webengine-6.4.2/cmake/Functions.cmake +@@ -820,6 +820,8 @@ macro(append_build_type_setup) + endif() + elseif(${config} STREQUAL "MinSizeRel") + list(APPEND gnArgArg is_debug=false symbol_level=0 optimize_for_size=true) ++ elseif(${config} STREQUAL "None") ++ list(APPEND gnArgArg is_debug=false symbol_level=0) + endif() + if(FEATURE_developer_build OR (${config} STREQUAL "Debug") OR QT_FEATURE_webengine_sanitizer) + list(APPEND gnArgArg diff --git a/srcpkgs/qt6-webengine/patches/0003-cross-hack.patch b/srcpkgs/qt6-webengine/patches/0003-cross-hack.patch new file mode 100644 index 000000000000..a3f0a5791406 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0003-cross-hack.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/core/api/CMakeLists.txt ++++ qt6-webengine-6.4.2/src/core/api/CMakeLists.txt +@@ -51,6 +51,7 @@ qt_internal_add_module(WebEngineCore + Qt::Gui + Qt::Network + Qt::Quick ++ X11 + ) + + set_target_properties(WebEngineCore PROPERTIES QTWEBENGINEPROCESS_NAME ${qtWebEngineProcessName}) diff --git a/srcpkgs/qt6-webengine/patches/0050-no-glibc-cmake-check.patch b/srcpkgs/qt6-webengine/patches/0050-no-glibc-cmake-check.patch new file mode 100644 index 000000000000..d9116dc5857e --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0050-no-glibc-cmake-check.patch @@ -0,0 +1,14 @@ +--- qt6-webengine-6.4.2.orig/configure.cmake ++++ qt6-webengine-6.4.2/configure.cmake +@@ -499,11 +499,6 @@ add_check_for_support( + ) + add_check_for_support( + MODULES QtWebEngine QtPdf +- CONDITION NOT LINUX OR TEST_glibc +- MESSAGE "A suitable version >= 2.17 of glibc is required." +-) +-add_check_for_support( +- MODULES QtWebEngine QtPdf + CONDITION NOT LINUX OR TEST_khr + MESSAGE "Build requires Khronos development headers for build - see mesa/libegl1-mesa-dev" + ) diff --git a/srcpkgs/qt6-webengine/patches/0100-chromium-revert-9d080c0.patch b/srcpkgs/qt6-webengine/patches/0100-chromium-revert-9d080c0.patch new file mode 100644 index 000000000000..adca364a4060 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0100-chromium-revert-9d080c0.patch @@ -0,0 +1,154 @@ +Revert 9d080c0934b848ee4a05013c78641e612fcc1e03 + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/config/sanitizers/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/config/sanitizers/BUILD.gn +@@ -271,11 +271,11 @@ config("asan_flags") { + if (is_asan) { + cflags += [ "-fsanitize=address" ] + if (is_win) { +- if (!defined(asan_win_blocklist_path)) { +- asan_win_blocklist_path = ++ if (!defined(asan_win_blacklist_path)) { ++ asan_win_blacklist_path = + rebase_path("//tools/memory/asan/blocklist_win.txt", root_build_dir) + } +- cflags += [ "-fsanitize-ignorelist=$asan_win_blocklist_path" ] ++ cflags += [ "-fsanitize-blacklist=$asan_win_blacklist_path" ] + } + } + } +@@ -305,13 +305,13 @@ config("link_shared_library") { + config("cfi_flags") { + cflags = [] + if (is_cfi && current_toolchain == default_toolchain) { +- if (!defined(cfi_ignorelist_path)) { +- cfi_ignorelist_path = ++ if (!defined(cfi_blacklist_path)) { ++ cfi_blacklist_path = + rebase_path("//tools/cfi/ignores.txt", root_build_dir) + } + cflags += [ + "-fsanitize=cfi-vcall", +- "-fsanitize-ignorelist=$cfi_ignorelist_path", ++ "-fsanitize-blacklist=$cfi_blacklist_path", + ] + + if (use_cfi_cast) { +@@ -408,14 +408,14 @@ config("msan_flags") { + if (is_msan) { + assert(is_linux || is_chromeos, + "msan only supported on linux x86_64/ChromeOS") +- if (!defined(msan_ignorelist_path)) { +- msan_ignorelist_path = +- rebase_path("//tools/msan/ignorelist.txt", root_build_dir) ++ if (!defined(msan_blacklist_path)) { ++ msan_blacklist_path = ++ rebase_path("//tools/msan/blacklist.txt", root_build_dir) + } + cflags = [ + "-fsanitize=memory", + "-fsanitize-memory-track-origins=$msan_track_origins", +- "-fsanitize-ignorelist=$msan_ignorelist_path", ++ "-fsanitize-blacklist=$msan_blacklist_path", + ] + } + } +@@ -423,13 +423,13 @@ config("msan_flags") { + config("tsan_flags") { + if (is_tsan) { + assert(is_linux || is_chromeos, "tsan only supported on linux x86_64") +- if (!defined(tsan_ignorelist_path)) { +- tsan_ignorelist_path = ++ if (!defined(tsan_blacklist_path)) { ++ tsan_blacklist_path = + rebase_path("//tools/memory/tsan_v2/ignores.txt", root_build_dir) + } + cflags = [ + "-fsanitize=thread", +- "-fsanitize-ignorelist=$tsan_ignorelist_path", ++ "-fsanitize-blacklist=$tsan_blacklist_path", + ] + } + } +@@ -437,8 +437,8 @@ config("tsan_flags") { + config("ubsan_flags") { + cflags = [] + if (is_ubsan) { +- if (!defined(ubsan_ignorelist_path)) { +- ubsan_ignorelist_path = ++ if (!defined(ubsan_blacklist_path)) { ++ ubsan_blacklist_path = + rebase_path("//tools/ubsan/ignorelist.txt", root_build_dir) + } + cflags += [ +@@ -455,7 +455,7 @@ config("ubsan_flags") { + "-fsanitize=signed-integer-overflow", + "-fsanitize=unreachable", + "-fsanitize=vla-bound", +- "-fsanitize-ignorelist=$ubsan_ignorelist_path", ++ "-fsanitize-blacklist=$ubsan_blacklist_path", + ] + if (!is_clang) { + # These exposes too much illegal C++14 code to compile on anything stricter than clang: +@@ -496,8 +496,8 @@ config("ubsan_no_recover") { + + config("ubsan_security_flags") { + if (is_ubsan_security) { +- if (!defined(ubsan_security_ignorelist_path)) { +- ubsan_security_ignorelist_path = ++ if (!defined(ubsan_security_blacklist_path)) { ++ ubsan_security_blacklist_path = + rebase_path("//tools/ubsan/security_ignorelist.txt", root_build_dir) + } + cflags = [ +@@ -505,7 +505,7 @@ config("ubsan_security_flags") { + "-fsanitize=shift", + "-fsanitize=signed-integer-overflow", + "-fsanitize=vla-bound", +- "-fsanitize-ignorelist=$ubsan_security_ignorelist_path", ++ "-fsanitize-blacklist=$ubsan_security_blacklist_path", + ] + } + } +@@ -518,13 +518,13 @@ config("ubsan_null_flags") { + + config("ubsan_vptr_flags") { + if (is_ubsan_vptr) { +- if (!defined(ubsan_vptr_ignorelist_path)) { +- ubsan_vptr_ignorelist_path = ++ if (!defined(ubsan_vptr_blacklist_path)) { ++ ubsan_vptr_blacklist_path = + rebase_path("//tools/ubsan/vptr_ignorelist.txt", root_build_dir) + } + cflags = [ + "-fsanitize=vptr", +- "-fsanitize-ignorelist=$ubsan_vptr_ignorelist_path", ++ "-fsanitize-blacklist=$ubsan_vptr_blacklist_path", + ] + if (!is_clang) { + # Clang specific flag: +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build_overrides/build.gni ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build_overrides/build.gni +@@ -43,15 +43,15 @@ declare_args() { + # Allows different projects to specify their own suppression/ignore lists for + # sanitizer tools. + # asan_suppressions_file = "path/to/asan_suppressions.cc" +-# asan_win_ignorelist_path = "path/to/asan/blocklist_win.txt" ++# asan_win_blacklist_path = "path/to/asan/blocklist_win.txt" + # lsan_suppressions_file = "path/to/lsan_suppressions.cc" + # tsan_suppressions_file = "path/to/tsan_suppressions.cc" +-# tsan_ignorelist_path = "path/to/tsan/ignores.txt" +-# msan_ignorelist_path = "path/to/msan/ignorelist.txt" +-# ubsan_ignorelist_path = "path/to/ubsan/ignorelist.txt" +-# ubsan_vptr_ignorelist_path = "path/to/ubsan/vptr_ignorelist.txt" +-# ubsan_security_ignorelist_path = "path/to/ubsan/security_ignorelist.txt" +-# cfi_ignorelist_path = "path/to/cfi/ignores.txt" ++# tsan_blacklist_path = "path/to/tsan/ignores.txt" ++# msan_blacklist_path = "path/to/msan/blacklist.txt" ++# ubsan_blacklist_path = "path/to/ubsan/blacklist.txt" ++# ubsan_vptr_blacklist_path = "path/to/ubsan/vptr_blacklist.txt" ++# ubsan_security_blacklist_path = "path/to/ubsan/security_blacklist.txt" ++# cfi_blacklist_path = "path/to/cfi/ignores.txt" + + if (host_os == "mac" || is_apple) { + # Needed for is_apple when targeting macOS or iOS, independent of host. diff --git a/srcpkgs/qt6-webengine/patches/0101-chromium-102-fenced_frame_utils-include.patch b/srcpkgs/qt6-webengine/patches/0101-chromium-102-fenced_frame_utils-include.patch new file mode 100644 index 000000000000..f41c7984840d --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0101-chromium-102-fenced_frame_utils-include.patch @@ -0,0 +1,20 @@ +From 7c135a291184b59a59643ed6a8c40b4405ac0175 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann +Date: Wed, 27 Apr 2022 16:01:01 +0000 +Subject: [PATCH] IWYU: add cstring for std::strlen in fenced_frame_utils + +--- + third_party/blink/common/fenced_frame/fenced_frame_utils.cc | 2 ++ + 1 file changed, 2 insertions(+) + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/blink/common/fenced_frame/fenced_frame_utils.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/blink/common/fenced_frame/fenced_frame_utils.cc +@@ -6,6 +6,8 @@ + + #include + ++#include ++ + #include "base/guid.h" + #include "base/strings/string_util.h" + diff --git a/srcpkgs/qt6-webengine/patches/0102-chromium-102-regex_pattern-array.patch b/srcpkgs/qt6-webengine/patches/0102-chromium-102-regex_pattern-array.patch new file mode 100644 index 000000000000..420ef941a386 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0102-chromium-102-regex_pattern-array.patch @@ -0,0 +1,14 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/components/autofill/core/browser/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/components/autofill/core/browser/BUILD.gn +@@ -34,6 +34,11 @@ action("regex_patterns_inl_h") { + } + + jumbo_static_library("browser") { ++ if (is_clang) { ++ cflags = [ ++ "-fbracket-depth=1000", ++ ] ++ } + sources = [ + "address_normalization_manager.cc", + "address_normalization_manager.h", diff --git a/srcpkgs/qt6-webengine/patches/0103-chromium-i686-vaapi-fpermissive.patch b/srcpkgs/qt6-webengine/patches/0103-chromium-i686-vaapi-fpermissive.patch new file mode 100644 index 000000000000..708d567a04dc --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0103-chromium-i686-vaapi-fpermissive.patch @@ -0,0 +1,23 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/media/gpu/vaapi/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/gpu/vaapi/BUILD.gn +@@ -14,6 +14,12 @@ import("//ui/gl/features.gni") + assert(is_linux || is_chromeos) + assert(use_vaapi) + ++config("vaapi_permissive") { ++ if (target_cpu == "x86") { ++ cflags = [ "-fpermissive" ] ++ } ++} ++ + generate_stubs("libva_stubs") { + extra_header = "va_stub_header.fragment" + sigs = [ "va.sigs" ] +@@ -89,6 +95,7 @@ source_set("vaapi") { + configs += [ + "//build/config/linux/libva", + "//third_party/libvpx:libvpx_config", ++ ":vaapi_permissive", + ] + + deps = [ diff --git a/srcpkgs/qt6-webengine/patches/0104-chromium-libxml-unbundle.patch b/srcpkgs/qt6-webengine/patches/0104-chromium-libxml-unbundle.patch new file mode 100644 index 000000000000..baca484abc4a --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0104-chromium-libxml-unbundle.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/linux/unbundle/libxml.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/linux/unbundle/libxml.gn +@@ -19,6 +19,7 @@ static_library("libxml_utils") { + ":xml_reader", + ":xml_writer", + "//base/test:test_support", ++ "//services/data_decoder:lib", + "//services/data_decoder:xml_parser_fuzzer_deps", + ] + sources = [ diff --git a/srcpkgs/qt6-webengine/patches/0105-chromium-revert-drop-of-system-java.patch b/srcpkgs/qt6-webengine/patches/0105-chromium-revert-drop-of-system-java.patch new file mode 100644 index 000000000000..d6abf7adcabc --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0105-chromium-revert-drop-of-system-java.patch @@ -0,0 +1,15 @@ +This was dropped for some reason in 6951c37cecd05979b232a39e5c10e6346a0f74ef +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/closure_compiler/compiler.py ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/closure_compiler/compiler.py +@@ -13,8 +13,9 @@ import subprocess + + + _CURRENT_DIR = os.path.join(os.path.dirname(__file__)) +-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") +-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds" ++_JAVA_BIN = "java" ++_JDK_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java") ++_JAVA_PATH = _JDK_PATH if os.path.isfile(_JDK_PATH) else _JAVA_BIN + + class Compiler(object): + """Runs the Closure compiler on given source files to typecheck them diff --git a/srcpkgs/qt6-webengine/patches/0106-chromium-system-nodejs.patch b/srcpkgs/qt6-webengine/patches/0106-chromium-system-nodejs.patch new file mode 100644 index 000000000000..1648f764ea19 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0106-chromium-system-nodejs.patch @@ -0,0 +1,29 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/node/node.py ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/node/node.py +@@ -18,25 +18,7 @@ def which(cmd): + return None + + def GetBinaryPath(): +- if sys.platform == 'win32': +- nodejs = which('node.exe') +- if nodejs: +- return nodejs +- else: +- nodejs = which('nodejs') +- if nodejs: +- return nodejs +- nodejs = which('node') +- if nodejs: +- return nodejs +- +- darwin_name = ('node-darwin-arm64' if platform.machine() == 'arm64' else +- 'node-darwin-x64') +- return os_path.join(os_path.dirname(__file__), *{ +- 'Darwin': ('mac', darwin_name, 'bin', 'node'), +- 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'), +- 'Windows': ('win', 'node.exe'), +- }[platform.system()]) ++ return "/usr/bin/node" + + + def RunNode(cmd_parts, stdout=None): diff --git a/srcpkgs/qt6-webengine/patches/0107-chromium-cross-build.patch b/srcpkgs/qt6-webengine/patches/0107-chromium-cross-build.patch new file mode 100644 index 000000000000..44954dfbb1e5 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0107-chromium-cross-build.patch @@ -0,0 +1,65 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/config/compiler/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/config/compiler/BUILD.gn +@@ -58,6 +58,10 @@ if (!is_clang) { + } + + declare_args() { ++ is_musl = false ++} ++ ++declare_args() { + # Normally, Android builds are lightly optimized, even for debug builds, to + # keep binary size down. Setting this flag to true disables such optimization + android_full_debug = false +@@ -970,8 +974,13 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm64") { + if (is_clang && !is_android && !is_nacl && !is_fuchsia) { +- cflags += [ "--target=aarch64-linux-gnu" ] +- ldflags += [ "--target=aarch64-linux-gnu" ] ++ if (is_musl) { ++ cflags += [ "--target=aarch64-linux-musl" ] ++ ldflags += [ "--target=aarch64-linux-musl" ] ++ } else { ++ cflags += [ "--target=aarch64-linux-gnu" ] ++ ldflags += [ "--target=aarch64-linux-gnu" ] ++ } + } + if (is_android) { + # Outline atomics crash on Exynos 9810. http://crbug.com/1272795 +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/toolchain/linux/unbundle/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/toolchain/linux/unbundle/BUILD.gn +@@ -39,3 +39,22 @@ gcc_toolchain("host") { + current_os = current_os + } + } ++ ++gcc_toolchain("v8_snapshot_cross") { ++ cc = getenv("BUILD_CC") ++ cxx = getenv("BUILD_CXX") ++ ar = getenv("BUILD_AR") ++ nm = getenv("BUILD_NM") ++ ld = cxx ++ ++ extra_cflags = getenv("BUILD_CFLAGS") ++ extra_cppflags = getenv("BUILD_CPPFLAGS") ++ extra_cxxflags = getenv("BUILD_CXXFLAGS") ++ extra_ldflags = getenv("BUILD_LDFLAGS") ++ ++ toolchain_args = { ++ current_cpu = host_cpu ++ current_os = host_os ++ v8_current_cpu = target_cpu ++ } ++} +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/config/linux/pkg_config.gni ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/config/linux/pkg_config.gni +@@ -92,7 +92,7 @@ template("pkg_config") { + assert(defined(invoker.packages), + "Variable |packages| must be defined to be a list in pkg_config.") + config(target_name) { +- if (host_toolchain == current_toolchain) { ++ if (current_cpu != target_cpu) { + args = common_pkg_config_args + host_pkg_config_args + invoker.packages + } else { + args = common_pkg_config_args + pkg_config_args + invoker.packages diff --git a/srcpkgs/qt6-webengine/patches/0108-chromium-cursed^Uscoped_file.patch b/srcpkgs/qt6-webengine/patches/0108-chromium-cursed^Uscoped_file.patch new file mode 100644 index 000000000000..dd31da9790ad --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0108-chromium-cursed^Uscoped_file.patch @@ -0,0 +1,18 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/files/scoped_file_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/files/scoped_file_linux.cc +@@ -77,15 +77,3 @@ bool IsFDOwned(int fd) { + } + + } // namespace base +- +-extern "C" { +- +-int __close(int); +- +-__attribute__((visibility("default"), noinline)) int close(int fd) { +- if (base::IsFDOwned(fd) && g_is_ownership_enforced) +- CrashOnFdOwnershipViolation(); +- return __close(fd); +-} +- +-} // extern "C" diff --git a/srcpkgs/qt6-webengine/patches/0109-chromium-aarch64-musl-memory-tagging.patch b/srcpkgs/qt6-webengine/patches/0109-chromium-aarch64-musl-memory-tagging.patch new file mode 100644 index 000000000000..0ff2a2a51aaa --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0109-chromium-aarch64-musl-memory-tagging.patch @@ -0,0 +1,29 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/allocator/partition_allocator/tagging.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/allocator/partition_allocator/tagging.cc +@@ -28,13 +28,25 @@ + #endif + #endif + +-#ifndef HAS_PR_MTE_MACROS ++#ifndef PR_MTE_TCF_SHIFT + #define PR_MTE_TCF_SHIFT 1 ++#endif ++#ifndef PR_MTE_TCF_NONE + #define PR_MTE_TCF_NONE (0UL << PR_MTE_TCF_SHIFT) ++#endif ++#ifndef PR_MTE_TCF_SYNC + #define PR_MTE_TCF_SYNC (1UL << PR_MTE_TCF_SHIFT) ++#endif ++#ifndef PR_MTE_TCF_ASYNC + #define PR_MTE_TCF_ASYNC (2UL << PR_MTE_TCF_SHIFT) ++#endif ++#ifndef PR_MTE_TCF_MASK + #define PR_MTE_TCF_MASK (3UL << PR_MTE_TCF_SHIFT) ++#endif ++#ifndef PR_MTE_TAG_SHIFT + #define PR_MTE_TAG_SHIFT 3 ++#endif ++#ifndef PR_MTE_TAG_MASK + #define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT) + #endif + #endif diff --git a/srcpkgs/qt6-webengine/patches/0110-chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch b/srcpkgs/qt6-webengine/patches/0110-chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch new file mode 100644 index 000000000000..5558c54cf802 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0110-chromium-fix-missing-TEMP_FAILURE_RETRY-macro.patch @@ -0,0 +1,21 @@ +This macro is defined in glibc, but not musl. + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/linux/suid/process_util.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/linux/suid/process_util.h +@@ -12,6 +12,16 @@ + #include + #include + ++// Some additional functions ++#if !defined(TEMP_FAILURE_RETRY) ++# define TEMP_FAILURE_RETRY(expression) \ ++ (__extension__ \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; })) ++#endif ++ + // This adjusts /proc/process/oom_score_adj so the Linux OOM killer + // will prefer certain process types over others. The range for the + // adjustment is [-1000, 1000], with [0, 1000] being user accessible. diff --git a/srcpkgs/qt6-webengine/patches/0111-chromium-cstdint.patch b/srcpkgs/qt6-webengine/patches/0111-chromium-cstdint.patch new file mode 100644 index 000000000000..f5787621b579 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0111-chromium-cstdint.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h +@@ -3,6 +3,7 @@ + + #include + ++#include + #include + + #include "quiche/common/platform/api/quiche_export.h" diff --git a/srcpkgs/qt6-webengine/patches/0112-chromium-unistd.h.patch b/srcpkgs/qt6-webengine/patches/0112-chromium-unistd.h.patch new file mode 100644 index 000000000000..bb242a808ace --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0112-chromium-unistd.h.patch @@ -0,0 +1,10 @@ +--- a/src/3rdparty/chromium/sandbox/linux/services/credentials.h ++++ b/src/3rdparty/chromium/sandbox/linux/services/credentials.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + + #include "sandbox/linux/system_headers/capability.h" + #include "sandbox/sandbox_export.h" diff --git a/srcpkgs/qt6-webengine/patches/0113-chromium-pthread-stacksize.patch b/srcpkgs/qt6-webengine/patches/0113-chromium-pthread-stacksize.patch new file mode 100644 index 000000000000..384fd0af186d --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0113-chromium-pthread-stacksize.patch @@ -0,0 +1,16 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/threading/platform_thread_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/threading/platform_thread_linux.cc +@@ -437,8 +437,13 @@ void TerminateOnThread() {} + + size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) { + #if !defined(THREAD_SANITIZER) ++#if defined(__GLIBC__) + return 0; + #else ++ // musl libcs default is too small, use 8mb like glibc ++ return (1 << 23); ++#endif ++#else + // ThreadSanitizer bloats the stack heavily. Evidence has been that the + // default stack size isn't enough for some browser tests. + return 2 * (1 << 23); // 2 times 8192K (the default stack size on Linux). diff --git a/srcpkgs/qt6-webengine/patches/0114-do-not-narrow-int.patch b/srcpkgs/qt6-webengine/patches/0114-do-not-narrow-int.patch new file mode 100644 index 000000000000..2cd6a07382ac --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0114-do-not-narrow-int.patch @@ -0,0 +1,53 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/files/file_util_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/files/file_util_linux.cc +@@ -23,14 +23,14 @@ bool GetFileSystemType(const FilePath& p + + // Not all possible |statfs_buf.f_type| values are in linux/magic.h. + // Missing values are copied from the statfs man page. +- switch (statfs_buf.f_type) { ++ switch (static_cast(statfs_buf.f_type)) { + case 0: + *type = FILE_SYSTEM_0; + break; + case EXT2_SUPER_MAGIC: // Also ext3 and ext4 + case MSDOS_SUPER_MAGIC: + case REISERFS_SUPER_MAGIC: +- case static_cast(BTRFS_SUPER_MAGIC): ++ case BTRFS_SUPER_MAGIC: + case 0x5346544E: // NTFS + case 0x58465342: // XFS + case 0x3153464A: // JFS +@@ -40,14 +40,14 @@ bool GetFileSystemType(const FilePath& p + *type = FILE_SYSTEM_NFS; + break; + case SMB_SUPER_MAGIC: +- case static_cast(0xFF534D42): // CIFS ++ case 0xFF534D42: // CIFS + *type = FILE_SYSTEM_SMB; + break; + case CODA_SUPER_MAGIC: + *type = FILE_SYSTEM_CODA; + break; +- case static_cast(HUGETLBFS_MAGIC): +- case static_cast(RAMFS_MAGIC): ++ case HUGETLBFS_MAGIC: ++ case RAMFS_MAGIC: + case TMPFS_MAGIC: + *type = FILE_SYSTEM_MEMORY; + break; +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/system/sys_info_posix.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/system/sys_info_posix.cc +@@ -100,10 +100,10 @@ bool IsStatsZeroIfUnlimited(const base:: + if (HANDLE_EINTR(statfs(path.value().c_str(), &stats)) != 0) + return false; + +- switch (stats.f_type) { ++ switch (static_cast(stats.f_type)) { + case TMPFS_MAGIC: +- case static_cast(HUGETLBFS_MAGIC): +- case static_cast(RAMFS_MAGIC): ++ case HUGETLBFS_MAGIC: ++ case RAMFS_MAGIC: + return true; + } + return false; diff --git a/srcpkgs/qt6-webengine/patches/0115-chromium-no-canonicalize-file-name.patch b/srcpkgs/qt6-webengine/patches/0115-chromium-no-canonicalize-file-name.patch new file mode 100644 index 000000000000..556784b013de --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0115-chromium-no-canonicalize-file-name.patch @@ -0,0 +1,12 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/nasm/config/config-linux.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/nasm/config/config-linux.h +@@ -139,7 +139,9 @@ + #define HAVE_ACCESS 1 + + /* Define to 1 if you have the `canonicalize_file_name' function. */ ++#ifdef __GLIBC__ + #define HAVE_CANONICALIZE_FILE_NAME 1 ++#endif + + /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */ + /* #undef HAVE_CPU_TO_LE16 */ diff --git a/srcpkgs/qt6-webengine/patches/0116-chromium-musl-get-thread-name.patch b/srcpkgs/qt6-webengine/patches/0116-chromium-musl-get-thread-name.patch new file mode 100644 index 000000000000..d485385cbb62 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0116-chromium-musl-get-thread-name.patch @@ -0,0 +1,22 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/thread_utils.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/thread_utils.h +@@ -30,7 +30,8 @@ + #include + #endif + +-#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ++#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ ++ (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !defined(__GLIBC__)) + #include + #endif + +@@ -58,7 +59,8 @@ inline bool MaybeSetThreadName(const std + + inline bool GetThreadName(std::string& out_result) { + char buf[16] = {}; +-#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ++#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ ++ (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !defined(__GLIBC__)) + if (prctl(PR_GET_NAME, buf) != 0) + return false; + #else diff --git a/srcpkgs/qt6-webengine/patches/0117-chromium-musl-resolver.patch b/srcpkgs/qt6-webengine/patches/0117-chromium-musl-resolver.patch new file mode 100644 index 000000000000..176524adc083 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0117-chromium-musl-resolver.patch @@ -0,0 +1,64 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/net/dns/public/scoped_res_state.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/net/dns/public/scoped_res_state.cc +@@ -13,7 +13,7 @@ + namespace net { + + ScopedResState::ScopedResState() { +-#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + // Note: res_ninit in glibc always returns 0 and sets RES_INIT. + // res_init behaves the same way. + memset(&_res, 0, sizeof(_res)); +@@ -25,7 +25,7 @@ ScopedResState::ScopedResState() { + } + + ScopedResState::~ScopedResState() { +-#if !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) ++#if !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) && !(BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + + // Prefer res_ndestroy where available. + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD) +@@ -34,7 +34,7 @@ ScopedResState::~ScopedResState() { + res_nclose(&res_); + #endif // BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD) + +-#endif // !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) ++#endif // !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) && !(BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + } + + bool ScopedResState::IsValid() const { +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/net/dns/host_resolver_manager.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/net/dns/host_resolver_manager.cc +@@ -3158,7 +3158,7 @@ HostResolverManager::HostResolverManager + if (system_dns_config_notifier_) + system_dns_config_notifier_->AddObserver(this); + #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \ +- !BUILDFLAG(IS_ANDROID) ++ !BUILDFLAG(IS_ANDROID) && !(BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + EnsureDnsReloaderInit(); + #endif + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/net/dns/dns_reloader.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/net/dns/dns_reloader.cc +@@ -7,7 +7,8 @@ + #include "build/build_config.h" + + #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \ +- !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) ++ !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) && \ ++ !(BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + + #include + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/net/dns/host_resolver_proc.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/net/dns/host_resolver_proc.cc +@@ -192,7 +192,8 @@ int SystemHostResolverCall(const std::st + base::BlockingType::WILL_BLOCK); + + #if BUILDFLAG(IS_POSIX) && \ +- !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID)) ++ !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID) || \ ++ (BUILDFLAG(IS_LINUX) && !defined(__GLIBC__))) + DnsReloaderMaybeReload(); + #endif + auto [ai, err, os_error] = AddressInfo::Get(host, hints, nullptr, network); diff --git a/srcpkgs/qt6-webengine/patches/0119-chromium-musl-stack-utils.patch b/srcpkgs/qt6-webengine/patches/0119-chromium-musl-stack-utils.patch new file mode 100644 index 000000000000..548a1dec76b4 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0119-chromium-musl-stack-utils.patch @@ -0,0 +1,20 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc +@@ -29,7 +29,7 @@ size_t GetUnderestimatedStackSize() { + // FIXME: On Mac OSX and Linux, this method cannot estimate stack size + // correctly for the main thread. + +-#elif defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ + BUILDFLAG(IS_FUCHSIA) + // pthread_getattr_np() can fail if the thread is not invoked by + // pthread_create() (e.g., the main thread of blink_unittests). +@@ -97,7 +97,7 @@ size_t GetUnderestimatedStackSize() { + } + + void* GetStackStart() { +-#if defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ + BUILDFLAG(IS_FUCHSIA) + pthread_attr_t attr; + int error; diff --git a/srcpkgs/qt6-webengine/patches/0120-chromium-libc-malloc.patch b/srcpkgs/qt6-webengine/patches/0120-chromium-libc-malloc.patch new file mode 100644 index 000000000000..fa32830760cd --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0120-chromium-libc-malloc.patch @@ -0,0 +1,34 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/process/memory_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/process/memory_linux.cc +@@ -18,6 +18,13 @@ + #include "base/threading/thread_restrictions.h" + #include "build/build_config.h" + ++#if defined(LIBC_GLIBC) ++extern "C" { ++extern void *__libc_malloc(size_t size); ++extern void *__libc_free(void *ptr); ++} ++#endif ++ + namespace base { + + namespace { +@@ -112,7 +119,7 @@ bool UncheckedMalloc(size_t size, void** + defined(TOOLKIT_QT) || !defined(LIBC_GLIBC) + *result = malloc(size); + #elif defined(LIBC_GLIBC) +- *result = __libc_malloc(size); ++ *result = ::__libc_malloc(size); + #endif + return *result != nullptr; + } +@@ -123,7 +130,7 @@ void UncheckedFree(void* ptr) { + #elif defined(MEMORY_TOOL_REPLACES_ALLOCATOR) || !defined(LIBC_GLIBC) || defined(TOOLKIT_QT) + free(ptr); + #elif defined(LIBC_GLIBC) +- __libc_free(ptr); ++ ::__libc_free(ptr); + #endif + } + diff --git a/srcpkgs/qt6-webengine/patches/0121-chromium-musl-stat.patch b/srcpkgs/qt6-webengine/patches/0121-chromium-musl-stat.patch new file mode 100644 index 000000000000..8c8c4b863b64 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0121-chromium-musl-stat.patch @@ -0,0 +1,12 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/files/file.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/files/file.h +@@ -19,7 +19,8 @@ + #include "build/build_config.h" + + #if BUILDFLAG(IS_BSD) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_NACL) || \ +- BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21) ++ BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21) || \ ++ (BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + struct stat; + namespace base { + typedef struct stat stat_wrapper_t; diff --git a/srcpkgs/qt6-webengine/patches/0122-chromium-condition_var.patch b/srcpkgs/qt6-webengine/patches/0122-chromium-condition_var.patch new file mode 100644 index 000000000000..6c41312e516b --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0122-chromium-condition_var.patch @@ -0,0 +1,22 @@ +Use monotonic clock for pthread_cond_timedwait with musl too. + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/v8/src/base/platform/condition-variable.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/v8/src/base/platform/condition-variable.cc +@@ -20,7 +20,7 @@ namespace base { + + ConditionVariable::ConditionVariable() { + #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ +- (V8_OS_LINUX && V8_LIBC_GLIBC)) ++ V8_OS_LINUX) + // On Free/Net/OpenBSD and Linux with glibc we can change the time + // source for pthread_cond_timedwait() to use the monotonic clock. + pthread_condattr_t attr; +@@ -96,7 +96,7 @@ bool ConditionVariable::WaitFor(Mutex* m + &native_handle_, &mutex->native_handle(), &ts); + #else + #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ +- (V8_OS_LINUX && V8_LIBC_GLIBC)) ++ V8_OS_LINUX) + // On Free/Net/OpenBSD and Linux with glibc we can change the time + // source for pthread_cond_timedwait() to use the monotonic clock. + result = clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-execinfo.patch b/srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-execinfo.patch new file mode 100644 index 000000000000..25fae7bde112 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-execinfo.patch @@ -0,0 +1,75 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/debug/stack_trace_posix.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/debug/stack_trace_posix.cc +@@ -30,7 +30,7 @@ + #if !defined(USE_SYMBOLIZE) + #include + #endif +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + #include + #endif + +@@ -97,7 +97,7 @@ void DemangleSymbols(std::string* text) + // Note: code in this function is NOT async-signal safe (std::string uses + // malloc internally). + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + std::string::size_type search_from = 0; + while (search_from < text->size()) { + // Look for the start of a mangled symbol, from search_from. +@@ -144,7 +144,7 @@ class BacktraceOutputHandler { + virtual ~BacktraceOutputHandler() = default; + }; + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + void OutputPointer(void* pointer, BacktraceOutputHandler* handler) { + // This should be more than enough to store a 64-bit number in hex: + // 16 hex digits + 1 for null-terminator. +@@ -868,7 +868,7 @@ size_t CollectStackTrace(void** trace, s + // If we do not have unwind tables, then try tracing using frame pointers. + return base::debug::TraceStackFramePointers(const_cast(trace), + count, 0); +-#elif !defined(__UCLIBC__) && !defined(_AIX) ++#elif defined(__GLIBC__) && !defined(_AIX) + // Though the backtrace API man page does not list any possible negative + // return values, we take no chance. + return base::saturated_cast(backtrace(trace, count)); +@@ -881,13 +881,13 @@ void StackTrace::PrintWithPrefix(const c + // NOTE: This code MUST be async-signal safe (it's used by in-process + // stack dumping signal handler). NO malloc or stdio is allowed here. + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + PrintBacktraceOutputHandler handler; + ProcessBacktrace(trace_, count_, prefix_string, &handler); + #endif + } + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + void StackTrace::OutputToStreamWithPrefix(std::ostream* os, + const char* prefix_string) const { + StreamBacktraceOutputHandler handler(os); +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/v8/src/codegen/external-reference-table.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/v8/src/codegen/external-reference-table.cc +@@ -12,7 +12,9 @@ + + #if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) + #define SYMBOLIZE_FUNCTION ++#if defined(__GLIBC__) + #include ++#endif + + #include + +@@ -103,7 +105,7 @@ void ExternalReferenceTable::Init(Isolat + } + + const char* ExternalReferenceTable::ResolveSymbol(void* address) { +-#ifdef SYMBOLIZE_FUNCTION ++#if defined(SYMBOLIZE_FUNCTION) && defined(__GLIBC__) + char** names = backtrace_symbols(&address, 1); + const char* name = names[0]; + // The array of names is malloc'ed. However, each name string is static diff --git a/srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-getcontext.patch b/srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-getcontext.patch new file mode 100644 index 000000000000..46522ee0a066 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0123-chromium-musl-no-getcontext.patch @@ -0,0 +1,27 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc +@@ -490,7 +490,9 @@ bool ExceptionHandler::SimulateSignalDel + siginfo.si_code = SI_USER; + siginfo.si_pid = getpid(); + ucontext_t context; ++#if defined(__GLIBC__) + getcontext(&context); ++#endif + return HandleSignal(sig, &siginfo, &context); + } + +@@ -675,9 +677,14 @@ bool ExceptionHandler::WriteMinidump() { + sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0); + + CrashContext context; ++ ++#if defined(__GLIBC__) + int getcontext_result = getcontext(&context.context); + if (getcontext_result) + return false; ++#else ++ return false; ++#endif + + #if defined(__i386__) + // In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved diff --git a/srcpkgs/qt6-webengine/patches/0124-chromium-enable-i686.patch b/srcpkgs/qt6-webengine/patches/0124-chromium-enable-i686.patch new file mode 100644 index 000000000000..11d8de7c23f8 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0124-chromium-enable-i686.patch @@ -0,0 +1,17 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/BUILD.gn +@@ -1537,14 +1537,6 @@ if (!is_ios && !use_qt) { + } + } + +-# TODO(cassew): Add more OS's that don't support x86. +-is_valid_x86_target = +- target_os != "ios" && target_os != "mac" && +- (target_os != "linux" || use_libfuzzer || !build_with_chromium) +-assert( +- is_valid_x86_target || target_cpu != "x86", +- "'target_cpu=x86' is not supported for 'target_os=$target_os'. Consider omitting 'target_cpu' (default) or using 'target_cpu=x64' instead.") +- + group("chromium_builder_perf") { + testonly = true + diff --git a/srcpkgs/qt6-webengine/patches/0125-chromium-remove-strip_binary.patch b/srcpkgs/qt6-webengine/patches/0125-chromium-remove-strip_binary.patch new file mode 100644 index 000000000000..115e4492a2be --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0125-chromium-remove-strip_binary.patch @@ -0,0 +1,32 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn +@@ -335,11 +335,7 @@ source_set("lib") { + } + } + +-if (is_linux) { +- chromedriver_output = "chromedriver.unstripped" +-} else { +- chromedriver_output = "chromedriver" +-} ++chromedriver_output = "chromedriver" + + executable("$chromedriver_output") { + testonly = true +@@ -361,16 +357,6 @@ executable("$chromedriver_output") { + } + } + +-if (is_linux) { +- strip_binary("chromedriver") { +- testonly = true +- binary_input = "$root_out_dir/$chromedriver_output" +- symbol_output = "$root_out_dir/chromedriver.debug" +- stripped_binary_output = "$root_out_dir/chromedriver" +- deps = [ ":$chromedriver_output" ] +- } +-} +- + python_library("chromedriver_py_tests") { + testonly = true + deps = [ diff --git a/srcpkgs/qt6-webengine/patches/0126-chromium-no-cdefs.patch b/srcpkgs/qt6-webengine/patches/0126-chromium-no-cdefs.patch new file mode 100644 index 000000000000..90faa3d664d0 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0126-chromium-no-cdefs.patch @@ -0,0 +1,39 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h +@@ -17,8 +17,6 @@ + + #include_next + +-#include +- + // https://sourceware.org/bugzilla/show_bug.cgi?id=22433 + #if !defined(PTRACE_GET_THREAD_AREA) && !defined(PT_GET_THREAD_AREA) && \ + defined(__GLIBC__) +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/libsync/src/include/sync/sync.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/libsync/src/include/sync/sync.h +@@ -19,12 +19,13 @@ + #ifndef __SYS_CORE_SYNC_H + #define __SYS_CORE_SYNC_H + +-#include + #include + + #include + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + struct sync_legacy_merge_data { + int32_t fd2; +@@ -158,6 +159,8 @@ struct sync_pt_info *sync_pt_info(struct + struct sync_pt_info *itr); + void sync_fence_info_free(struct sync_fence_info_data *info); + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif /* __SYS_CORE_SYNC_H */ diff --git a/srcpkgs/qt6-webengine/patches/0128-chromium-sandbox-membarrier.patch b/srcpkgs/qt6-webengine/patches/0128-chromium-sandbox-membarrier.patch new file mode 100644 index 000000000000..2e1492c3f622 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0128-chromium-sandbox-membarrier.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +@@ -418,6 +418,7 @@ bool SyscallSets::IsAllowedProcessStartO + switch (sysno) { + case __NR_exit: + case __NR_exit_group: ++ case __NR_membarrier: + case __NR_wait4: + case __NR_waitid: + #if defined(__i386__) diff --git a/srcpkgs/qt6-webengine/patches/0129-chromium-sandbox-shed_getparam.patch b/srcpkgs/qt6-webengine/patches/0129-chromium-sandbox-shed_getparam.patch new file mode 100644 index 000000000000..80d91c77e8ba --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0129-chromium-sandbox-shed_getparam.patch @@ -0,0 +1,20 @@ +Allow SYS_sched_getparam and SYS_sched_getscheduler +musl uses them for pthread_getschedparam() + +source: https://git.alpinelinux.org/aports/commit/community/chromium?id=54af9f8ac24f52d382c5758e2445bf0206eff40e + +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -97,10 +97,10 @@ ResultExpr RendererProcessPolicy::Evalua + case __NR_sysinfo: + case __NR_times: + case __NR_uname: +- return Allow(); +- case __NR_sched_getaffinity: + case __NR_sched_getparam: + case __NR_sched_getscheduler: ++ return Allow(); ++ case __NR_sched_getaffinity: + case __NR_sched_setscheduler: + return RestrictSchedTarget(GetPolicyPid(), sysno); + case __NR_prlimit64: diff --git a/srcpkgs/qt6-webengine/patches/0150-chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch b/srcpkgs/qt6-webengine/patches/0150-chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch new file mode 100644 index 000000000000..e7f6048fbc1c --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0150-chromium-unbundle-ffmpeg-av_stream_get_first_dts.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/linux/unbundle/ffmpeg.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/linux/unbundle/ffmpeg.gn +@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") { + "libavformat", + "libavutil", + ] ++ defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ] + } + + buildflag_header("ffmpeg_features") { diff --git a/srcpkgs/qt6-webengine/patches/0151-chromium-unbundled-cross-toolchain.patch b/srcpkgs/qt6-webengine/patches/0151-chromium-unbundled-cross-toolchain.patch new file mode 100644 index 000000000000..746d2dfb9a7e --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0151-chromium-unbundled-cross-toolchain.patch @@ -0,0 +1,13 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/build/toolchain/linux/unbundle/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/build/toolchain/linux/unbundle/BUILD.gn +@@ -35,8 +35,8 @@ gcc_toolchain("host") { + extra_ldflags = getenv("BUILD_LDFLAGS") + + toolchain_args = { +- current_cpu = current_cpu +- current_os = current_os ++ current_cpu = host_cpu ++ current_os = host_os + } + } + diff --git a/srcpkgs/qt6-webengine/patches/0152-chromium-webrtc-size_t.patch b/srcpkgs/qt6-webengine/patches/0152-chromium-webrtc-size_t.patch new file mode 100644 index 000000000000..8f60204ff584 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0152-chromium-webrtc-size_t.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h +@@ -14,6 +14,7 @@ + #include + + #include ++#include + + namespace webrtc { + diff --git a/srcpkgs/qt6-webengine/patches/0153-chromium-webrtc-size_t.patch b/srcpkgs/qt6-webengine/patches/0153-chromium-webrtc-size_t.patch new file mode 100644 index 000000000000..3b5b7a3d53b9 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0153-chromium-webrtc-size_t.patch @@ -0,0 +1,16 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/angle/include/platform/PlatformMethods.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/angle/include/platform/PlatformMethods.h +@@ -222,11 +222,11 @@ inline void DefaultHistogramBoolean(Plat + using ProgramKeyType = std::array; + using CacheProgramFunc = void (*)(PlatformMethods *platform, + const ProgramKeyType &key, +- size_t programSize, ++ std::size_t programSize, + const uint8_t *programBytes); + inline void DefaultCacheProgram(PlatformMethods *platform, + const ProgramKeyType &key, +- size_t programSize, ++ std::size_t programSize, + const uint8_t *programBytes) + {} + diff --git a/srcpkgs/qt6-webengine/patches/0154-chromium-uit_t.patch b/srcpkgs/qt6-webengine/patches/0154-chromium-uit_t.patch new file mode 100644 index 000000000000..d13a31fee402 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0154-chromium-uit_t.patch @@ -0,0 +1,11 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/linux/services/credentials.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/linux/services/credentials.h +@@ -14,6 +14,8 @@ + #include + #include + ++#include ++ + #include "sandbox/linux/system_headers/capability.h" + #include "sandbox/sandbox_export.h" + diff --git a/srcpkgs/qt6-webengine/patches/0200-chromium-sndio.patch b/srcpkgs/qt6-webengine/patches/0200-chromium-sndio.patch new file mode 100644 index 000000000000..d769b531497b --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0200-chromium-sndio.patch @@ -0,0 +1,849 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/media/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/BUILD.gn +@@ -78,6 +78,9 @@ config("media_config") { + defines += [ "DLOPEN_PULSEAUDIO" ] + } + } ++ if (use_sndio) { ++ defines += [ "USE_SNDIO" ] ++ } + if (use_cras) { + defines += [ "USE_CRAS" ] + } +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/media/audio/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/BUILD.gn +@@ -245,6 +245,17 @@ source_set("audio") { + sources += [ "linux/audio_manager_linux.cc" ] + } + ++ if (use_sndio) { ++ libs += [ "sndio" ] ++ sources += [ ++ "sndio/audio_manager_sndio.cc", ++ "sndio/sndio_input.cc", ++ "sndio/sndio_input.h", ++ "sndio/sndio_output.cc", ++ "sndio/sndio_output.h" ++ ] ++ } ++ + if (use_alsa) { + libs += [ "asound" ] + sources += [ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/media/audio/linux/audio_manager_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/linux/audio_manager_linux.cc +@@ -25,6 +25,11 @@ + #include "media/audio/pulse/audio_manager_pulse.h" + #include "media/audio/pulse/pulse_util.h" + #endif ++#if defined(USE_SNDIO) ++#include "media/audio/sndio/audio_manager_sndio.h" ++#include "media/audio/sndio/sndio_input.h" ++#include "media/audio/sndio/sndio_output.h" ++#endif + + namespace media { + +--- /dev/null ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/sndio/audio_manager_sndio.cc +@@ -0,0 +1,148 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "media/audio/sndio/audio_manager_sndio.h" ++ ++#include "base/metrics/histogram_macros.h" ++#include "base/memory/ptr_util.h" ++#include "media/audio/audio_device_description.h" ++#include "media/audio/audio_output_dispatcher.h" ++#include "media/audio/sndio/sndio_input.h" ++#include "media/audio/sndio/sndio_output.h" ++#include "media/base/limits.h" ++#include "media/base/media_switches.h" ++ ++namespace media { ++ ++ ++// Maximum number of output streams that can be open simultaneously. ++static const int kMaxOutputStreams = 4; ++ ++// Default sample rate for input and output streams. ++static const int kDefaultSampleRate = 48000; ++ ++void AddDefaultDevice(AudioDeviceNames* device_names) { ++ DCHECK(device_names->empty()); ++ device_names->push_front(AudioDeviceName::CreateDefault()); ++} ++ ++bool AudioManagerSndio::HasAudioOutputDevices() { ++ return true; ++} ++ ++bool AudioManagerSndio::HasAudioInputDevices() { ++ return true; ++} ++ ++void AudioManagerSndio::GetAudioInputDeviceNames( ++ AudioDeviceNames* device_names) { ++ DCHECK(device_names->empty()); ++ AddDefaultDevice(device_names); ++} ++ ++void AudioManagerSndio::GetAudioOutputDeviceNames( ++ AudioDeviceNames* device_names) { ++ AddDefaultDevice(device_names); ++} ++ ++const char* AudioManagerSndio::GetName() { ++ return "SNDIO"; ++} ++ ++AudioParameters AudioManagerSndio::GetInputStreamParameters( ++ const std::string& device_id) { ++ static const int kDefaultInputBufferSize = 1024; ++ ++ int user_buffer_size = GetUserBufferSize(); ++ int buffer_size = user_buffer_size ? ++ user_buffer_size : kDefaultInputBufferSize; ++ ++ return AudioParameters( ++ AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, ++ kDefaultSampleRate, buffer_size); ++} ++ ++AudioManagerSndio::AudioManagerSndio(std::unique_ptr audio_thread, ++ AudioLogFactory* audio_log_factory) ++ : AudioManagerBase(std::move(audio_thread), ++ audio_log_factory) { ++ DLOG(WARNING) << "AudioManagerSndio"; ++ SetMaxOutputStreamsAllowed(kMaxOutputStreams); ++} ++ ++AudioManagerSndio::~AudioManagerSndio() { ++ Shutdown(); ++} ++ ++AudioOutputStream* AudioManagerSndio::MakeLinearOutputStream( ++ const AudioParameters& params, ++ const LogCallback& log_callback) { ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); ++ return MakeOutputStream(params); ++} ++ ++AudioOutputStream* AudioManagerSndio::MakeLowLatencyOutputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) { ++ DLOG_IF(ERROR, !device_id.empty()) << "Not implemented!"; ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); ++ return MakeOutputStream(params); ++} ++ ++AudioInputStream* AudioManagerSndio::MakeLinearInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) { ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); ++ return MakeInputStream(params); ++} ++ ++AudioInputStream* AudioManagerSndio::MakeLowLatencyInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) { ++ DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); ++ return MakeInputStream(params); ++} ++ ++AudioParameters AudioManagerSndio::GetPreferredOutputStreamParameters( ++ const std::string& output_device_id, ++ const AudioParameters& input_params) { ++ // TODO(tommi): Support |output_device_id|. ++ DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; ++ static const int kDefaultOutputBufferSize = 2048; ++ ++ ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; ++ int sample_rate = kDefaultSampleRate; ++ int buffer_size = kDefaultOutputBufferSize; ++ if (input_params.IsValid()) { ++ sample_rate = input_params.sample_rate(); ++ channel_layout = input_params.channel_layout(); ++ buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); ++ } ++ ++ int user_buffer_size = GetUserBufferSize(); ++ if (user_buffer_size) ++ buffer_size = user_buffer_size; ++ ++ return AudioParameters( ++ AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, ++ sample_rate, buffer_size); ++} ++ ++AudioInputStream* AudioManagerSndio::MakeInputStream( ++ const AudioParameters& params) { ++ DLOG(WARNING) << "MakeInputStream"; ++ return new SndioAudioInputStream(this, ++ AudioDeviceDescription::kDefaultDeviceId, params); ++} ++ ++AudioOutputStream* AudioManagerSndio::MakeOutputStream( ++ const AudioParameters& params) { ++ DLOG(WARNING) << "MakeOutputStream"; ++ return new SndioAudioOutputStream(params, this); ++} ++ ++} // namespace media +--- /dev/null ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/sndio/audio_manager_sndio.h +@@ -0,0 +1,65 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ ++#define MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ ++ ++#include ++ ++#include "base/compiler_specific.h" ++#include "base/macros.h" ++#include "base/memory/ref_counted.h" ++#include "base/threading/thread.h" ++#include "media/audio/audio_manager_base.h" ++ ++namespace media { ++ ++class MEDIA_EXPORT AudioManagerSndio : public AudioManagerBase { ++ public: ++ AudioManagerSndio(std::unique_ptr audio_thread, ++ AudioLogFactory* audio_log_factory); ++ ~AudioManagerSndio() override; ++ ++ // Implementation of AudioManager. ++ bool HasAudioOutputDevices() override; ++ bool HasAudioInputDevices() override; ++ void GetAudioInputDeviceNames(AudioDeviceNames* device_names) override; ++ void GetAudioOutputDeviceNames(AudioDeviceNames* device_names) override; ++ AudioParameters GetInputStreamParameters( ++ const std::string& device_id) override; ++ const char* GetName() override; ++ ++ // Implementation of AudioManagerBase. ++ AudioOutputStream* MakeLinearOutputStream( ++ const AudioParameters& params, ++ const LogCallback& log_callback) override; ++ AudioOutputStream* MakeLowLatencyOutputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) override; ++ AudioInputStream* MakeLinearInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) override; ++ AudioInputStream* MakeLowLatencyInputStream( ++ const AudioParameters& params, ++ const std::string& device_id, ++ const LogCallback& log_callback) override; ++ ++ protected: ++ AudioParameters GetPreferredOutputStreamParameters( ++ const std::string& output_device_id, ++ const AudioParameters& input_params) override; ++ ++ private: ++ // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream. ++ AudioOutputStream* MakeOutputStream(const AudioParameters& params); ++ AudioInputStream* MakeInputStream(const AudioParameters& params); ++ ++ DISALLOW_COPY_AND_ASSIGN(AudioManagerSndio); ++}; ++ ++} // namespace media ++ ++#endif // MEDIA_AUDIO_SNDIO_AUDIO_MANAGER_SNDIO_H_ +--- /dev/null ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/sndio/sndio_input.cc +@@ -0,0 +1,200 @@ ++// Copyright 2013 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "base/bind.h" ++#include "base/logging.h" ++#include "base/macros.h" ++#include "media/base/audio_timestamp_helper.h" ++#include "media/audio/sndio/audio_manager_sndio.h" ++#include "media/audio/audio_manager.h" ++#include "media/audio/sndio/sndio_input.h" ++ ++namespace media { ++ ++static const SampleFormat kSampleFormat = kSampleFormatS16; ++ ++void SndioAudioInputStream::OnMoveCallback(void *arg, int delta) ++{ ++ SndioAudioInputStream* self = static_cast(arg); ++ ++ self->hw_delay += delta; ++} ++ ++void *SndioAudioInputStream::ThreadEntry(void *arg) { ++ SndioAudioInputStream* self = static_cast(arg); ++ ++ self->ThreadLoop(); ++ return NULL; ++} ++ ++SndioAudioInputStream::SndioAudioInputStream(AudioManagerBase* manager, ++ const std::string& device_name, ++ const AudioParameters& params) ++ : manager(manager), ++ params(params), ++ audio_bus(AudioBus::Create(params)), ++ state(kClosed) { ++} ++ ++SndioAudioInputStream::~SndioAudioInputStream() { ++ if (state != kClosed) ++ Close(); ++} ++ ++bool SndioAudioInputStream::Open() { ++ struct sio_par par; ++ int sig; ++ ++ if (state != kClosed) ++ return false; ++ ++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && ++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { ++ LOG(WARNING) << "Unsupported audio format."; ++ return false; ++ } ++ ++ sio_initpar(&par); ++ par.rate = params.sample_rate(); ++ par.rchan = params.channels(); ++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat); ++ par.bps = par.bits / 8; ++ par.sig = sig = par.bits != 8 ? 1 : 0; ++ par.le = SIO_LE_NATIVE; ++ par.appbufsz = params.frames_per_buffer(); ++ ++ hdl = sio_open(SIO_DEVANY, SIO_REC, 0); ++ ++ if (hdl == NULL) { ++ LOG(ERROR) << "Couldn't open audio device."; ++ return false; ++ } ++ ++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { ++ LOG(ERROR) << "Couldn't set audio parameters."; ++ goto bad_close; ++ } ++ ++ if (par.rate != (unsigned int)params.sample_rate() || ++ par.rchan != (unsigned int)params.channels() || ++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || ++ par.sig != (unsigned int)sig || ++ (par.bps > 1 && par.le != SIO_LE_NATIVE) || ++ (par.bits != par.bps * 8)) { ++ LOG(ERROR) << "Unsupported audio parameters."; ++ goto bad_close; ++ } ++ state = kStopped; ++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; ++ sio_onmove(hdl, &OnMoveCallback, this); ++ return true; ++bad_close: ++ sio_close(hdl); ++ return false; ++} ++ ++void SndioAudioInputStream::Start(AudioInputCallback* cb) { ++ ++ StartAgc(); ++ ++ state = kRunning; ++ hw_delay = 0; ++ callback = cb; ++ sio_start(hdl); ++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { ++ LOG(ERROR) << "Failed to create real-time thread for recording."; ++ sio_stop(hdl); ++ state = kStopped; ++ } ++} ++ ++void SndioAudioInputStream::Stop() { ++ ++ if (state == kStopped) ++ return; ++ ++ state = kStopWait; ++ pthread_join(thread, NULL); ++ sio_stop(hdl); ++ state = kStopped; ++ ++ StopAgc(); ++} ++ ++void SndioAudioInputStream::Close() { ++ ++ if (state == kClosed) ++ return; ++ ++ if (state == kRunning) ++ Stop(); ++ ++ state = kClosed; ++ delete [] buffer; ++ sio_close(hdl); ++ ++ manager->ReleaseInputStream(this); ++} ++ ++double SndioAudioInputStream::GetMaxVolume() { ++ // Not supported ++ return 0.0; ++} ++ ++void SndioAudioInputStream::SetVolume(double volume) { ++ // Not supported. Do nothing. ++} ++ ++double SndioAudioInputStream::GetVolume() { ++ // Not supported. ++ return 0.0; ++} ++ ++bool SndioAudioInputStream::IsMuted() { ++ // Not supported. ++ return false; ++} ++ ++void SndioAudioInputStream::SetOutputDeviceForAec( ++ const std::string& output_device_id) { ++ // Not supported. ++} ++ ++void SndioAudioInputStream::ThreadLoop(void) { ++ size_t todo, n; ++ char *data; ++ unsigned int nframes; ++ double normalized_volume = 0.0; ++ ++ nframes = audio_bus->frames(); ++ ++ while (state == kRunning && !sio_eof(hdl)) { ++ ++ GetAgcVolume(&normalized_volume); ++ ++ // read one block ++ todo = nframes * params.GetBytesPerFrame(kSampleFormat); ++ data = buffer; ++ while (todo > 0) { ++ n = sio_read(hdl, data, todo); ++ if (n == 0) ++ return; // unrecoverable I/O error ++ todo -= n; ++ data += n; ++ } ++ hw_delay -= nframes; ++ ++ // convert frames count to TimeDelta ++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, ++ params.sample_rate()); ++ ++ // push into bus ++ audio_bus->FromInterleaved(reinterpret_cast(buffer), nframes); ++ ++ // invoke callback ++ callback->OnData(audio_bus.get(), base::TimeTicks::Now() - delay, 1.); ++ } ++} ++ ++} // namespace media +--- /dev/null ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/sndio/sndio_input.h +@@ -0,0 +1,91 @@ ++// Copyright 2013 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ ++#define MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ ++ ++#include ++#include ++#include ++ ++#include "base/compiler_specific.h" ++#include "base/macros.h" ++#include "base/memory/weak_ptr.h" ++#include "base/time/time.h" ++#include "media/audio/agc_audio_stream.h" ++#include "media/audio/audio_io.h" ++#include "media/audio/audio_device_description.h" ++#include "media/base/audio_parameters.h" ++ ++namespace media { ++ ++class AudioManagerBase; ++ ++// Implementation of AudioOutputStream using sndio(7) ++class SndioAudioInputStream : public AgcAudioStream { ++ public: ++ // Pass this to the constructor if you want to attempt auto-selection ++ // of the audio recording device. ++ static const char kAutoSelectDevice[]; ++ ++ // Create a PCM Output stream for the SNDIO device identified by ++ // |device_name|. If unsure of what to use for |device_name|, use ++ // |kAutoSelectDevice|. ++ SndioAudioInputStream(AudioManagerBase* audio_manager, ++ const std::string& device_name, ++ const AudioParameters& params); ++ ++ ~SndioAudioInputStream() override; ++ ++ // Implementation of AudioInputStream. ++ bool Open() override; ++ void Start(AudioInputCallback* callback) override; ++ void Stop() override; ++ void Close() override; ++ double GetMaxVolume() override; ++ void SetVolume(double volume) override; ++ double GetVolume() override; ++ bool IsMuted() override; ++ void SetOutputDeviceForAec(const std::string& output_device_id) override; ++ ++ private: ++ ++ enum StreamState { ++ kClosed, // Not opened yet ++ kStopped, // Device opened, but not started yet ++ kRunning, // Started, device playing ++ kStopWait // Stopping, waiting for the real-time thread to exit ++ }; ++ ++ // C-style call-backs ++ static void OnMoveCallback(void *arg, int delta); ++ static void* ThreadEntry(void *arg); ++ ++ // Continuously moves data from the device to the consumer ++ void ThreadLoop(); ++ // Our creator, the audio manager needs to be notified when we close. ++ AudioManagerBase* manager; ++ // Parameters of the source ++ AudioParameters params; ++ // We store data here for consumer ++ std::unique_ptr audio_bus; ++ // Call-back that consumes recorded data ++ AudioInputCallback* callback; // Valid during a recording session. ++ // Handle of the audio device ++ struct sio_hdl* hdl; ++ // Current state of the stream ++ enum StreamState state; ++ // High priority thread running ThreadLoop() ++ pthread_t thread; ++ // Number of frames buffered in the hardware ++ int hw_delay; ++ // Temporary buffer where data is stored sndio-compatible format ++ char* buffer; ++ ++ DISALLOW_COPY_AND_ASSIGN(SndioAudioInputStream); ++}; ++ ++} // namespace media ++ ++#endif // MEDIA_AUDIO_SNDIO_SNDIO_INPUT_H_ +--- /dev/null ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/sndio/sndio_output.cc +@@ -0,0 +1,183 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "base/logging.h" ++#include "base/time/time.h" ++#include "base/time/default_tick_clock.h" ++#include "media/audio/audio_manager_base.h" ++#include "media/base/audio_timestamp_helper.h" ++#include "media/audio/sndio/sndio_output.h" ++ ++namespace media { ++ ++static const SampleFormat kSampleFormat = kSampleFormatS16; ++ ++void SndioAudioOutputStream::OnMoveCallback(void *arg, int delta) { ++ SndioAudioOutputStream* self = static_cast(arg); ++ ++ self->hw_delay -= delta; ++} ++ ++void SndioAudioOutputStream::OnVolCallback(void *arg, unsigned int vol) { ++ SndioAudioOutputStream* self = static_cast(arg); ++ ++ self->vol = vol; ++} ++ ++void *SndioAudioOutputStream::ThreadEntry(void *arg) { ++ SndioAudioOutputStream* self = static_cast(arg); ++ ++ self->ThreadLoop(); ++ return NULL; ++} ++ ++SndioAudioOutputStream::SndioAudioOutputStream(const AudioParameters& params, ++ AudioManagerBase* manager) ++ : manager(manager), ++ params(params), ++ audio_bus(AudioBus::Create(params)), ++ state(kClosed), ++ mutex(PTHREAD_MUTEX_INITIALIZER) { ++} ++ ++SndioAudioOutputStream::~SndioAudioOutputStream() { ++ if (state != kClosed) ++ Close(); ++} ++ ++bool SndioAudioOutputStream::Open() { ++ struct sio_par par; ++ int sig; ++ ++ if (params.format() != AudioParameters::AUDIO_PCM_LINEAR && ++ params.format() != AudioParameters::AUDIO_PCM_LOW_LATENCY) { ++ LOG(WARNING) << "Unsupported audio format."; ++ return false; ++ } ++ sio_initpar(&par); ++ par.rate = params.sample_rate(); ++ par.pchan = params.channels(); ++ par.bits = SampleFormatToBitsPerChannel(kSampleFormat); ++ par.bps = par.bits / 8; ++ par.sig = sig = par.bits != 8 ? 1 : 0; ++ par.le = SIO_LE_NATIVE; ++ par.appbufsz = params.frames_per_buffer(); ++ ++ hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0); ++ if (hdl == NULL) { ++ LOG(ERROR) << "Couldn't open audio device."; ++ return false; ++ } ++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { ++ LOG(ERROR) << "Couldn't set audio parameters."; ++ goto bad_close; ++ } ++ if (par.rate != (unsigned int)params.sample_rate() || ++ par.pchan != (unsigned int)params.channels() || ++ par.bits != (unsigned int)SampleFormatToBitsPerChannel(kSampleFormat) || ++ par.sig != (unsigned int)sig || ++ (par.bps > 1 && par.le != SIO_LE_NATIVE) || ++ (par.bits != par.bps * 8)) { ++ LOG(ERROR) << "Unsupported audio parameters."; ++ goto bad_close; ++ } ++ state = kStopped; ++ volpending = 0; ++ vol = 0; ++ buffer = new char[audio_bus->frames() * params.GetBytesPerFrame(kSampleFormat)]; ++ sio_onmove(hdl, &OnMoveCallback, this); ++ sio_onvol(hdl, &OnVolCallback, this); ++ return true; ++ bad_close: ++ sio_close(hdl); ++ return false; ++} ++ ++void SndioAudioOutputStream::Close() { ++ if (state == kClosed) ++ return; ++ if (state == kRunning) ++ Stop(); ++ state = kClosed; ++ delete [] buffer; ++ sio_close(hdl); ++ manager->ReleaseOutputStream(this); // Calls the destructor ++} ++ ++void SndioAudioOutputStream::Start(AudioSourceCallback* callback) { ++ state = kRunning; ++ hw_delay = 0; ++ source = callback; ++ sio_start(hdl); ++ if (pthread_create(&thread, NULL, &ThreadEntry, this) != 0) { ++ LOG(ERROR) << "Failed to create real-time thread."; ++ sio_stop(hdl); ++ state = kStopped; ++ } ++} ++ ++void SndioAudioOutputStream::Stop() { ++ if (state == kStopped) ++ return; ++ state = kStopWait; ++ pthread_join(thread, NULL); ++ sio_stop(hdl); ++ state = kStopped; ++} ++ ++void SndioAudioOutputStream::SetVolume(double v) { ++ pthread_mutex_lock(&mutex); ++ vol = v * SIO_MAXVOL; ++ volpending = 1; ++ pthread_mutex_unlock(&mutex); ++} ++ ++void SndioAudioOutputStream::GetVolume(double* v) { ++ pthread_mutex_lock(&mutex); ++ *v = vol * (1. / SIO_MAXVOL); ++ pthread_mutex_unlock(&mutex); ++} ++ ++// This stream is always used with sub second buffer sizes, where it's ++// sufficient to simply always flush upon Start(). ++void SndioAudioOutputStream::Flush() {} ++ ++void SndioAudioOutputStream::ThreadLoop(void) { ++ int avail, count, result; ++ ++ while (state == kRunning) { ++ // Update volume if needed ++ pthread_mutex_lock(&mutex); ++ if (volpending) { ++ volpending = 0; ++ sio_setvol(hdl, vol); ++ } ++ pthread_mutex_unlock(&mutex); ++ ++ // Get data to play ++ const base::TimeDelta delay = AudioTimestampHelper::FramesToTime(hw_delay, ++ params.sample_rate()); ++ count = source->OnMoreData(delay, base::TimeTicks::Now(), 0, audio_bus.get()); ++ audio_bus->ToInterleaved(count, reinterpret_cast(buffer)); ++ if (count == 0) { ++ // We have to submit something to the device ++ count = audio_bus->frames(); ++ memset(buffer, 0, count * params.GetBytesPerFrame(kSampleFormat)); ++ LOG(WARNING) << "No data to play, running empty cycle."; ++ } ++ ++ // Submit data to the device ++ avail = count * params.GetBytesPerFrame(kSampleFormat); ++ result = sio_write(hdl, buffer, avail); ++ if (result == 0) { ++ LOG(WARNING) << "Audio device disconnected."; ++ break; ++ } ++ ++ // Update hardware pointer ++ hw_delay += count; ++ } ++} ++ ++} // namespace media +--- /dev/null ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/audio/sndio/sndio_output.h +@@ -0,0 +1,86 @@ ++// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ ++#define MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ ++ ++#include ++#include ++ ++#include "base/time/tick_clock.h" ++#include "base/time/time.h" ++#include "media/audio/audio_io.h" ++ ++namespace media { ++ ++class AudioManagerBase; ++ ++// Implementation of AudioOutputStream using sndio(7) ++class SndioAudioOutputStream : public AudioOutputStream { ++ public: ++ // The manager is creating this object ++ SndioAudioOutputStream(const AudioParameters& params, ++ AudioManagerBase* manager); ++ virtual ~SndioAudioOutputStream(); ++ ++ // Implementation of AudioOutputStream. ++ bool Open() override; ++ void Close() override; ++ void Start(AudioSourceCallback* callback) override; ++ void Stop() override; ++ void SetVolume(double volume) override; ++ void GetVolume(double* volume) override; ++ void Flush() override; ++ ++ friend void sndio_onmove(void *arg, int delta); ++ friend void sndio_onvol(void *arg, unsigned int vol); ++ friend void *sndio_threadstart(void *arg); ++ ++ private: ++ enum StreamState { ++ kClosed, // Not opened yet ++ kStopped, // Device opened, but not started yet ++ kRunning, // Started, device playing ++ kStopWait // Stopping, waiting for the real-time thread to exit ++ }; ++ ++ // C-style call-backs ++ static void OnMoveCallback(void *arg, int delta); ++ static void OnVolCallback(void *arg, unsigned int vol); ++ static void* ThreadEntry(void *arg); ++ ++ // Continuously moves data from the producer to the device ++ void ThreadLoop(void); ++ ++ // Our creator, the audio manager needs to be notified when we close. ++ AudioManagerBase* manager; ++ // Parameters of the source ++ AudioParameters params; ++ // Source stores data here ++ std::unique_ptr audio_bus; ++ // Call-back that produces data to play ++ AudioSourceCallback* source; ++ // Handle of the audio device ++ struct sio_hdl* hdl; ++ // Current state of the stream ++ enum StreamState state; ++ // High priority thread running ThreadLoop() ++ pthread_t thread; ++ // Protects vol, volpending and hw_delay ++ pthread_mutex_t mutex; ++ // Current volume in the 0..SIO_MAXVOL range ++ int vol; ++ // Set to 1 if volumes must be refreshed in the realtime thread ++ int volpending; ++ // Number of frames buffered in the hardware ++ int hw_delay; ++ // Temporary buffer where data is stored sndio-compatible format ++ char* buffer; ++ ++ DISALLOW_COPY_AND_ASSIGN(SndioAudioOutputStream); ++}; ++ ++} // namespace media ++ ++#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/media/media_options.gni ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/media/media_options.gni +@@ -133,6 +133,9 @@ declare_args() { + # Enables runtime selection of ALSA library for audio. + use_alsa = false + ++ # Enable runtime selection of sndio(7) ++ use_sndio = false ++ + # Alsa should be used on non-Android, non-Mac POSIX systems. + # Alsa should be used on desktop Chromecast and audio-only Chromecast builds. + if (is_posix && !is_android && !is_mac && diff --git a/srcpkgs/qt6-webengine/patches/0300-chromium-musl-hacks.patch b/srcpkgs/qt6-webengine/patches/0300-chromium-musl-hacks.patch new file mode 100644 index 000000000000..525aeb8a63d2 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0300-chromium-musl-hacks.patch @@ -0,0 +1,52 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/debug/stack_trace.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/debug/stack_trace.cc +@@ -234,7 +234,7 @@ bool StackTrace::WillSymbolizeToStreamFo + // Symbols are not expected to be reliable when gn args specifies + // symbol_level=0. + return false; +-#elif defined(__UCLIBC__) || defined(_AIX) ++#elif defined(__GLIBC__) || defined(_AIX) + // StackTrace::OutputToStream() is not implemented under uclibc, nor AIX. + // See https://crbug.com/706728 + return false; +@@ -273,7 +273,9 @@ void StackTrace::Print() const { + } + + void StackTrace::OutputToStream(std::ostream* os) const { ++#if defined(__GLIBC__) + OutputToStreamWithPrefix(os, nullptr); ++#endif + } + + std::string StackTrace::ToString() const { +@@ -281,14 +283,14 @@ std::string StackTrace::ToString() const + } + std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const { + std::stringstream stream; +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + OutputToStreamWithPrefix(&stream, prefix_string); + #endif + return stream.str(); + } + + std::ostream& operator<<(std::ostream& os, const StackTrace& s) { +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + s.OutputToStream(&os); + #else + os << "StackTrace::OutputToStream not implemented."; +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/net/socket/udp_socket_posix.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/net/socket/udp_socket_posix.cc +@@ -1157,7 +1157,11 @@ SendResult UDPSocketPosixSender::Interna + msg_iov->push_back({const_cast(buffer->data()), buffer->length()}); + msgvec->reserve(buffers.size()); + for (size_t j = 0; j < buffers.size(); j++) ++#ifdef __GLIBC__ + msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0}); ++#else ++ msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, 0, 0, 0}, 0}); ++#endif + int result = HANDLE_EINTR(Sendmmsg(fd, &msgvec[0], buffers.size(), 0)); + SendResult send_result(0, 0, std::move(buffers)); + if (result < 0) { diff --git a/srcpkgs/qt6-webengine/patches/0301-chromium-musl-sandbox.patch b/srcpkgs/qt6-webengine/patches/0301-chromium-musl-sandbox.patch new file mode 100644 index 000000000000..4afbec5b98ef --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0301-chromium-musl-sandbox.patch @@ -0,0 +1,86 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +@@ -134,6 +134,7 @@ namespace sandbox { + ResultExpr RestrictCloneToThreadsAndEPERMFork() { + const Arg flags(0); + ++#ifdef __GLIBC__ + // TODO(mdempsky): Extend DSL to support (flags & ~mask1) == mask2. + const uint64_t kAndroidCloneMask = CLONE_VM | CLONE_FS | CLONE_FILES | + CLONE_SIGHAND | CLONE_THREAD | +@@ -160,6 +161,16 @@ ResultExpr RestrictCloneToThreadsAndEPER + return If(IsAndroid() ? android_test : glibc_test, Allow()) + .ElseIf(is_fork_or_clone_vfork, Error(EPERM)) + .Else(CrashSIGSYSClone()); ++#else ++ const int required = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_THREAD | CLONE_SYSVSEM; ++ const int safe = CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | ++ CLONE_DETACHED; ++ const BoolExpr thread_clone_ok = (flags&~safe)==required; ++ return If(thread_clone_ok, Allow()) ++ .ElseIf((flags & (CLONE_VM | CLONE_THREAD)) == 0, Error(EPERM)) ++ .Else(CrashSIGSYSClone()); ++#endif + } + + #ifndef PR_PAC_RESET_KEYS +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +@@ -424,6 +424,9 @@ bool SyscallSets::IsAllowedProcessStartO + #if defined(__i386__) + case __NR_waitpid: + #endif ++#if !defined(__GLIBC__) ++ case __NR_set_tid_address: ++#endif + return true; + case __NR_clone: // Should be parameter-restricted. + case __NR_setns: // Privileged. +@@ -436,7 +439,9 @@ bool SyscallSets::IsAllowedProcessStartO + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) + case __NR_set_thread_area: + #endif ++#if defined(__GLIBC__) + case __NR_set_tid_address: ++#endif + case __NR_unshare: + #if !defined(__mips__) && !defined(__aarch64__) + case __NR_vfork: +@@ -550,6 +555,9 @@ bool SyscallSets::IsAllowedAddressSpaceA + case __NR_mlock: + case __NR_munlock: + case __NR_munmap: ++#ifndef __GLIBC__ ++ case __NR_mremap: ++#endif + return true; + case __NR_madvise: + case __NR_mincore: +@@ -567,7 +575,9 @@ bool SyscallSets::IsAllowedAddressSpaceA + case __NR_modify_ldt: + #endif + case __NR_mprotect: ++#ifdef __GLIBC__ + case __NR_mremap: ++#endif + case __NR_msync: + case __NR_munlockall: + case __NR_readahead: +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -99,9 +99,14 @@ ResultExpr RendererProcessPolicy::Evalua + case __NR_uname: + case __NR_sched_getparam: + case __NR_sched_getscheduler: ++#ifndef __GLIBC__ ++ case __NR_sched_setscheduler: ++#endif + return Allow(); + case __NR_sched_getaffinity: ++#ifdef __GLIBC__ + case __NR_sched_setscheduler: ++#endif + return RestrictSchedTarget(GetPolicyPid(), sysno); + case __NR_prlimit64: + // See crbug.com/662450 and setrlimit comment above. diff --git a/srcpkgs/qt6-webengine/patches/0302-chromium-no-mallinfo.patch b/srcpkgs/qt6-webengine/patches/0302-chromium-no-mallinfo.patch new file mode 100644 index 000000000000..519930e7bef0 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0302-chromium-no-mallinfo.patch @@ -0,0 +1,67 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/process/process_metrics_posix.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/process/process_metrics_posix.cc +@@ -105,7 +105,8 @@ void IncreaseFdLimitTo(unsigned int max_ + + #endif // !BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || \ ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + namespace { + + size_t GetMallocUsageMallinfo() { +@@ -123,17 +124,18 @@ size_t GetMallocUsageMallinfo() { + } + + } // namespace +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || +- // BUILDFLAG(IS_ANDROID) ++#endif // (BUILDFLAG(IS_LINUX) && defined(__GLIBC__) || ++ // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + + size_t ProcessMetrics::GetMallocUsage() { + #if BUILDFLAG(IS_APPLE) + malloc_statistics_t stats = {0}; + malloc_zone_statistics(nullptr, &stats); + return stats.size_in_use; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#elif (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || \ ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + return GetMallocUsageMallinfo(); +-#elif BUILDFLAG(IS_FUCHSIA) ++#elif BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)) + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc +@@ -174,7 +174,8 @@ void ReportAppleAllocStats(size_t* total + + #if (BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_ANDROID)) || \ + (!BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && !BUILDFLAG(IS_WIN) && \ +- !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_FUCHSIA)) ++ !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_FUCHSIA) && \ ++ !(BUILDFLAG(IS_LINUX) && !defined(__GLIBC__))) + void ReportMallinfoStats(ProcessMemoryDump* pmd, + size_t* total_virtual_size, + size_t* resident_size, +@@ -339,7 +340,7 @@ bool MallocDumpProvider::OnMemoryDump(co + &allocated_objects_count); + #elif BUILDFLAG(IS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. +-#else ++#elif defined(__GLIBC__) + ReportMallinfoStats(/*pmd=*/nullptr, &total_virtual_size, &resident_size, + &allocated_objects_size, &allocated_objects_count); + #endif +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/tflite/src/tensorflow/lite/profiling/memory_info.cc +@@ -35,7 +35,7 @@ bool MemoryUsage::IsSupported() { + + MemoryUsage GetMemoryUsage() { + MemoryUsage result; +-#ifdef __linux__ ++#if defined(__linux__) && defined(__GLIBC__) + rusage res; + if (getrusage(RUSAGE_SELF, &res) == 0) { + result.max_rss_kb = res.ru_maxrss; diff --git a/srcpkgs/qt6-webengine/patches/0700-armv7l-neon.patch b/srcpkgs/qt6-webengine/patches/0700-armv7l-neon.patch new file mode 100644 index 000000000000..5ca1953d2cb3 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0700-armv7l-neon.patch @@ -0,0 +1,10 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/skia/BUILD.gn ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/skia/BUILD.gn +@@ -786,7 +786,6 @@ skia_source_set("skia_opts") { + # Root build config sets -mfpu=$arm_fpu, which we expect to be neon + # when running this. + if (!arm_use_neon) { +- configs -= [ "//build/config/compiler:compiler_arm_fpu" ] + cflags += [ "-mfpu=neon" ] + } + } diff --git a/srcpkgs/qt6-webengine/patches/0750-chromium-musl-cross-no-asm_ptrace_h.patch b/srcpkgs/qt6-webengine/patches/0750-chromium-musl-cross-no-asm_ptrace_h.patch new file mode 100644 index 000000000000..ca7b0150962c --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0750-chromium-musl-cross-no-asm_ptrace_h.patch @@ -0,0 +1,30 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc +@@ -38,7 +38,12 @@ + + #include "client/linux/minidump_writer/linux_ptrace_dumper.h" + ++#if defined(__GLIBC__) + #include ++#else ++/* For arm*-musl this definition is missing */ ++#define ARM_sp uregs[13] ++#endif + #include + #include + #include +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc +@@ -32,7 +32,12 @@ + + #include "client/linux/minidump_writer/linux_core_dumper.h" + ++#if defined(__GLIBC__) + #include ++#else ++/* For arm*-musl this definition is missing */ ++#define ARM_sp uregs[13] ++#endif + #include + #include + #include diff --git a/srcpkgs/qt6-webengine/patches/0751-chromium-musl-arm-user_vfp.patch b/srcpkgs/qt6-webengine/patches/0751-chromium-musl-arm-user_vfp.patch new file mode 100644 index 000000000000..d7c18036d503 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0751-chromium-musl-arm-user_vfp.patch @@ -0,0 +1,20 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h +@@ -17,6 +17,17 @@ + + #include + #include ++#if !defined(__GLIBC__) ++struct user_vfp { ++ unsigned long long fpregs[32]; ++ unsigned long fpscr; ++}; ++struct user_vfp_exc { ++ unsigned long fpexc; ++ unsigned long fpinst; ++ unsigned long fpinst2; ++}; ++#endif /* !defined(__GLIBC__) */ + + #include + diff --git a/srcpkgs/qt6-webengine/patches/0752-chromium-musl-arm-elf_auxv_t.patch b/srcpkgs/qt6-webengine/patches/0752-chromium-musl-arm-elf_auxv_t.patch new file mode 100644 index 000000000000..52f5f47be831 --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0752-chromium-musl-arm-elf_auxv_t.patch @@ -0,0 +1,18 @@ +--- qt6-webengine-6.4.2.orig/src/3rdparty/chromium/v8/src/base/cpu.cc ++++ qt6-webengine-6.4.2/src/3rdparty/chromium/v8/src/base/cpu.cc +@@ -165,6 +165,15 @@ static V8_INLINE void __cpuid(int cpu_in + + #if V8_HOST_ARCH_ARM || V8_HOST_ARCH_ARM64 + ++#ifndef __GLIBC__ ++#include ++#ifdef __LP64__ ++typedef Elf64_auxv_t elf_auxv_t; ++#else ++typedef Elf32_auxv_t elf_auxv_t; ++#endif ++#endif ++ + static uint32_t ReadELFHWCaps() { + uint32_t result = 0; + #if V8_GLIBC_PREREQ(2, 16) diff --git a/srcpkgs/qt6-webengine/patches/0900-cross-build-examples.patch b/srcpkgs/qt6-webengine/patches/0900-cross-build-examples.patch new file mode 100644 index 000000000000..9a6acc6af6de --- /dev/null +++ b/srcpkgs/qt6-webengine/patches/0900-cross-build-examples.patch @@ -0,0 +1,16 @@ +--- qt6-webengine-6.4.2.orig/examples/CMakeLists.txt ++++ qt6-webengine-6.4.2/examples/CMakeLists.txt +@@ -1,7 +1,6 @@ + cmake_minimum_required(VERSION 3.16) + + qt_examples_build_begin(EXTERNAL_BUILD) +-if(NOT CMAKE_CROSSCOMPILING) #QTBUG-86533 + if(TARGET Qt::WebEngineCore) + add_subdirectory(webenginequick) + endif() +@@ -14,5 +13,4 @@ if(NOT CMAKE_CROSSCOMPILING) #QTBUG-8653 + if(TARGET Qt::PdfWidgets) + add_subdirectory(pdfwidgets) + endif() +-endif() + qt_examples_build_end() diff --git a/srcpkgs/qt6-webengine/template b/srcpkgs/qt6-webengine/template new file mode 100644 index 000000000000..8e35379f1334 --- /dev/null +++ b/srcpkgs/qt6-webengine/template @@ -0,0 +1,183 @@ +# Template file for 'qt6-webengine' +pkgname=qt6-webengine +version=6.4.2 +revision=1 +wrksrc="qtwebengine-everywhere-src-${version}" +build_style=cmake +configure_args=" + -DQT_FEATURE_webengine_system_ffmpeg=ON + -DQT_FEATURE_webengine_system_libevent=ON + -DQT_FEATURE_webengine_system_gn=ON + -DQT_FEATURE_webengine_system_icu=ON + -DQT_FEATURE_webengine_webrtc_pipewire=ON + -DNinja_EXECUTABLE=$XBPS_WRAPPERDIR/ninja + -DQT_BUILD_EXAMPLES=ON + -DPKG_CONFIG_HOST_EXECUTABLE=${PKG_CONFIG_FOR_BUILD}" +hostmakedepends="qt6-base perl pkg-config nodejs python3-html5lib + qt6-declarative-tools protobuf gperf flex nss-devel libwebp-devel + icu-devel libevent-devel" +makedepends="qt6-base-devel qt6-declarative-devel pulseaudio-devel + qt6-tools-devel qt6-websockets-devel libflac-devel qt6-svg-devel + alsa-lib-devel libvpx-devel pciutils-devel opus-devel libxslt-devel + libxml2-devel freetype-devel lcms2-devel libwebp-devel icu-devel + re2-devel zlib-devel libpng-devel minizip-devel harfbuzz-devel + nss-devel libXcursor-devel libXcomposite-devel libXScrnSaver-devel + protobuf-devel ffmpeg-devel snappy-devel libevent-devel pipewire-devel + libxkbfile-devel qt6-location-devel qt6-webchannel-devel libxshmfence-devel" +# Not working properly with HTTPS without those packages +# Not strict dependencies, though +depends="qt6-plugin-tls-openssl qt6-plugin-tls-qcertonly" +short_desc="Cross-platform application and UI framework - Webengine" +maintainer="John " +license="GPL-3.0-only, GPL-2.0-only, LGPL-3.0-only, BSD-3-Clause" +homepage="https://www.qt.io" +distfiles="https://download.qt.io/official_releases/qt/${version%.*}/${version}/submodules/qtwebengine-everywhere-src-${version}.tar.xz" +checksum=ffa945518d1cc8d9ee73523e8d9c2090844f5a2d9c7eac05c4ad079472a119c9 + +nocross="until later, I need calibre first" + +if [ "$CROSS_BUILD" ];then + configure_args+=" -DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=TRUE" + configure_args+=" -DCMAKE_TOOLCHAIN_FILE=/usr/lib/cmake/Qt6/qt.toolchain.cmake" +fi + +if [ "$XBPS_LIBC" = "musl" ]; then + hostmakedepends+=" musl-legacy-compat" +fi + +if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + makedepends+=" musl-legacy-compat" +fi + +if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then + broken="webengine can be built only if word size matches" +fi + +if [ "$XBPS_WORDSIZE" = 32 ]; then + CFLAGS=-g1 + CXXFLAGS=-g1 + LDFLAGS="-Wl,--no-keep-memory" + broken="nodejs compress js files failure" +fi + +case "$XBPS_TARGET_MACHINE" in + ppc*) broken="not ported" ;; +esac + +#build_options="examples" +#build_options_default="examples" +#desc_option_examples="Build examples" + +subpackages="qt6-webengine-devel" + +#if [ "$build_option_examples" ]; then + subpackages+=" qt6-webengine-examples" +#fi + +_bootstrap_gn() { + # Bootstrap gn (generate ninja) + echo "Bootstrapping 'gn'" + cd ${wrksrc}/src/3rdparty/gn + CFLAGS="$CFLAGS_host" CXXFLAGS="$CXXFLAGS_host" LDFLAGS="$LDFLAGS_host" \ + PKGCONFIG=/usr/bin/pkgconfig PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" \ + python3 build/gen.py --no-last-commit-position --out-path \ + ${wrksrc}/src/3rdparty/gn/out/Release --cc "${CC_host:-$CC}" \ + --cxx "${CXX_host:-$CXX}" --ld "${CXX_host:-$CXX}" --ar "${AR_host:-$AR}" \ + --qt-version "${version}.qtwebengine.qt.io" + ninja -C out/Release gn + cd ${wrksrc} +} + +_unbundle_libs() { + cd ${wrksrc}/src/3rdparty/chromium + echo Dropping bundled libs from chromium + # Use system-provided libraries. + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp. + # TODO: use_system_libusb (http://crbug.com/266149). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + # TODO: use_system_icu (segfaults) + # use_system_protobuf + # use_system_v8=1 + # use_system_zlib=1 + # bzip2 jsoncpp minizip xdg_utils speex + system=" + ffmpeg + flac + fontconfig + freetype + harfbuzz-ng + icu + libdrm + libevent + libjpeg + libpng + libwebp + libxml + libxslt + opus + re2 + snappy + " + build/linux/unbundle/replace_gn_files.py --system-libraries ${system} +} + +# Provide a wrapper to run ./xbps-src -j 1 build later +_wrap_ninja() { + cat <<-'_EOF' >"$XBPS_WRAPPERDIR"/ninja + #!/bin/sh + + exec /usr/bin/ninja $NINJAFLAGS "$@" + _EOF + chmod +x "$XBPS_WRAPPERDIR"/ninja +} + +pre_configure() { + _bootstrap_gn + # _unbundle_libs + _wrap_ninja + export PATH="$PATH:${wrksrc}/src/3rdparty/gn/out/Release" +} + +pre_build() { + export PATH="$PATH:${wrksrc}/src/3rdparty/gn/out/Release" + export NINJAFLAGS="$makejobs" + +} + +pre_install() { + export PATH="$PATH:${wrksrc}/src/3rdparty/gn/out/Release" +} + +post_install() { + local _file + find "${DESTDIR}"/usr/lib/qt6/examples \ + -path '*/lib/qt6/**/lib/qt6/*' -type f | + while read _file; do + mv "$_file" "${_file%/lib/qt6/*}" + done +} + +qt6-webengine-devel_package() { + depends="${sourcepkg}>=${version}_${revision} qt6-webchannel-devel>=${version}_1 + qt6-declarative-devel>=${version}_1 qt6-location-devel>=${version}_1" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/cmake + vmove usr/lib/pkgconfig + vmove usr/lib/qt6/mkspecs + vmove "usr/lib/*.so" + vmove "usr/lib/*.prl" + vmove usr/share/qt6/modules + } +} + +qt6-webengine-examples_package() { + short_desc+=" - sample browsers" + depends="qt6-svg" + pkg_install() { + vmove usr/lib/qt6/examples + } +} diff --git a/srcpkgs/qt6-webengine/update b/srcpkgs/qt6-webengine/update new file mode 100644 index 000000000000..844552465222 --- /dev/null +++ b/srcpkgs/qt6-webengine/update @@ -0,0 +1 @@ +pkgname="${pkgname/6-/}-everywhere-src" From 37dd2557e51a88edef6ec5c21443dbcbb533b166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Mon, 8 Aug 2022 19:10:58 +0700 Subject: [PATCH 03/11] New package: python3-pyqt6-webengine-6.3.1 --- srcpkgs/python3-pyqt6-webengine-devel | 1 + srcpkgs/python3-pyqt6-webengine/template | 27 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 120000 srcpkgs/python3-pyqt6-webengine-devel create mode 100644 srcpkgs/python3-pyqt6-webengine/template diff --git a/srcpkgs/python3-pyqt6-webengine-devel b/srcpkgs/python3-pyqt6-webengine-devel new file mode 120000 index 000000000000..f189bb352542 --- /dev/null +++ b/srcpkgs/python3-pyqt6-webengine-devel @@ -0,0 +1 @@ +python3-pyqt6-webengine \ No newline at end of file diff --git a/srcpkgs/python3-pyqt6-webengine/template b/srcpkgs/python3-pyqt6-webengine/template new file mode 100644 index 000000000000..12c3be82c062 --- /dev/null +++ b/srcpkgs/python3-pyqt6-webengine/template @@ -0,0 +1,27 @@ +# Template file for 'python3-pyqt6-webengine' +pkgname=python3-pyqt6-webengine +version=6.4.0 +revision=1 +build_style=sip-build +hostmakedepends="qt6-base python3-PyQt-builder pkg-config" +makedepends="python3-pyqt6-gui-devel qt6-webengine-devel + python3-pyqt6-network-devel python3-pyqt6-webchannel-devel + python3-pyqt6-declarative-devel python3-pyqt6-printsupport-devel + python3-pyqt6-widgets-devel" +depends="python3-pyqt6" +short_desc="Python 3 bindings for Qt6 - WebEngine" +maintainer="Đoàn Trần Công Danh " +license="GPL-3.0-or-later" +homepage="https://www.riverbankcomputing.com/software/pyqtwebengine/" +distfiles="$PYPI_SITE/P/PyQt6_WebEngine/PyQt6_WebEngine-$version.tar.gz" +checksum=4c71c130860abcd11e04cafb22e33983fa9a3aee8323c51909b15a1701828e21 +lib32disabled=yes + +python3-pyqt6-webengine-devel_package() { + depends="${sourcepkg}>=${version}_${revision} ${makedepends}" + short_desc+=" - development files" + pkg_install() { + vmove ${py3_sitelib}/PyQt6/bindings + vmove usr/share + } +} From 1fdd9875c2c56bea2bde0616f764d68016038b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 07:43:47 +0700 Subject: [PATCH 04/11] sip: update to 6.7.7. --- srcpkgs/sip/patches/find-bindings-in-pyprefix.patch | 13 +++++++++++++ srcpkgs/sip/template | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/sip/patches/find-bindings-in-pyprefix.patch diff --git a/srcpkgs/sip/patches/find-bindings-in-pyprefix.patch b/srcpkgs/sip/patches/find-bindings-in-pyprefix.patch new file mode 100644 index 000000000000..c3e2fd9c970b --- /dev/null +++ b/srcpkgs/sip/patches/find-bindings-in-pyprefix.patch @@ -0,0 +1,13 @@ +--- sip-6.7.7.orig/sipbuild/builder.py ++++ sip-6.7.7/sipbuild/builder.py +@@ -250,6 +250,10 @@ class Builder(AbstractBuilder): + sip_include_dirs.append(local_bindings_dir) + + # Add any bindings from previously installed packages. ++ if "PYPREFIX" in os.environ: ++ sip_include_dirs.append(os.environ["PYPREFIX"] + ++ os.path.join(project.target_dir, ++ project.get_bindings_dir())) + sip_include_dirs.append( + os.path.join(project.target_dir, + project.get_bindings_dir())) diff --git a/srcpkgs/sip/template b/srcpkgs/sip/template index ce38d0dc80eb..6c4bf22aa917 100644 --- a/srcpkgs/sip/template +++ b/srcpkgs/sip/template @@ -1,6 +1,6 @@ # Template file for 'sip' pkgname=sip -version=6.7.4 +version=6.7.7 revision=1 build_style=python3-module hostmakedepends="python3-devel python3-setuptools python3-packaging @@ -12,7 +12,7 @@ maintainer="Đoàn Trần Công Danh " license="GPL-2.0-only, GPL-3.0-only, custom:SIP" homepage="https://riverbankcomputing.com/software/sip/intro" distfiles="${PYPI_SITE}/s/sip/sip-${version}.tar.gz" -checksum=9dbf8a0e7c8d76d1642e2fdd3f53e6a522f7c30980e527763c45760c2505cfbf +checksum=dee9c06fa8ae6d441a401f922867fc6196edda274eebd9fbfec54f0769c2a9e2 lib32disabled=yes replaces="sip5<=${version}_${revision}" provides="sip5-${version}_${revision}" From 953ea3e177892e0f2218d1f7b2933dd76ed9dcc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 07:43:57 +0700 Subject: [PATCH 05/11] python3-pyqt6-sip: update to 13.4.1. --- srcpkgs/python3-pyqt6-sip/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/python3-pyqt6-sip/template b/srcpkgs/python3-pyqt6-sip/template index 9ad38a66b6f5..547d53fc13e1 100644 --- a/srcpkgs/python3-pyqt6-sip/template +++ b/srcpkgs/python3-pyqt6-sip/template @@ -1,7 +1,7 @@ # Template file for 'python3-pyqt6-sip' pkgname=python3-pyqt6-sip -version=13.4.0 -revision=2 +version=13.4.1 +revision=1 build_style=python3-module hostmakedepends="python3-devel python3-setuptools sip" makedepends="python3-devel" @@ -11,7 +11,7 @@ maintainer="Đoàn Trần Công Danh " license="GPL-2.0-only, GPL-3.0-only, custom:SIP" homepage="https://www.riverbankcomputing.com/software/sip/" distfiles="${PYPI_SITE}/P/PyQt6_sip/PyQt6_sip-${version}.tar.gz" -checksum=6d87a3ee5872d7511b76957d68a32109352caf3b7a42a01d9ee20032b350d979 +checksum=e00e287ea05bbc293fc6e2198301962af9b7b622bd2daf4288f925a88ae35dc9 lib32disabled=yes post_extract() { From af5e019e5412cc5df5ecd9178fdb914c2ffe562c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 07:44:02 +0700 Subject: [PATCH 06/11] python3-PyQt-builder: update to 1.14.1. --- srcpkgs/python3-PyQt-builder/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3-PyQt-builder/template b/srcpkgs/python3-PyQt-builder/template index 80bf46dab116..9557d0de9430 100644 --- a/srcpkgs/python3-PyQt-builder/template +++ b/srcpkgs/python3-PyQt-builder/template @@ -1,6 +1,6 @@ # Template file for 'python3-PyQt-builder' pkgname=python3-PyQt-builder -version=1.14.0 +version=1.14.1 revision=1 build_style=python3-module hostmakedepends="python3-setuptools sip" @@ -10,7 +10,7 @@ maintainer="Đoàn Trần Công Danh " license="GPL-2.0-only, GPL-3.0-only, custom:SIP" homepage="https://www.riverbankcomputing.com/software/pyqt/" distfiles="$PYPI_SITE/P/PyQt-builder/PyQt-builder-$version.tar.gz" -checksum=6755931c6d2f8940553e0334d10c933ce5cc18b64425e94fda1accf4ff774f59 +checksum=83bc3e300aff8b41405804b6a9c2913389ab59c48ad9f0cb8584a6ef73bca502 post_install() { rm -rf $DESTDIR/$py3_sitelib/pyqtbuild/bundle From 1af54a8a915dcd93118aa428bc3a12ddf8d3daeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 07:44:07 +0700 Subject: [PATCH 07/11] python3-pyqt6: update to 6.4.2. --- srcpkgs/python3-pyqt6/template | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/srcpkgs/python3-pyqt6/template b/srcpkgs/python3-pyqt6/template index f3a10aacbbed..f6e4ac09dcbe 100644 --- a/srcpkgs/python3-pyqt6/template +++ b/srcpkgs/python3-pyqt6/template @@ -1,16 +1,11 @@ # Template file for 'python3-pyqt6' pkgname=python3-pyqt6 -version=6.4.0 +version=6.4.2 revision=1 build_style=sip-build build_helper=qemu configure_args="--confirm-license --dbus $XBPS_CROSS_BASE/usr/include/dbus-1.0" -hostmakedepends="qt6-base-devel qt6-declarative-devel qt6-tools-devel - qt6-quick3d-devel qt6-shadertools-devel qt6-svg-devel python3-dbus - qt6-webchannel-devel qt6-multimedia-devel qt6-location-devel - qt6-remoteobjects-devel qt6-sensors-devel qt6-serialport-devel - qt6-connectivity-devel qt6-websockets-devel - python3-PyQt-builder pkg-config" +hostmakedepends="qt6-base python3-dbus python3-PyQt-builder pkg-config" makedepends="qt6-base-devel qt6-declarative-devel qt6-tools-devel qt6-webchannel-devel qt6-multimedia-devel qt6-location-devel qt6-remoteobjects-devel qt6-sensors-devel qt6-serialport-devel @@ -22,7 +17,7 @@ maintainer="Đoàn Trần Công Danh " license="GPL-3.0-only" homepage="https://www.riverbankcomputing.com/software/pyqt/" distfiles="$PYPI_SITE/P/PyQt6/PyQt6-$version.tar.gz" -checksum=91392469be1f491905fa9e78fa4e4059a89ab616ddf2ecfd525bc1d65c26bb93 +checksum=740244f608fe15ee1d89695c43f31a14caeca41c4f02ac36c86dfba4a5d5813d lib32disabled=yes if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then @@ -74,7 +69,7 @@ python3-pyqt6-tools_package() { python3-pyqt6-tools-devel_package() { lib32disabled=yes - depends="python3-pyqt6-tools>=${version}_${revision} + depends="python3-pyqt6-tools>=${version}_${revision} qt6-tools-devel python3-pyqt6-widgets-devel>=${version}_${revision}" short_desc="${short_desc} - Tools - development files" pkg_install() { @@ -176,7 +171,7 @@ python3-pyqt6-declarative_package() { python3-pyqt6-declarative-devel_package() { lib32disabled=yes depends="python3-pyqt6-declarative>=${version}_${revision} - python3-pyqt6-widgets-devel>=${version}_${revision}" + qt6-declarative-devel python3-pyqt6-widgets-devel>=${version}_${revision}" short_desc="${short_desc} - Declarative - development files" pkg_install() { vmove "${py3_sitelib}/PyQt6/bindings/QtQml" @@ -196,7 +191,7 @@ python3-pyqt6-quick3d_package() { python3-pyqt6-quick3d-devel_package() { lib32disabled=yes - depends="python3-pyqt6-quick3d>=${version}_${revision} + depends="python3-pyqt6-quick3d>=${version}_${revision} qt6-quick3d-devel python3-pyqt6-declarative-devel>=${version}_${revision}" short_desc="${short_desc} - Quick3D - development files" pkg_install() { @@ -235,7 +230,7 @@ python3-pyqt6-svg_package() { python3-pyqt6-svg-devel_package() { lib32disabled=yes - depends="python3-pyqt6-svg>=${version}_${revision} + depends="python3-pyqt6-svg>=${version}_${revision} qt6-svg-devel python3-pyqt6-widgets-devel>=${version}_${revision}" short_desc="${short_desc} - svg - development files" pkg_install() { From 1b82ec66b9ae3872a3b3a0f694b7903e530b1f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 10:20:45 +0700 Subject: [PATCH 08/11] python3-pyqt6-3d: cleanup dependencies --- srcpkgs/python3-pyqt6-3d/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3-pyqt6-3d/template b/srcpkgs/python3-pyqt6-3d/template index 87554b2365a8..234e782ff73b 100644 --- a/srcpkgs/python3-pyqt6-3d/template +++ b/srcpkgs/python3-pyqt6-3d/template @@ -3,8 +3,8 @@ pkgname=python3-pyqt6-3d version=6.4.0 revision=1 build_style=sip-build -hostmakedepends="python3-pyqt6-gui-devel qt6-3d-devel - python3-PyQt-builder pkg-config" +build_helper="python3" +hostmakedepends="qt6-base python3-PyQt-builder pkg-config" makedepends="python3-pyqt6-gui-devel qt6-3d-devel" depends="python3-pyqt6" short_desc="Qt6 bindings for 3D - Python 3" From 3cefb463c7ce46d0623793c350b2bf04a20f9d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 10:20:45 +0700 Subject: [PATCH 09/11] python3-pyqt6-charts: cleanup dependencies --- srcpkgs/python3-pyqt6-charts/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3-pyqt6-charts/template b/srcpkgs/python3-pyqt6-charts/template index 0b5c67f70007..9f8c5d05d7b9 100644 --- a/srcpkgs/python3-pyqt6-charts/template +++ b/srcpkgs/python3-pyqt6-charts/template @@ -3,8 +3,8 @@ pkgname=python3-pyqt6-charts version=6.4.0 revision=1 build_style=sip-build -hostmakedepends="qt6-charts-devel python3-pyqt6-widgets-devel - python3-PyQt-builder pkg-config" +build_helper="python3" +hostmakedepends="qt6-base python3-PyQt-builder pkg-config" makedepends="qt6-charts-devel python3-pyqt6-widgets-devel" depends="python3-pyqt6" short_desc="Qt6 bindings for Charts - Python 3" From 598971dbadbcc196ac7a7454a66c27c0551a6e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Thu, 23 Feb 2023 10:20:45 +0700 Subject: [PATCH 10/11] python3-pyqt6-networkauth: cleanup dependencies --- srcpkgs/python3-pyqt6-networkauth/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3-pyqt6-networkauth/template b/srcpkgs/python3-pyqt6-networkauth/template index 160c0e98dbea..8260bc1fcb72 100644 --- a/srcpkgs/python3-pyqt6-networkauth/template +++ b/srcpkgs/python3-pyqt6-networkauth/template @@ -3,8 +3,8 @@ pkgname=python3-pyqt6-networkauth version=6.4.0 revision=1 build_style=sip-build -hostmakedepends="python3-pyqt6-network-devel qt6-networkauth-devel - python3-PyQt-builder pkg-config" +build_helper="python3" +hostmakedepends="qt6-base python3-PyQt-builder pkg-config" makedepends="python3-pyqt6-network-devel qt6-networkauth-devel" depends="python3-pyqt6" short_desc="Qt6 bindings for NetworkAuth - Python 3" From f8e1f046be354a3ce6837f94c712e7549f550eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Mon, 8 Aug 2022 21:42:34 +0700 Subject: [PATCH 11/11] calibre: update to 6.13.0 --- srcpkgs/calibre/template | 50 +++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/srcpkgs/calibre/template b/srcpkgs/calibre/template index 49c132d0c187..edcd19fc81c7 100644 --- a/srcpkgs/calibre/template +++ b/srcpkgs/calibre/template @@ -1,24 +1,28 @@ # Template file for 'calibre' pkgname=calibre -version=5.44.0 -revision=2 +version=6.13.0 +revision=1 build_style=python3-module pycompile_dirs="/usr/lib/calibre/" -hostmakedepends="pkg-config python3-BeautifulSoup4 python3-Pillow python3-PyQt5-svg - python3-PyQt5-webengine python3-apsw python3-css-parser python3-dateutil - python3-devel python3-html5-parser python3-msgpack python3-regex qt5-qmake - libpodofo-devel python3-PyQt-builder python3-PyQt5-devel qt5-host-tools - python3-zeroconf xdg-utils rapydscript-ng" -makedepends="libinput-devel libmagick-devel libmtp-devel - libpodofo-devel libwmf-devel libxkbcommon-devel python3-PyQt5-devel - qt5-devel sqlite-devel tslib-devel hunspell-devel hyphen-devel libstemmer-devel" +hostmakedepends="pkg-config cmake python3-BeautifulSoup4 python3-Pillow + python3-apsw python3-css-parser python3-dateutil + python3-devel python3-html5-parser python3-msgpack python3-regex + python3-zeroconf xdg-utils rapydscript-ng libpodofo-devel + python3-pyqt6-svg python3-pyqt6-webengine python3-pyqt6-devel + qt6-base-devel python3-PyQt-builder" +makedepends="libinput-devel libmagick-devel libmtp-devel libstemmer-devel + libpodofo-devel libwmf-devel libxkbcommon-devel poppler-cpp-devel + freetype-devel uchardet-devel openssl-devel icu-devel libusb-devel + sqlite-devel tslib-devel hunspell-devel hyphen-devel libstemmer-devel + python3-pyqt6-devel python3-pyqt6-webengine-devel qt6-webengine-devel" depends="desktop-file-utils optipng poppler-utils python3-BeautifulSoup4 - python3-Markdown python3-Pillow python3-PyQt5-svg python3-zeroconf - python3-PyQt5-webengine python3-PyQt5-webchannel python3-Pygments python3-apsw + python3-Markdown python3-Pillow python3-zeroconf python3-Pygments python3-apsw python3-css-parser python3-cssselect python3-dateutil python3-jeepney python3-dnspython python3-feedparser python3-html5-parser python3-mechanize python3-msgpack python3-netifaces python3-psutil python3-regex python3-html2text - python3-pychm python3-cchardet qt5-webengine speech-dispatcher python3-sgmllib" + python3-pychm python3-cchardet speech-dispatcher python3-sgmllib + python3-html5lib + python3-pyqt6-webchannel python3-pyqt6-svg python3-pyqt6-webengine" # should check if python3-pycryptodome is still needed checkdepends="${depends} libjpeg-turbo-tools jxrlib python3-pycryptodome" short_desc="Ebook management application" @@ -27,7 +31,7 @@ license="GPL-3.0-only" homepage="https://calibre-ebook.com" changelog="https://raw.githubusercontent.com/kovidgoyal/calibre/master/Changelog.txt" distfiles="https://download.calibre-ebook.com/${version}/calibre-${version}.tar.xz" -checksum=6ffaa3eafd36a24355e5957f0f838db6db6d3456cfa17cb4d139fd94ebaf88ec +checksum=eb40f34b7106e3f36d37e0b65dacb5cec863665c68fb2350592dbc1ec133aea3 python_version=3 lib32disabled=yes nocross=yes @@ -41,15 +45,32 @@ do_configure() { -e "/import config_dir/,/os.rmdir(config_dir)/d" \ -e "s/'ctc-posml'/'text' not in mt and 'pdf' not in mt and 'xhtml'/" \ -e "s/^Name=calibre/Name=Calibre/g" + cat >"${XBPS_WRAPPERDIR}/sip-qmake" <<-_EOF + #!/bin/sh + exec /usr/lib/qt6/bin/qmake \\ + "\$@" \\ + PREFIX=/usr \\ + QT_INSTALL_PREFIX=/usr \\ + LIB=/usr/lib \\ + QMAKE_CC="$CC" QMAKE_CXX="$CXX" \\ + QMAKE_LINK="$CXX" QMAKE_LINK_C="$CC" \\ + QMAKE_CFLAGS+="$CFLAGS" \\ + QMAKE_CXXFLAGS+="$CXXFLAGS" \\ + QMAKE_LFLAGS+="$LDFLAGS" \\ + CONFIG+=no_qt_rpath + _EOF + chmod 755 ${XBPS_WRAPPERDIR}/sip-qmake } do_build() { + export QMAKE=${XBPS_WRAPPERDIR}/sip-qmake python3 setup.py build python3 setup.py gui python3 setup.py rapydscript } do_check() { + export QMAKE=${XBPS_WRAPPERDIR}/sip-qmake # qt test crashes without any error messages # disabled for now # unrar test fails because python3-unrardll isn't packaged @@ -65,6 +86,7 @@ do_check() { } do_install() { + export QMAKE=${XBPS_WRAPPERDIR}/sip-qmake vmkdir usr/share/zsh/site-functions python3 setup.py \