diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2018-04-24 23:18:35 -0500 |
---|---|---|
committer | Matthew Bauer <mjbauer95@gmail.com> | 2018-04-24 23:57:46 -0500 |
commit | ec632b745fb72e5070983dd3dff78ed81466243d (patch) | |
tree | a5c8d6c2e74538cc771344a977760f8d6cf67eeb /pkgs/development/libraries | |
parent | b87cb29d1be6a7729199aa33a5f0e5fd5f9801ef (diff) | |
download | nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.tar nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.tar.gz nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.tar.bz2 nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.tar.lz nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.tar.xz nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.tar.zst nixpkgs-ec632b745fb72e5070983dd3dff78ed81466243d.zip |
qtwebengine: rewrite
Fixes #39334 and Fixes #36729 Also, Fixes #36932 (hopefully it's still building) (This might be able to be able to be cherry-picked to 18.03 but be careful - chromium is extremely touchy. Probably best to wait for it to be built successfully on Hydra a few times.)
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r-- | pkgs/development/libraries/qt-5/mkDerivation.nix | 5 | ||||
-rw-r--r-- | pkgs/development/libraries/qt-5/modules/qtwebengine.nix | 95 |
2 files changed, 82 insertions, 18 deletions
diff --git a/pkgs/development/libraries/qt-5/mkDerivation.nix b/pkgs/development/libraries/qt-5/mkDerivation.nix index 739c9b4a160..96014cfbc77 100644 --- a/pkgs/development/libraries/qt-5/mkDerivation.nix +++ b/pkgs/development/libraries/qt-5/mkDerivation.nix @@ -9,9 +9,8 @@ args: let args_ = { - qmakeFlags = - (args.qmakeFlags or []) - ++ [ ("CONFIG+=" + (if debug then "debug" else "release")) ]; + qmakeFlags = [ ("CONFIG+=" + (if debug then "debug" else "release")) ] + ++ (args.qmakeFlags or []); NIX_CFLAGS_COMPILE = optional (!debug) "-DQT_NO_DEBUG" diff --git a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix index 08345510d78..e798d529ce1 100644 --- a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix +++ b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix @@ -11,9 +11,8 @@ , libcap , pciutils , systemd - , enableProprietaryCodecs ? true - +, gn, darwin, openbsm , lib, stdenv # lib.optional, needsPax }: @@ -25,7 +24,7 @@ qtModule { name = "qtwebengine"; qtInputs = [ qtdeclarative qtquickcontrols qtlocation qtwebchannel ]; nativeBuildInputs = [ - bison coreutils flex git gperf ninja pkgconfig python2 which + bison coreutils flex git gperf ninja pkgconfig python2 which gn ]; doCheck = true; outputs = [ "bin" "dev" "out" ]; @@ -61,8 +60,50 @@ qtModule { sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \ src/3rdparty/chromium/gpu/config/gpu_info_collector_linux.cc + '' + + optionalString stdenv.isDarwin '' + # Remove annoying xcode check + substituteInPlace mkspecs/features/platform.prf \ + --replace "lessThan(QMAKE_XCODE_VERSION, 7.3)" false + substituteInPlace src/core/config/mac_osx.pri \ + --replace /usr ${stdenv.cc} \ + --replace "isEmpty(QMAKE_MAC_SDK_VERSION)" false + + # FIXME Needed with old Apple SDKs + # Abandon all hope ye who try to make sense of this. + substituteInPlace src/3rdparty/chromium/base/mac/foundation_util.mm \ + --replace "NSArray<NSString*>*" "NSArray*" + substituteInPlace src/3rdparty/chromium/base/mac/sdk_forward_declarations.h \ + --replace "NSDictionary<VNImageOption, id>*" "NSDictionary*" \ + --replace "NSArray<VNRequest*>*" "NSArray*" \ + --replace "typedef NSString* VNImageOption NS_STRING_ENUM" "typedef NSString* VNImageOption" + + cat <<EOF > src/3rdparty/chromium/build/mac/find_sdk.py +#!/usr/bin/env python +print("10.10.0") +print("") +EOF + + cat <<EOF > src/3rdparty/chromium/build/config/mac/sdk_info.py +#!/usr/bin/env python +print('xcode_version="9.1"') +print('xcode_version_int=9') +print('xcode_build="9B55"') +print('machine_os_build="17E199"') +print('sdk_path=""') +print('sdk_version="10.10"') +print('sdk_platform_path=""') +print('sdk_build="17B41"') +EOF + + # Apple has some secret stuff they don't share with OpenBSM + 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/bootstrap_sandbox.cc \ + --replace "audit_token_to_pid(msg.trailer.msgh_audit)" "msg.trailer.msgh_audit.val[5]" ''; + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_10 -DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_10"; preConfigure = '' export NINJAFLAGS=-j$NIX_BUILD_CORES @@ -70,13 +111,9 @@ qtModule { if [ -d "$PWD/tools/qmake" ]; then QMAKEPATH="$PWD/tools/qmake''${QMAKEPATH:+:}$QMAKEPATH" fi - ''; + ''; - qmakeFlags = - [ - # Use system Ninja because bootstrapping it is fragile - "WEBENGINE_CONFIG+=use_system_ninja" - ] ++ optional enableProprietaryCodecs "WEBENGINE_CONFIG+=use_proprietary_codecs"; + qmakeFlags = optional enableProprietaryCodecs "-- -proprietary-codecs"; propagatedBuildInputs = [ # Image formats @@ -90,9 +127,10 @@ qtModule { # Text rendering harfbuzz icu - ] - ++ optionals (!stdenv.isDarwin) [ - dbus zlib minizip snappy nss protobuf jsoncpp libevent + + libevent + ] ++ optionals (!stdenv.isDarwin) [ + dbus zlib minizip snappy nss protobuf jsoncpp # Audio formats alsaLib @@ -106,17 +144,44 @@ qtModule { # X11 libs xorg.xrandr libXScrnSaver libXcursor libXrandr xorg.libpciaccess libXtst xorg.libXcomposite xorg.libXdamage libdrm - ]; + ] + + # FIXME These dependencies shouldn't be needed but can't find a way + # around it. Chromium pulls this in while bootstrapping GN. + ++ lib.optionals stdenv.isDarwin (with darwin; with apple_sdk.frameworks; [ + libobjc + cctools + + # frameworks + ApplicationServices + Foundation + AppKit + ImageCaptureCore + CoreBluetooth + IOBluetooth + CoreWLAN + Quartz + Cocoa + + openbsm + libunwind + ]); dontUseNinjaBuild = true; dontUseNinjaInstall = true; - postInstall = '' + postInstall = lib.optionalString stdenv.isLinux '' cat > $out/libexec/qt.conf <<EOF [Paths] Prefix = .. EOF - paxmark m $out/libexec/QtWebEngineProcess ''; + + meta = with lib; { + description = "A web engine based on the Chromium web browser"; + maintainers = with maintainers; [ matthewbauer ]; + platforms = platforms.unix; + }; + } |