diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/qt-5/modules/qtwebengine.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/qt-5/modules/qtwebengine.nix | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/nixpkgs/pkgs/development/libraries/qt-5/modules/qtwebengine.nix b/nixpkgs/pkgs/development/libraries/qt-5/modules/qtwebengine.nix index 7e5582cca481..cd3fa583303d 100644 --- a/nixpkgs/pkgs/development/libraries/qt-5/modules/qtwebengine.nix +++ b/nixpkgs/pkgs/development/libraries/qt-5/modules/qtwebengine.nix @@ -2,6 +2,7 @@ , qtdeclarative, qtquickcontrols, qtlocation, qtwebchannel , bison, coreutils, flex, git, gperf, ninja, pkg-config, python2, which +, nodejs, qtbase, perl , xorg, libXcursor, libXScrnSaver, libXrandr, libXtst , fontconfig, freetype, harfbuzz, icu, dbus, libdrm @@ -16,6 +17,7 @@ , cups, darwin, openbsm, runCommand, xcbuild, writeScriptBin , ffmpeg_3 ? null , lib, stdenv, fetchpatch +, version ? null , qtCompatVersion }: @@ -25,7 +27,15 @@ qtModule { name = "qtwebengine"; qtInputs = [ qtdeclarative qtquickcontrols qtlocation qtwebchannel ]; nativeBuildInputs = [ - bison coreutils flex git gperf ninja pkg-config python2 which gn + bison coreutils flex git gperf ninja pkg-config python2 which gn nodejs + + # qmake looks for syncqt instead of syncqt.pl and fails with a cryptic + # error if it can't find it. syncqt.pl also has a /usr/bin/env shebang, so + # it can't be directly used in a sandboxed build environment. + (writeScriptBin "syncqt" '' + #!${stdenv.shell} + exec ${perl}/bin/perl ${qtbase.dev}/bin/syncqt.pl "$@" + '') ] ++ optional stdenv.isDarwin xcbuild; doCheck = true; outputs = [ "bin" "dev" "out" ]; @@ -40,9 +50,17 @@ qtModule { hardeningDisable = [ "format" ]; postPatch = - # Patch Chromium build tools '' - ( cd src/3rdparty/chromium; patchShebangs . ) + # Patch Chromium build tools + ( + cd src/3rdparty/chromium; + + # 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 + + patchShebangs . + ) '' # Prevent Chromium build script from making the path to `clang` relative to # the build directory. `clang_base_path` is the value of `QMAKE_CLANG_DIR` @@ -90,11 +108,7 @@ qtModule { '' else '' substituteInPlace src/3rdparty/chromium/base/mac/mach_port_broker.mm \ --replace "audit_token_to_pid(msg.trailer.msgh_audit)" "msg.trailer.msgh_audit.val[5]" - '') - + '' - substituteInPlace src/3rdparty/chromium/sandbox/mac/BUILD.gn \ - --replace 'libs = [ "sandbox" ]' 'libs = [ "/usr/lib/libsandbox.1.dylib" ]' - ''); + '')); NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [ # with gcc8, -Wclass-memaccess became part of -Wall and this exceeds the logging limit @@ -124,7 +138,7 @@ qtModule { if [ -d "$PWD/tools/qmake" ]; then QMAKEPATH="$PWD/tools/qmake''${QMAKEPATH:+:}$QMAKEPATH" fi - ''; + ''; qmakeFlags = if stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64 then [ "--" "-system-ffmpeg" ] ++ optional enableProprietaryCodecs "-proprietary-codecs" @@ -190,6 +204,7 @@ qtModule { buildInputs = optionals stdenv.isDarwin (with darwin; [ cups + apple_sdk.libs.sandbox # `sw_vers` is used by `src/3rdparty/chromium/build/config/mac/sdk_info.py` # to get some information about the host platform. @@ -205,15 +220,8 @@ qtModule { shift done '') - - # For sandbox.h include - (runCommand "MacOS_SDK_sandbox.h" {} '' - install -Dm444 "${lib.getDev darwin.apple_sdk.sdk}"/include/sandbox.h "$out"/include/sandbox.h - '') ]); - __impureHostDeps = optional stdenv.isDarwin "/usr/lib/libsandbox.1.dylib"; - dontUseNinjaBuild = true; dontUseNinjaInstall = true; dontUseXcbuild = true; @@ -223,12 +231,17 @@ qtModule { [Paths] Prefix = .. EOF + '' + lib.optionalString (lib.versions.majorMinor qtCompatVersion == "5.15") '' + # Fix for out-of-sync QtWebEngine and Qt releases (since 5.15.3) + sed 's/${lib.head (lib.splitString "-" version)} /${qtCompatVersion} /' -i "$out"/lib/cmake/*/*Config.cmake ''; meta = with lib; { description = "A web engine based on the Chromium web browser"; maintainers = with maintainers; [ matthewbauer ]; platforms = platforms.unix; + # This build takes a long time; particularly on slow architectures + timeout = 24 * 3600; }; } |