Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3fc3096da84d
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 9f889a4da31b
Choose a head ref
  • 4 commits
  • 9 files changed
  • 1 contributor

Commits on Mar 26, 2019

  1. qt5.qtwebengine: disable platform check using patches

    The previous code using substituteInPlace was broken for both 5.9 and
    5.11 (latter was broken after a minor release bump). Using patches
    should make things fail loudly and prevent modules/qtwebengine.nix from
    being littered with version checks.
    
    The patch for 5.12 is only tested to apply.
    veprbl committed Mar 26, 2019
    Copy the full SHA
    1809832 View commit details
  2. qt5.qtwebengine: refactor more things to use patches instead of subst…

    …ituteInPlace
    
    qt59.qtwebengine doesn't need those fixes (probably since the recent
    minor version bump)
    veprbl committed Mar 26, 2019
    Copy the full SHA
    ccd1bf6 View commit details
  3. qt59.qtwebengine: fix on darwin

    This ports a patch that is already used in 5.11. Also one of the
    substituteInPlace call fails because a file doesn't exist.
    veprbl committed Mar 26, 2019
    Copy the full SHA
    0624deb View commit details

Commits on Mar 27, 2019

  1. Merge pull request #56440 from veprbl/pr/qt5_qtwebengine_darwin_fix2

    qt5.qtwebengine: fix on darwin (again)
    veprbl authored Mar 27, 2019
    Copy the full SHA
    9f889a4 View commit details
