0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-14 14:10:33 +03:00
nixpkgs/pkgs/development/libraries/qt-6/modules/qtwebengine/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

299 lines
6.5 KiB
Nix
Raw Normal View History

2021-10-16 14:22:24 +02:00
{
qtModule,
qtdeclarative,
qtwebchannel,
qtpositioning,
qtwebsockets,
2022-07-16 14:55:12 +02:00
buildPackages,
2021-10-16 14:22:24 +02:00
bison,
coreutils,
flex,
git,
gperf,
ninja,
pkg-config,
python3,
which,
nodejs,
xorg,
libXcursor,
libXScrnSaver,
libXrandr,
libXtst,
libxshmfence,
libXi,
cups,
2021-10-16 14:22:24 +02:00
fontconfig,
freetype,
harfbuzz,
icu,
dbus,
libdrm,
zlib,
minizip,
libjpeg,
libpng,
libtiff,
libwebp,
libopus,
jsoncpp,
protobuf,
libvpx,
srtp,
snappy,
nss,
libevent,
openssl,
alsa-lib,
pulseaudio,
libcap,
pciutils,
systemd,
pipewire,
gn,
ffmpeg,
2021-10-16 14:22:24 +02:00
lib,
stdenv,
glib,
libxml2,
libxslt,
lcms2,
2022-05-25 09:51:34 +08:00
libkrb5,
libgbm,
2021-10-16 14:22:24 +02:00
enableProprietaryCodecs ? true,
# darwin
bootstrap_cmds,
cctools,
xcbuild,
2021-10-16 14:22:24 +02:00
}:
qtModule {
2021-10-16 14:22:24 +02:00
pname = "qtwebengine";
nativeBuildInputs =
[
bison
coreutils
flex
git
gperf
ninja
pkg-config
(python3.withPackages (ps: with ps; [ html5lib ]))
which
gn
nodejs
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
bootstrap_cmds
cctools
xcbuild
2021-10-16 14:22:24 +02:00
];
doCheck = true;
outputs = [
"out"
"dev"
];
dontUseGnConfigure = true;
# ninja builds some components with -Wno-format,
# which cannot be set at the same time as -Wformat-security
hardeningDisable = [ "format" ];
patches = [
# Don't assume /usr/share/X11, and also respect the XKB_CONFIG_ROOT
# environment variable, since NixOS relies on it working.
# See https://github.com/NixOS/nixpkgs/issues/226484 for more context.
./xkb-includes.patch
./link-pulseaudio.patch
# Override locales install path so they go to QtWebEngine's $out
./locales-path.patch
2025-03-27 12:16:52 +03:00
# Fix build with Pipewire 1.4
./pipewire-1.4.patch
# Reproducibility QTBUG-136068
./gn-object-sorted.patch
];
2021-10-16 14:22:24 +02:00
postPatch =
''
# Patch Chromium build tools
(
cd src/3rdparty/chromium;
2021-10-16 14:22:24 +02:00
# Manually fix unsupported shebangs
substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
--replace "/usr/bin/env -S make -f" "/usr/bin/make -f" || true
2022-09-29 19:49:43 +08:00
substituteInPlace third_party/webgpu-cts/src/tools/run_deno \
2021-10-16 14:22:24 +02:00
--replace "/usr/bin/env -S deno" "/usr/bin/deno" || true
patchShebangs .
)
2022-07-16 14:55:12 +02:00
substituteInPlace cmake/Functions.cmake \
--replace "/bin/bash" "${buildPackages.bash}/bin/bash"
# Patch library paths in sources
substituteInPlace src/core/web_engine_library_info.cpp \
--replace "QLibraryInfo::path(QLibraryInfo::DataPath)" "\"$out\"" \
--replace "QLibraryInfo::path(QLibraryInfo::TranslationsPath)" "\"$out/translations\"" \
--replace "QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath)" "\"$out/libexec\""
substituteInPlace configure.cmake src/gn/CMakeLists.txt \
--replace "AppleClang" "Clang"
# Disable metal shader compilation, Xcode only
substituteInPlace src/3rdparty/chromium/third_party/angle/src/libANGLE/renderer/metal/metal_backend.gni \
--replace-fail 'angle_has_build && !is_ios && target_os == host_os' "false"
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
2021-10-16 14:22:24 +02:00
sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \
src/3rdparty/chromium/device/udev_linux/udev?_loader.cc
2021-10-16 14:22:24 +02:00
sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
src/3rdparty/chromium/gpu/config/gpu_info_collector_linux.cc
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace cmake/Functions.cmake \
--replace "/usr/bin/xcrun" "${xcbuild}/bin/xcrun"
2021-10-16 14:22:24 +02:00
'';
2021-10-16 14:22:24 +02:00
cmakeFlags =
[
"-DQT_FEATURE_qtpdf_build=ON"
"-DQT_FEATURE_qtpdf_widgets_build=ON"
"-DQT_FEATURE_qtpdf_quick_build=ON"
"-DQT_FEATURE_pdf_v8=ON"
"-DQT_FEATURE_pdf_xfa=ON"
"-DQT_FEATURE_pdf_xfa_bmp=ON"
"-DQT_FEATURE_pdf_xfa_gif=ON"
"-DQT_FEATURE_pdf_xfa_png=ON"
"-DQT_FEATURE_pdf_xfa_tiff=ON"
"-DQT_FEATURE_webengine_system_libevent=ON"
"-DQT_FEATURE_webengine_system_ffmpeg=ON"
# android only. https://bugreports.qt.io/browse/QTBUG-100293
# "-DQT_FEATURE_webengine_native_spellchecker=ON"
"-DQT_FEATURE_webengine_sanitizer=ON"
"-DQT_FEATURE_webengine_kerberos=ON"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
2024-01-20 04:01:29 +01:00
"-DQT_FEATURE_webengine_system_libxml=ON"
"-DQT_FEATURE_webengine_webrtc_pipewire=ON"
# Appears not to work on some platforms
# https://github.com/Homebrew/homebrew-core/issues/104008
"-DQT_FEATURE_webengine_system_icu=ON"
]
++ lib.optionals enableProprietaryCodecs [
"-DQT_FEATURE_webengine_proprietary_codecs=ON"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
"-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0" # Per Qt 6s deployment target (why doesnt the hook work?)
];
2021-10-16 14:22:24 +02:00
propagatedBuildInputs =
[
qtdeclarative
qtwebchannel
qtwebsockets
qtpositioning
2021-10-16 14:22:24 +02:00
# Image formats
libjpeg
libpng
libtiff
libwebp
2021-10-16 14:22:24 +02:00
# Video formats
srtp
libvpx
2021-10-16 14:22:24 +02:00
# Audio formats
libopus
2021-10-16 14:22:24 +02:00
# Text rendering
harfbuzz
2021-10-16 14:22:24 +02:00
openssl
glib
libxslt
lcms2
2021-10-16 14:22:24 +02:00
libevent
ffmpeg
]
++ lib.optionals stdenv.hostPlatform.isLinux [
2021-10-16 14:22:24 +02:00
dbus
zlib
minizip
snappy
nss
protobuf
jsoncpp
2024-01-20 04:01:29 +01:00
icu
libxml2
2021-10-16 14:22:24 +02:00
# Audio formats
alsa-lib
pulseaudio
2021-10-16 14:22:24 +02:00
# Text rendering
fontconfig
freetype
2021-10-16 14:22:24 +02:00
libcap
pciutils
2021-10-16 14:22:24 +02:00
# X11 libs
xorg.xrandr
libXScrnSaver
libXcursor
libXrandr
xorg.libpciaccess
libXtst
xorg.libXcomposite
xorg.libXdamage
libdrm
xorg.libxkbfile
libxshmfence
libXi
xorg.libXext
2021-10-16 14:22:24 +02:00
# Pipewire
pipewire
2022-05-25 09:51:34 +08:00
libkrb5
libgbm
2021-10-16 14:22:24 +02:00
];
buildInputs = [
cups
];
requiredSystemFeatures = [ "big-parallel" ];
preConfigure = ''
export NINJAFLAGS="-j$NIX_BUILD_CORES"
'';
2024-10-19 22:26:40 +03:00
# Debug info is too big to link with LTO.
separateDebugInfo = false;
2021-10-16 14:22:24 +02:00
meta = with lib; {
description = "Web engine based on the Chromium web browser";
platforms = [
"x86_64-darwin"
"aarch64-darwin"
"aarch64-linux"
"armv7a-linux"
"armv7l-linux"
"x86_64-linux"
];
2021-10-16 14:22:24 +02:00
# This build takes a long time; particularly on slow architectures
# 1 hour on 32x3.6GHz -> maybe 12 hours on 4x2.4GHz
timeout = 24 * 3600;
};
}