6 changes: 5 additions & 1 deletion pkgs/development/libraries/qt-5/5.11/default.nix
Original file line number Diff line number Diff line change
@@ -64,7 +64,11 @@ let
qttools = [ ./qttools.patch ];
qtwebengine = [ ./qtwebengine-no-build-skip.patch ]
++ optional stdenv.cc.isClang ./qtwebengine-clang-fix.patch
++ optional stdenv.isDarwin ./qtwebengine-darwin-sdk-10.10.patch;
++ optionals stdenv.isDarwin [
./qtwebengine-darwin-no-platform-check.patch
./qtwebengine-darwin-sdk-10.10.patch
./qtwebengine-darwin-old-sdk.patch
];
qtwebkit = [ ./qtwebkit.patch ]
++ optionals stdenv.isDarwin [
./qtwebkit-darwin-no-readline.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
diff --git a/mkspecs/features/platform.prf b/mkspecs/features/platform.prf
--- a/mkspecs/features/platform.prf
+++ b/mkspecs/features/platform.prf
@@ -38,10 +38,6 @@ defineTest(isPlatformSupported) {
return(false)
}
} else:osx {
- !isMinXcodeVersion(7, 3) {
- skipBuild("Using Xcode version $$QMAKE_XCODE_VERSION, but at least version 7.3 is required to build Qt WebEngine.")
- return(false)
- }
!clang|intel_icc {
skipBuild("Qt WebEngine on macOS requires Clang.")
return(false)
@@ -52,10 +48,6 @@ defineTest(isPlatformSupported) {
skipBuild("Building Qt WebEngine requires macOS version 10.11 or newer.")
return(false)
}
- !isMinOSXSDKVersion(10, 10): {
- skipBuild("Building Qt WebEngine requires a macOS SDK version of 10.11 or newer. Current version is $${WEBENGINE_OSX_SDK_PRODUCT_VERSION}.")
- return(false)
- }
} else {
skipBuild("Unknown platform. Qt WebEngine only supports Linux, Windows, and macOS.")
return(false)
diff --git a/src/core/config/mac_osx.pri b/src/core/config/mac_osx.pri
--- a/src/core/config/mac_osx.pri
+++ b/src/core/config/mac_osx.pri
@@ -5,8 +5,6 @@ load(functions)
# otherwise query for it.
QMAKE_MAC_SDK_VERSION = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.SDKVersion)
isEmpty(QMAKE_MAC_SDK_VERSION) {
- QMAKE_MAC_SDK_VERSION = $$system("/usr/bin/xcodebuild -sdk $${QMAKE_MAC_SDK} -version SDKVersion 2>/dev/null")
- isEmpty(QMAKE_MAC_SDK_VERSION): error("Could not resolve SDK version for \'$${QMAKE_MAC_SDK}\'")
}

QMAKE_CLANG_DIR = "/usr"
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
diff --git a/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm b/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm
--- a/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm
+++ b/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm
@@ -45,7 +45,7 @@ NSString *RTCFieldTrialTrendlineFilterValue(
return [NSString stringWithFormat:format, windowSize, smoothingCoeff, thresholdGain];
}

-void RTCInitFieldTrialDictionary(NSDictionary<NSString *, NSString *> *fieldTrials) {
+void RTCInitFieldTrialDictionary(NSDictionary *fieldTrials) {
if (!fieldTrials) {
RTCLogWarning(@"No fieldTrials provided.");
return;
diff --git a/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCFieldTrials.h b/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCFieldTrials.h
--- a/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCFieldTrials.h
+++ b/src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCFieldTrials.h
@@ -40,4 +40,4 @@ RTC_EXTERN NSString *RTCFieldTrialTrendlineFilterValue(
* Must be called before any other call into WebRTC. See:
* webrtc/system_wrappers/include/field_trial_default.h
*/
-RTC_EXTERN void RTCInitFieldTrialDictionary(NSDictionary<NSString *, NSString *> *fieldTrials);
+RTC_EXTERN void RTCInitFieldTrialDictionary(NSDictionary *fieldTrials);
3 changes: 2 additions & 1 deletion pkgs/development/libraries/qt-5/5.12/default.nix
Original file line number Diff line number Diff line change
@@ -63,7 +63,8 @@ let
qtwebengine = [
./qtwebengine-no-build-skip.patch
./qtwebengine-CVE-2019-5786.patch
];
]
++ optional stdenv.isDarwin ./qtwebengine-darwin-no-platform-check.patch;
qtwebkit = [ ./qtwebkit.patch ]
++ optionals stdenv.isDarwin [
./qtwebkit-darwin-no-readline.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
diff --git a/mkspecs/features/platform.prf b/mkspecs/features/platform.prf
--- a/mkspecs/features/platform.prf
+++ b/mkspecs/features/platform.prf
@@ -40,8 +40,6 @@ defineTest(isPlatformSupported) {
} else:osx {
# FIXME: Try to get it back down to 8.2 for building on OS X 10.11
!isMinXcodeVersion(8, 3, 3) {
- skipBuild("Using Xcode version $$QMAKE_XCODE_VERSION, but at least version 8.3.3 is required to build Qt WebEngine.")
- return(false)
}
!clang|intel_icc {
skipBuild("Qt WebEngine on macOS requires Clang.")
@@ -54,8 +52,6 @@ defineTest(isPlatformSupported) {
return(false)
}
!isMinOSXSDKVersion(10, 12): {
- skipBuild("Building Qt WebEngine requires a macOS SDK version of 10.12 or newer. Current version is $${WEBENGINE_OSX_SDK_PRODUCT_VERSION}.")
- return(false)
}
} else {
skipBuild("Unknown platform. Qt WebEngine only supports Linux, Windows, and macOS.")
4 changes: 3 additions & 1 deletion pkgs/development/libraries/qt-5/5.9/default.nix
Original file line number Diff line number Diff line change
@@ -43,7 +43,9 @@ let
qtscript = [ ./qtscript.patch ];
qtserialport = [ ./qtserialport.patch ];
qttools = [ ./qttools.patch ];
qtwebengine = [ ./qtwebengine-no-build-skip.patch ];
qtwebengine = [ ./qtwebengine-no-build-skip.patch ]
++ optional stdenv.cc.isClang ./qtwebengine-clang-fix.patch
++ optional stdenv.isDarwin ./qtwebengine-darwin-no-platform-check.patch;
qtwebkit = [ ./qtwebkit.patch ];
qtvirtualkeyboard = [
(fetchpatch {
38 changes: 38 additions & 0 deletions pkgs/development/libraries/qt-5/5.9/qtwebengine-clang-fix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
Fix a following build error:

In file included from ../../3rdparty/chromium/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm:7:
In file included from ../../3rdparty/chromium/base/bind.h:8:
../../3rdparty/chromium/base/bind_internal.h:214:31: error: cannot initialize a parameter of type 'NSError *' with an lvalue of type 'const long'
return (receiver.*method)(std::forward<RunArgs>(args)...);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../3rdparty/chromium/base/bind_internal.h:285:20: note: in instantiation of function template specialization 'base::internal::FunctorTraits<void (device::BluetoothRemoteGat
tCharacteristicMac::*)(NSError *), void>::Invoke<device::BluetoothRemoteGattCharacteristicMac *, const long &>' requested here
return Traits::Invoke(std::forward<Functor>(functor),
^
../../3rdparty/chromium/base/bind_internal.h:361:43: note: in instantiation of function template specialization 'base::internal::InvokeHelper<false, void>::MakeItSo<void (devi
ce::BluetoothRemoteGattCharacteristicMac::*const &)(NSError *), device::BluetoothRemoteGattCharacteristicMac *, const long &>' requested here
return InvokeHelper<is_weak_call, R>::MakeItSo(
^
../../3rdparty/chromium/base/bind_internal.h:339:12: note: in instantiation of function template specialization 'base::internal::Invoker<base::internal::BindState<void (device::BluetoothRemoteGattCharacteristicMac::*)(NSError *), base::internal::UnretainedWrapper<device::BluetoothRemoteGattCharacteristicMac>, long>, void ()>::RunImpl<void (device::BluetoothRemoteGattCharacteristicMac::*const &)(NSError *), const std::__1::tuple<base::internal::UnretainedWrapper<device::BluetoothRemoteGattCharacteristicMac>, long> &, 0, 1>' requested here
return RunImpl(storage->functor_,
^
../../3rdparty/chromium/base/bind.h:62:45: note: in instantiation of member function 'base::internal::Invoker<base::internal::BindState<void (device::BluetoothRemoteGattCharacteristicMac::*)(NSError *), base::internal::UnretainedWrapper<device::BluetoothRemoteGattCharacteristicMac>, long>, void ()>::Run' requested here
PolymorphicInvoke invoke_func = &Invoker::Run;
^
../../3rdparty/chromium/base/bind.h:77:10: note: in instantiation of function template specialization 'base::BindRepeating<void (device::BluetoothRemoteGattCharacteristicMac::*)(NSError *), base::internal::UnretainedWrapper<device::BluetoothRemoteGattCharacteristicMac>, long>' requested here
return BindRepeating(std::forward<Functor>(functor),
^
../../3rdparty/chromium/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm:241:15: note: in instantiation of function template specialization 'base::Bind<void (device::BluetoothRemoteGattCharacteristicMac::*)(NSError *), base::internal::UnretainedWrapper<device::BluetoothRemoteGattCharacteristicMac>, long>' requested here
base::Bind(&BluetoothRemoteGattCharacteristicMac::DidWriteValue,

--- a/src/3rdparty/chromium/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm
+++ b/src/3rdparty/chromium/device/bluetooth/bluetooth_remote_gatt_characteristic_mac.mm
@@ -239,7 +239,7 @@ void BluetoothRemoteGattCharacteristicMac::WriteRemoteCharacteristic(
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::Bind(&BluetoothRemoteGattCharacteristicMac::DidWriteValue,
- base::Unretained(this), nil));
+ base::Unretained(this), nullptr));
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf
--- a/mkspecs/features/configure.prf
+++ b/mkspecs/features/configure.prf
@@ -194,9 +194,6 @@ defineTest(runConfigure) {
} else {
log("Native Spellchecker .............. Not enabled (Default, enable with WEBENGINE_CONFIG+=use_native_spellchecker)$${EOL}")
}
- !isMinOSXSDKVersion(10, 10, 3) {
- log(" Force Touch API usage .............. Not enabled (Because the OS X SDK version to be used \"$${WEBENGINE_OSX_SDK_PRODUCT_VERSION}\" is lower than the required \"10.10.3\")$${EOL}")
- }
}
}

diff --git a/mkspecs/features/functions.prf b/mkspecs/features/functions.prf
--- a/mkspecs/features/functions.prf
+++ b/mkspecs/features/functions.prf
@@ -38,10 +38,6 @@ defineTest(isPlatformSupported) {
return(false)
}
} else:osx {
- !isMinXcodeVersion(5, 1) {
- skipBuild("Using XCode version $$QMAKE_XCODE_VERSION, but at least version 5.1 is required to build Qt WebEngine.")
- return(false)
- }
!clang|intel_icc {
skipBuild("Qt WebEngine on macOS requires Clang.")
return(false)
@@ -52,10 +48,6 @@ defineTest(isPlatformSupported) {
skipBuild("Qt WebEngine requires OS X version 10.10 or newer.")
return(false)
}
- !isMinOSXSDKVersion(10, 10): {
- skipBuild("Qt WebEngine requires an OS X SDK version of 10.10 or newer. Current version is $${WEBENGINE_OSX_SDK_PRODUCT_VERSION}.")
- return(false)
- }
} else {
skipBuild("Unknown platform. Qt WebEngine only supports Linux, Windows, and OS X.")
return(false)
diff --git a/src/core/config/mac_osx.pri b/src/core/config/mac_osx.pri
--- a/src/core/config/mac_osx.pri
+++ b/src/core/config/mac_osx.pri
@@ -5,8 +5,6 @@ load(functions)
# otherwise query for it.
QMAKE_MAC_SDK_VERSION = $$eval(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.SDKVersion)
isEmpty(QMAKE_MAC_SDK_VERSION) {
- QMAKE_MAC_SDK_VERSION = $$system("/usr/bin/xcodebuild -sdk $${QMAKE_MAC_SDK} -version SDKVersion 2>/dev/null")
- isEmpty(QMAKE_MAC_SDK_VERSION): error("Could not resolve SDK version for \'$${QMAKE_MAC_SDK}\'")
}

QMAKE_CLANG_DIR = "/usr"
31 changes: 4 additions & 27 deletions pkgs/development/libraries/qt-5/modules/qtwebengine.nix
Original file line number Diff line number Diff line change
@@ -67,32 +67,12 @@ qtModule {
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 \
--replace "/usr/bin/xcodebuild" "xcodebuild"
substituteInPlace src/3rdparty/chromium/build/mac_toolchain.py \
--replace "/usr/bin/xcode-select" "xcode-select"
substituteInPlace src/core/config/mac_osx.pri \
--replace /usr ${stdenv.cc} \
--replace "isEmpty(QMAKE_MAC_SDK_VERSION)" false
--replace /usr ${stdenv.cc}
''
# TODO remove when new Apple SDK is in
+ (if lib.versionOlder qtCompatVersion "5.11" then ''
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"
'' else ''
substituteInPlace src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm \
--replace "NSDictionary<NSString *, NSString *> *" "NSDictionary*"
substituteInPlace src/3rdparty/chromium/third_party/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCFieldTrials.h \
--replace "NSDictionary<NSString *, NSString *> *" "NSDictionary*"
+ (optionalString (lib.versionAtLeast qtCompatVersion "5.11") ''
substituteInPlace src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn \
--replace '$sysroot/usr' "${darwin.xnu}"
'')
+ ''
@@ -114,9 +94,6 @@ print('sdk_platform_path=""')
print('sdk_build="17B41"')
EOF
substituteInPlace src/3rdparty/chromium/third_party/crashpad/crashpad/util/BUILD.gn \
--replace '$sysroot/usr' "${darwin.xnu}"
# 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]"