chore: upgrade qt to 5.15.14

This commit is contained in:
Siddarth Kumar 2024-07-19 17:14:34 +05:30
parent 734c3f65bd
commit b02eb7f753
No known key found for this signature in database
GPG Key ID: 599D10112BF518DB
53 changed files with 829 additions and 312 deletions

View File

@ -7,12 +7,12 @@ Check for any minor version changes.
*/ */
{ newScope, generateSplicesForMkScope { makeScopeWithSplicing', generateSplicesForMkScope
, lib, stdenv, fetchurl, fetchgit, fetchpatch, fetchFromGitHub, makeSetupHook, makeWrapper , lib, stdenv, fetchurl, fetchgit, fetchpatch, fetchFromGitHub, makeSetupHook, makeWrapper
, bison, cups ? null, harfbuzz, libGL, perl, python3 , bison, cups ? null, harfbuzz, libGL, perl, python3
, gstreamer, gst-plugins-base, gtk3, dconf , gstreamer, gst-plugins-base, gtk3, dconf
, llvmPackages_15, overrideSDK, overrideLibcxx
, darwin , darwin
, buildPackages
# options # options
, developerBuild ? false , developerBuild ? false
@ -23,7 +23,7 @@ Check for any minor version changes.
let let
srcs = import ./srcs.nix { inherit lib fetchgit fetchFromGitHub; }; srcs = import ./srcs.nix { inherit lib fetchgit fetchFromGitHub; } // { __attrsFailEvaluation = true; };
qtCompatVersion = srcs.qtbase.version; qtCompatVersion = srcs.qtbase.version;
@ -51,32 +51,146 @@ let
./qtdeclarative.patch ./qtdeclarative.patch
# prevent headaches from stale qmlcache data # prevent headaches from stale qmlcache data
./qtdeclarative-default-disable-qmlcache.patch ./qtdeclarative-default-disable-qmlcache.patch
# add version specific QML import path
./qtdeclarative-qml-paths.patch
];
qtlocation = lib.optionals stdenv.cc.isClang [
# Fix build with Clang 16
(fetchpatch {
url = "https://github.com/boostorg/numeric_conversion/commit/50a1eae942effb0a9b90724323ef8f2a67e7984a.patch";
stripLen = 1;
extraPrefix = "src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/";
hash = "sha256-UEvIXzn387f9BAeBdhheStD/4M7en+rmqX8C6gstl6k=";
})
];
qtmultimedia = lib.optionals stdenv.isDarwin [
# build patch for qtmultimedia with xcode 15
(fetchpatch {
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/3f509180/qt5/qt5-qtmultimedia-xcode15.patch";
stripLen = 1;
hash = "sha256-HrEqfmm8WbapWgLM0L4AKW8168pwT2zYI8HOJruEPSs=";
})
];
qtpim = [
## Upstream patches after the Qt6 transition that apply without problems & fix bugs
# Fixes QList -> QSet conversion
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/f337e281e28904741a3b1ac23d15c3a83ef2bbc9.patch";
hash = "sha256-zlxD45JnbhIgdJxMmGxGMUBcQPcgzpu3s4bLX939jL0=";
})
# Fixes invalid syntax from a previous bad patch in tests
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/2aefdd8bd28a4decf9ef8381f5b255f39f1ee90c.patch";
hash = "sha256-mg93QF3hi50igw1/Ok7fEs9iCaN6co1+p2/5fQtxTmc=";
})
# Unit test account for QList index change
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/79b41af6a4117f5efb0298289e20c30b4d0b0b2e.patch";
hash = "sha256-u+cLl4lu6r2+j5GAiasqbB6/OZPz5A6GpSB33vd/VBg=";
})
# Remove invalid method overload which confuses the QML engine
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/5679a6141c76ae7d64c3acc8a87b1adb048289e0.patch";
hash = "sha256-z8f8kLhC9CqBOfGPL8W9KJq7MwALAAicXfRkHiQEVJ4=";
})
# Specify enum flag type properly in unit test
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/a43cc24e57db8d3c3939fa540d67da3294dcfc5c.patch";
hash = "sha256-SsYkxX6prxi8VRZr4az+wqawcRN8tR3UuIFswJL+3T4=";
})
# Update qHash methods to return size_t instead of uint
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/9c698155d82fc2b68a87c59d0443c33f9085b117.patch";
hash = "sha256-rb8D8taaglhQikYSAPrtLvazgIw8Nga/a9+J21k8gIo=";
})
# Mark virtual methods with override keyword
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/f34cf2ff2b0f428d5b8a70763b29088075ebbd1c.patch";
hash = "sha256-tNPOEVpx1eqHx5T23ueW32KxMQ/SB+TBCJ4PZ6SA3LI=";
})
# Fix calendardemo example
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/a66590d473753bc49105d3132fb9e4150c92a14a.patch";
hash = "sha256-RPRtGQ24NQYewnv6+IqYITpwD/XxuK68a1iKgFmKm3c=";
})
# Make the tests pass on big endian systems
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/7802f038ed1391078e27fa3f37d785a69314537b.patch";
hash = "sha256-hogUXyPXjGE0q53PWOjiQbQ2YzOsvrJ7mo9djGIbjVQ=";
})
# Fix some deprecated QChar constructor issues in unit tests
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/114615812dcf9398c957b0833e860befe15f840f.patch";
hash = "sha256-yZ1qs8y5DSq8FDXRPyuSPRIzjEUTWAhpVide/b+xaLQ=";
})
# Accessors should be const
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/a2bf7cdf05c264b5dd2560f799760b5508f154e4.patch";
hash = "sha256-+YfPrKyOKnPkqFokwW/aDsEivg4TzdJwQpDdAtM+rQE=";
})
# Enforce detail access constraints in contact operations by default
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/8765a35233aa21a932ee92bbbb92a5f8edd4dc68.patch";
hash = "sha256-vp/enerVecEXz4zyxQ66DG+fVVWxI4bYnLj92qaaqNk=";
})
# Fixes broken file generation, which breaks reverse dependencies that try to find one of its modules
(fetchpatch {
url = "https://github.com/qt/qtpim/commit/4b2bdce30bd0629c9dc0567af6eeaa1d038f3152.patch";
hash = "sha256-2dXhkZyxPvY2KQq2veerAlpXkpU5/FeArWRlm1aOcEY=";
})
## Patches that haven't been upstreamed
# Fix tst_QContactManager::compareVariant_data test
(fetchpatch {
url = "https://salsa.debian.org/qt-kde-team/qt/qtpim/-/raw/360682f88457b5ae7c92f32f574e51ccc5edbea0/debian/patches/1001_fix-qtdatetime-null-comparison.patch";
hash = "sha256-k/rO9QjwSlRChwFTZLkxDjZWqFkua4FNbaNf1bJKLxc=";
})
# Avoid crash while parsing vCards from different threads
(fetchpatch {
url = "https://salsa.debian.org/qt-kde-team/qt/qtpim/-/raw/360682f88457b5ae7c92f32f574e51ccc5edbea0/debian/patches/1002_Avoid-crash-while-parsing-vcards-from-different-threads.patch";
hash = "sha256-zhayAoWgcmKosEGVBy2k6a2e6BxyVwfGX18tBbzqEk8=";
})
# Adapt to JSON parser behavior change in Qt 5.15
(fetchpatch {
url = "https://salsa.debian.org/qt-kde-team/qt/qtpim/-/raw/360682f88457b5ae7c92f32f574e51ccc5edbea0/debian/patches/1003_adapt_to_json_parser_change.patch";
hash = "sha256-qAIa48hmDd8vMH/ywqW+22vISKai76XnjgFuB+tQbIU=";
})
# Fix version being 0.0.0
(fetchpatch {
url = "https://salsa.debian.org/qt-kde-team/qt/qtpim/-/raw/360682f88457b5ae7c92f32f574e51ccc5edbea0/debian/patches/2000_revert_module_version.patch";
hash = "sha256-6wg/eVu9J83yvIO428U1FX3otz58tAy6pCvp7fqOBKU=";
})
]; ];
qtscript = [ ./qtscript.patch ]; qtscript = [ ./qtscript.patch ];
qtserialport = [ ./qtserialport.patch ]; qtserialport = [ ./qtserialport.patch ];
qtsystems = [
# Fix crash if no X11 display available
(fetchpatch {
url = "https://salsa.debian.org/qt-kde-team/qt/qtsystems/-/raw/1a4df40671d6f1bb0657a9dfdae4cd9bd48fcf21/debian/patches/1005_check_XOpenDisplay.patch";
hash = "sha256-/onla2nlUSySEgz2IYOYajx/LZkJzAKDyxwAZzy0Ivs=";
})
# Enable building with udisks support
(fetchpatch {
url = "https://salsa.debian.org/qt-kde-team/qt/qtsystems/-/raw/a23fd92222c33479d7f3b59e48116def6b46894c/debian/patches/2001_build_with_udisk.patch";
hash = "sha256-B/z/+tai01RU/bAJSCp5a0/dGI8g36nwso8MiJv27YM=";
})
];
qtwebengine = [ qtwebengine = [
(fetchpatch { ./qtwebengine-link-pulseaudio.patch
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/a6f16c6daea3b5a1f7bc9f175d1645922c131563/qt5/qt5-webengine-python3.patch";
sha256 = "sha256-rUSDwTucXVP3Obdck7LRTeKZ+JYQSNhQ7+W31uHZ9yM=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/7ae178a617d1e0eceb742557e63721af949bd28a/qt5/qt5-webengine-chromium-python3.patch";
stripLen = 1;
extraPrefix = "src/3rdparty/";
sha256 = "sha256-MZGYeMdGzwypfKoSUaa56K3inbcGRx7he/+AFyk5ekA=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/7ae178a617d1e0eceb742557e63721af949bd28a/qt5/qt5-webengine-gcc12.patch";
stripLen = 1;
extraPrefix = "src/3rdparty/";
sha256 = "sha256-s4GsGMJTBNWw2gTJuIEP3tqT82AmTsR2mbj59m2p6rM=";
})
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
./qtwebengine-darwin-no-platform-check.patch ./qtwebengine-darwin-no-platform-check.patch
./qtwebengine-mac-dont-set-dsymutil-path.patch ./qtwebengine-mac-dont-set-dsymutil-path.patch
./qtwebengine-darwin-checks.patch ./qtwebengine-darwin-checks.patch
]; ];
qtwebkit = [ qtwebkit = [
(fetchpatch {
name = "qtwebkit-python39-json.patch";
url = "https://github.com/qtwebkit/qtwebkit/commit/78360c01c796b6260bf828bc9c8a0ef73c5132fd.patch";
sha256 = "yCX/UL666BPxjnxT6rIsUrJsPcSWHhZwMFJfuHhbkhk=";
})
(fetchpatch { (fetchpatch {
name = "qtwebkit-bison-3.7-build.patch"; name = "qtwebkit-bison-3.7-build.patch";
url = "https://github.com/qtwebkit/qtwebkit/commit/d92b11fea65364fefa700249bd3340e0cd4c5b31.patch"; url = "https://github.com/qtwebkit/qtwebkit/commit/d92b11fea65364fefa700249bd3340e0cd4c5b31.patch";
@ -92,8 +206,14 @@ let
url = "https://github.com/qtwebkit/qtwebkit/commit/5c272a21e621a66862821d3ae680f27edcc64c19.patch"; url = "https://github.com/qtwebkit/qtwebkit/commit/5c272a21e621a66862821d3ae680f27edcc64c19.patch";
sha256 = "9hjqLyABz372QDgoq7nXXXQ/3OXBGcYN1/92ekcC3WE="; sha256 = "9hjqLyABz372QDgoq7nXXXQ/3OXBGcYN1/92ekcC3WE=";
}) })
(fetchpatch {
name = "qtwebkit-libxml2-api-change.patch";
url = "https://github.com/WebKit/WebKit/commit/1bad176b2496579d760852c80cff3ad9fb7c3a4b.patch";
sha256 = "WZEj+UuKhgJBM7auhND3uddk1wWdTY728jtiWVe7CSI=";
})
./qtwebkit.patch ./qtwebkit.patch
./qtwebkit-icu68.patch ./qtwebkit-icu68.patch
./qtwebkit-cstdint.patch
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
./qtwebkit-darwin-no-readline.patch ./qtwebkit-darwin-no-readline.patch
./qtwebkit-darwin-no-qos-classes.patch ./qtwebkit-darwin-no-qos-classes.patch
@ -101,32 +221,24 @@ let
qttools = [ ./qttools.patch ]; qttools = [ ./qttools.patch ];
}; };
addPackages = self: with self; addPackages = self:
let let
qtModule = qtModule = callPackage ../qtModule.nix {
import ../qtModule.nix inherit patches;
{
inherit perl;
inherit lib;
# Use a variant of mkDerivation that does not include wrapQtApplications # Use a variant of mkDerivation that does not include wrapQtApplications
# to avoid cyclic dependencies between Qt modules. # to avoid cyclic dependencies between Qt modules.
mkDerivation = mkDerivation =
import ../mkDerivation.nix (callPackage ../mkDerivation.nix { wrapQtAppsHook = null; }) stdenv.mkDerivation;
{ inherit lib; inherit debug; wrapQtAppsHook = null; } };
stdenv.mkDerivation;
}
{ inherit self srcs patches; };
callPackage = self.newScope { inherit qtCompatVersion qtModule srcs stdenv; }; callPackage = self.newScope { inherit qtCompatVersion qtModule srcs stdenv; };
in { in {
inherit callPackage qtCompatVersion qtModule srcs; inherit callPackage qtCompatVersion qtModule srcs;
mkDerivationWith = mkDerivationWith = callPackage ../mkDerivation.nix { };
import ../mkDerivation.nix
{ inherit lib; inherit debug; inherit (self) wrapQtAppsHook; };
mkDerivation = mkDerivationWith stdenv.mkDerivation; mkDerivation = callPackage ({ mkDerivationWith }: mkDerivationWith stdenv.mkDerivation) { };
qtbase = callPackage ../modules/qtbase.nix { qtbase = callPackage ../modules/qtbase.nix {
inherit (srcs.qtbase) src version; inherit (srcs.qtbase) src version;
@ -134,11 +246,18 @@ let
inherit bison cups harfbuzz libGL; inherit bison cups harfbuzz libGL;
withGtk3 = !stdenv.isDarwin; inherit dconf gtk3; withGtk3 = !stdenv.isDarwin; inherit dconf gtk3;
inherit developerBuild decryptSslTraffic; inherit developerBuild decryptSslTraffic;
inherit (darwin.apple_sdk_11_0.frameworks) AGL AppKit ApplicationServices AVFoundation Carbon Cocoa CoreAudio CoreBluetooth
CoreLocation CoreServices DiskArbitration Foundation OpenGL MetalKit IOKit;
libobjc = darwin.apple_sdk_11_0.objc4;
xcbuild = darwin.apple_sdk_11_0.xcodebuild;
}; };
qt3d = callPackage ../modules/qt3d.nix {}; qt3d = callPackage ../modules/qt3d.nix {};
qtcharts = callPackage ../modules/qtcharts.nix {}; qtcharts = callPackage ../modules/qtcharts.nix {};
qtconnectivity = callPackage ../modules/qtconnectivity.nix {}; qtconnectivity = callPackage ../modules/qtconnectivity.nix {
inherit (darwin.apple_sdk_11_0.frameworks) IOBluetooth;
};
qtdatavis3d = callPackage ../modules/qtdatavis3d.nix {};
qtdeclarative = callPackage ../modules/qtdeclarative.nix {}; qtdeclarative = callPackage ../modules/qtdeclarative.nix {};
qtdoc = callPackage ../modules/qtdoc.nix {}; qtdoc = callPackage ../modules/qtdoc.nix {};
qtgamepad = callPackage ../modules/qtgamepad.nix { qtgamepad = callPackage ../modules/qtgamepad.nix {
@ -153,15 +272,23 @@ let
inherit gstreamer gst-plugins-base; inherit gstreamer gst-plugins-base;
}; };
qtnetworkauth = callPackage ../modules/qtnetworkauth.nix {}; qtnetworkauth = callPackage ../modules/qtnetworkauth.nix {};
qtpim = callPackage ../modules/qtpim.nix {};
qtpositioning = callPackage ../modules/qtpositioning.nix {};
qtpurchasing = callPackage ../modules/qtpurchasing.nix {
inherit (darwin.apple_sdk_11_0.frameworks) Foundation StoreKit;
};
qtquick1 = null; qtquick1 = null;
qtquick3d = callPackage ../modules/qtquick3d.nix { };
qtquickcontrols = callPackage ../modules/qtquickcontrols.nix {}; qtquickcontrols = callPackage ../modules/qtquickcontrols.nix {};
qtquickcontrols2 = callPackage ../modules/qtquickcontrols2.nix {}; qtquickcontrols2 = callPackage ../modules/qtquickcontrols2.nix {};
qtremoteobjects = callPackage ../modules/qtremoteobjects.nix {};
qtscript = callPackage ../modules/qtscript.nix {}; qtscript = callPackage ../modules/qtscript.nix {};
qtsensors = callPackage ../modules/qtsensors.nix {}; qtsensors = callPackage ../modules/qtsensors.nix {};
qtserialbus = callPackage ../modules/qtserialbus.nix {}; qtserialbus = callPackage ../modules/qtserialbus.nix {};
qtserialport = callPackage ../modules/qtserialport.nix {}; qtserialport = callPackage ../modules/qtserialport.nix {};
qtspeech = callPackage ../modules/qtspeech.nix {}; qtspeech = callPackage ../modules/qtspeech.nix {};
qtsvg = callPackage ../modules/qtsvg.nix {}; qtsvg = callPackage ../modules/qtsvg.nix {};
qtsystems = callPackage ../modules/qtsystems.nix {};
qtscxml = callPackage ../modules/qtscxml.nix {}; qtscxml = callPackage ../modules/qtscxml.nix {};
qttools = callPackage ../modules/qttools.nix {}; qttools = callPackage ../modules/qttools.nix {};
qttranslations = callPackage ../modules/qttranslations.nix {}; qttranslations = callPackage ../modules/qttranslations.nix {};
@ -169,19 +296,26 @@ let
qtwayland = callPackage ../modules/qtwayland.nix {}; qtwayland = callPackage ../modules/qtwayland.nix {};
qtwebchannel = callPackage ../modules/qtwebchannel.nix {}; qtwebchannel = callPackage ../modules/qtwebchannel.nix {};
qtwebengine = callPackage ../modules/qtwebengine.nix { qtwebengine = callPackage ../modules/qtwebengine.nix {
# The version of Chromium used by Qt WebEngine 5.15.x does not build with clang 16 due
# to the following errors:
# * -Wenum-constexpr-conversion: This is a downgradable error in clang 16, but it is planned
# to be made into a hard error in a future version of clang. Patches are not available for
# the version of v8 used by Chromium in Qt WebEngine, and fixing the code is non-trivial.
# * -Wincompatible-function-pointer-types: This is also a downgradable error generated
# starting with clang 16. Patches are available upstream that can be backported.
# Because the first error is non-trivial to fix and suppressing it risks future breakage,
# clang is pinned to clang 15. That also makes fixing the second set of errors unnecessary.
stdenv =
let stdenv' = if stdenv.cc.isClang then overrideLibcxx llvmPackages_15.stdenv else stdenv;
in if stdenv'.isDarwin then overrideSDK stdenv' "11.0" else stdenv';
inherit (srcs.qtwebengine) version; inherit (srcs.qtwebengine) version;
python = python3; python = python3;
postPatch = ''
# update catapult for python3 compatibility
rm -r src/3rdparty/chromium/third_party/catapult
cp -r ${srcs.catapult} src/3rdparty/chromium/third_party/catapult
'';
inherit (darwin) cctools xnu; inherit (darwin) cctools xnu;
inherit (darwin.apple_sdk_11_0) libpm libunwind; inherit (darwin.apple_sdk_11_0) libpm libunwind;
inherit (darwin.apple_sdk_11_0.libs) sandbox; inherit (darwin.apple_sdk_11_0.libs) sandbox;
inherit (darwin.apple_sdk_11_0.frameworks) ApplicationServices AVFoundation Foundation ForceFeedback GameController AppKit inherit (darwin.apple_sdk_11_0.frameworks) ApplicationServices AVFoundation Foundation ForceFeedback GameController AppKit
ImageCaptureCore CoreBluetooth IOBluetooth CoreWLAN Quartz Cocoa LocalAuthentication ImageCaptureCore CoreBluetooth IOBluetooth CoreWLAN Quartz Cocoa LocalAuthentication
MediaPlayer MediaAccessibility SecurityInterface Vision CoreML; MediaPlayer MediaAccessibility SecurityInterface Vision CoreML OpenDirectory Accelerate;
libobjc = darwin.apple_sdk_11_0.objc4; libobjc = darwin.apple_sdk_11_0.objc4;
}; };
qtwebglplugin = callPackage ../modules/qtwebglplugin.nix {}; qtwebglplugin = callPackage ../modules/qtwebglplugin.nix {};
@ -197,30 +331,51 @@ let
qtxmlpatterns = callPackage ../modules/qtxmlpatterns.nix {}; qtxmlpatterns = callPackage ../modules/qtxmlpatterns.nix {};
env = callPackage ../qt-env.nix {}; env = callPackage ../qt-env.nix {};
full = env "qt-full-${qtbase.version}" ([ full = callPackage ({ env, qtbase }: env "qt-full-${qtbase.version}") { }
# `with self` is ok to use here because having these spliced is unnecessary
(with self; [
qt3d qtcharts qtconnectivity qtdeclarative qtdoc qtgraphicaleffects qt3d qtcharts qtconnectivity qtdeclarative qtdoc qtgraphicaleffects
qtimageformats qtlocation qtmultimedia qtquickcontrols qtquickcontrols2 qtimageformats qtlocation qtmultimedia qtquickcontrols qtquickcontrols2
qtscript qtsensors qtserialport qtsvg qttools qttranslations qtscript qtsensors qtserialport qtsvg qttools qttranslations
qtvirtualkeyboard qtwebchannel qtwebengine qtwebkit qtwebsockets qtvirtualkeyboard qtwebchannel qtwebengine qtwebsockets
qtwebview qtx11extras qtxmlpatterns qtlottie qtwebview qtx11extras qtxmlpatterns qtlottie qtdatavis3d
] ++ lib.optional (!stdenv.isDarwin) qtwayland ] ++ lib.optional (!stdenv.isDarwin) qtwayland
++ lib.optional (stdenv.isDarwin) qtmacextras); ++ lib.optional (stdenv.isDarwin) qtmacextras);
qmake = makeSetupHook { qmake = callPackage ({ qtbase }: makeSetupHook {
name = "qmake-hook"; name = "qmake-hook";
deps = [ self.qtbase.dev ]; ${if stdenv.buildPlatform == stdenv.hostPlatform
then "propagatedBuildInputs"
else "depsTargetTargetPropagated"} = [ qtbase.dev ];
substitutions = { substitutions = {
inherit debug; inherit debug;
fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh; fix_qmake_libtool = ../hooks/fix-qmake-libtool.sh;
}; };
} ../hooks/qmake-hook.sh; } ../hooks/qmake-hook.sh) { };
wrapQtAppsHook = makeSetupHook { wrapQtAppsHook = callPackage ({ makeBinaryWrapper, qtbase, qtwayland }: makeSetupHook {
name = "wrap-qt5-apps-hook"; name = "wrap-qt5-apps-hook";
deps = propagatedBuildInputs = [ qtbase.dev makeBinaryWrapper ]
[ self.qtbase.dev buildPackages.makeWrapper ] ++ lib.optional stdenv.isLinux qtwayland.dev;
++ optional stdenv.isLinux self.qtwayland.dev; } ../hooks/wrap-qt-apps-hook.sh) { };
} ../hooks/wrap-qt-apps-hook.sh;
}; };
self = lib.makeScope newScope addPackages;
in self baseScope = makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope "qt5";
f = addPackages;
};
bootstrapScope = baseScope.overrideScope(final: prev: {
qtbase = prev.qtbase.override { qttranslations = null; };
qtdeclarative = null;
});
finalScope = baseScope.overrideScope(final: prev: {
# qttranslations causes eval-time infinite recursion when
# cross-compiling; disabled for now.
qttranslations =
if stdenv.buildPlatform == stdenv.hostPlatform
then bootstrapScope.qttranslations
else null;
});
in finalScope

View File

@ -21,7 +21,6 @@ qtquickcontrols
qtquickcontrols2 qtquickcontrols2
qtquicktimeline qtquicktimeline
qtremoteobjects qtremoteobjects
qtscript
qtscxml qtscxml
qtsensors qtsensors
qtserialbus qtserialbus

View File

@ -0,0 +1,33 @@
diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp
index 289f11d006..9b0a48c6c7 100644
--- a/src/qml/qml/qqmlimport.cpp
+++ b/src/qml/qml/qqmlimport.cpp
@@ -1897,17 +1897,22 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e)
addImportPath(installImportsPath);
// env import paths
- if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QML2_IMPORT_PATH"))) {
- const QString envImportPath = qEnvironmentVariable("QML2_IMPORT_PATH");
+ auto addEnvImportPath = [this](const char *var) {
#if defined(Q_OS_WIN)
QLatin1Char pathSep(';');
#else
QLatin1Char pathSep(':');
#endif
- QStringList paths = envImportPath.split(pathSep, Qt::SkipEmptyParts);
- for (int ii = paths.count() - 1; ii >= 0; --ii)
- addImportPath(paths.at(ii));
- }
+ if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty(var))) {
+ const QString envImportPath = qEnvironmentVariable(var);
+ QStringList paths = envImportPath.split(pathSep, Qt::SkipEmptyParts);
+ for (int ii = paths.count() - 1; ii >= 0; --ii)
+ addImportPath(paths.at(ii));
+ }
+ };
+
+ addEnvImportPath("QML2_IMPORT_PATH");
+ addEnvImportPath("NIXPKGS_QT5_QML_IMPORT_PATH");
addImportPath(QStringLiteral("qrc:/qt-project.org/imports"));
addImportPath(QCoreApplication::applicationDirPath());

View File

@ -1,5 +1,5 @@
diff --git a/configure.pri b/configure.pri diff --git a/configure.pri b/configure.pri
index e072961f0..ac0861c01 100644 index 3a33bdc82..c1460b8b5 100644
--- a/configure.pri --- a/configure.pri
+++ b/configure.pri +++ b/configure.pri
@@ -442,24 +442,6 @@ defineTest(qtwebengine_isWindowsPlatformSupported) { @@ -442,24 +442,6 @@ defineTest(qtwebengine_isWindowsPlatformSupported) {
@ -24,6 +24,6 @@ index e072961f0..ac0861c01 100644
- qtwebengine_platformError("requires a macOS SDK version of 10.13 or newer. Current version is $${WEBENGINE_OSX_SDK_PRODUCT_VERSION}.") - qtwebengine_platformError("requires a macOS SDK version of 10.13 or newer. Current version is $${WEBENGINE_OSX_SDK_PRODUCT_VERSION}.")
- return(false) - return(false)
- } - }
return(true) CONFIG(debug, debug|release):isUniversal(){
} qtwebengine_platformError("Universal builds can not be done with debug configuration due to large binary size.")
return(false)

View File

@ -0,0 +1,8 @@
--- a/src/core/config/common.pri
+++ b/src/core/config/common.pri
@@ -47,3 +47,5 @@
!qtConfig(webengine-nodejs10): gn_args += use_rollup=false
gn_args += enable_ipc_logging=false
+
+gn_args += link_pulseaudio=true

View File

@ -0,0 +1,11 @@
diff -up qtwebkit-5.212.0-alpha4/Source/ThirdParty/ANGLE/src/common/mathutil.h.me qtwebkit-5.212.0-alpha4/Source/ThirdParty/ANGLE/src/common/mathutil.h
--- qtwebkit-5.212.0-alpha4/Source/ThirdParty/ANGLE/src/common/mathutil.h.me 2023-02-20 15:40:04.045911245 +0100
+++ qtwebkit-5.212.0-alpha4/Source/ThirdParty/ANGLE/src/common/mathutil.h 2023-02-20 15:40:39.038549787 +0100
@@ -16,6 +16,7 @@
#include <algorithm>
#include <string.h>
#include <stdlib.h>
+#include <cstdint>
namespace gl
{

View File

@ -1,207 +1,202 @@
{ {
"qt3d": { "qt3d": {
"url": "https://invent.kde.org/qt/qt/qt3d.git", "url": "https://invent.kde.org/qt/qt/qt3d.git",
"rev": "c3c7e6ebc29cce466d954f72f340a257d76b5ec2", "rev": "9bf4d03e2515f7c454647d54542330b6e90f8191",
"sha256": "13ixg0gx7sp90k0db2xn7r2rj1w3zw3vs84pav0v8fwfvph9ki98" "sha256": "1w1lq332q270vld7sz0xqpa0f7mvi5gizycfsx9zz9c73qy4idlp"
}, },
"qtactiveqt": { "qtactiveqt": {
"url": "https://invent.kde.org/qt/qt/qtactiveqt.git", "url": "https://invent.kde.org/qt/qt/qtactiveqt.git",
"rev": "2334cafc110c4e63bec3a5c7abdcd67e5e5ee754", "rev": "91bfd21f86c450b129ac2dde9d33b32e140d8a0c",
"sha256": "0p7pydqsrws5x9l74y37ldffd3yz4riyizl8669x6y6hj6177yd3" "sha256": "06fbiggjq1c1z1wgx63ir8rj1ppd1c046xwz4nzsrf1pi8dqcyl7"
}, },
"qtandroidextras": { "qtandroidextras": {
"url": "https://invent.kde.org/qt/qt/qtandroidextras.git", "url": "https://invent.kde.org/qt/qt/qtandroidextras.git",
"rev": "7ede0a6c555518a3fecba8930d5e4d9c58875d0d", "rev": "197a7e05cda87a4645f30c8ef5044b342442ebd1",
"sha256": "0nvdrbqm469iikkvzwjni3zb7dxwpy3x161m9yly4irklixhxkzh" "sha256": "0j5al7h2gy67cb2lj4yymdsidr1dcvvahqfysbdl2lwz3zzpdql1"
}, },
"qtbase": { "qtbase": {
"url": "https://invent.kde.org/qt/qt/qtbase.git", "url": "https://invent.kde.org/qt/qt/qtbase.git",
"rev": "6c09620dc84900c31a2d307a8640dbc15b1fcfdd", "rev": "2b9835f5c9bcfe3105b60a8dd33c1db7d8611378",
"sha256": "0nr8xlfdrgjr6rrd5f99p8vzlxx6n8xch5l2z95pb2lx4w4pz26q" "sha256": "1yms1r42yps06bg8gjbzb5y7x03ks11vg97s2j7r1aplp7kjf7wm"
}, },
"qtcharts": { "qtcharts": {
"url": "https://invent.kde.org/qt/qt/qtcharts.git", "url": "https://invent.kde.org/qt/qt/qtcharts.git",
"rev": "e30be213e483f2d6f3c40af0cbdc11a8e92e2026", "rev": "7315c48bcec88014e78165bbda54abfcd557e0af",
"sha256": "0vn1xh40lxa6vi87vr6qpskli2vh47mxi3d5srhf8rark0m51lf4" "sha256": "043lbxkaw53qah9ny4nbpp8g7q4rq9x2k21vkprk7nim66d6pmy3"
}, },
"qtconnectivity": { "qtconnectivity": {
"url": "https://invent.kde.org/qt/qt/qtconnectivity.git", "url": "https://invent.kde.org/qt/qt/qtconnectivity.git",
"rev": "2d241e0b79971917845a6ed448e838ef273d73d7", "rev": "99f30db37c63447c59d5fac15bc8feb832a7fd04",
"sha256": "15zk9q1n9yfg4nkr0rs7agsvzim8nlrqzm1h4h9r0iwr91g9vqp5" "sha256": "09v76kb7fx7bq4vplyk3cf7il3a6f9p673z1l28nrv4w308bhqfy"
}, },
"qtdatavis3d": { "qtdatavis3d": {
"url": "https://invent.kde.org/qt/qt/qtdatavis3d.git", "url": "https://invent.kde.org/qt/qt/qtdatavis3d.git",
"rev": "9f0f50ebef04d5ac5ed0ee2a3a71e7748fce3005", "rev": "79cd0fb6cafcd42e4037ae1363fda3bc2cec934a",
"sha256": "151650nqq29m99cbf7ac02vxzw4ivm4spr4kd2ss3gwhfxby3zgj" "sha256": "19y33v3l4crzrk7qf5qhx7phxkiax14c2q4xjd1klw7n333d43cq"
}, },
"qtdeclarative": { "qtdeclarative": {
"url": "https://invent.kde.org/qt/qt/qtdeclarative.git", "url": "https://invent.kde.org/qt/qt/qtdeclarative.git",
"rev": "05c3f4921d81fb1b0eb497515c24ae56221d1e0a", "rev": "50c8def854806485d66aabcf6918e8b987032e55",
"sha256": "0101bbpnrj4rp51dcnn2gjcq7vw55g4c8y4lmg2nd5g69whmkl1c" "sha256": "0qvw72w0m1q4yg4l35rh7ydqgp35xqfwpq0pc7q5578n1xspihhn"
}, },
"qtdoc": { "qtdoc": {
"url": "https://invent.kde.org/qt/qt/qtdoc.git", "url": "https://invent.kde.org/qt/qt/qtdoc.git",
"rev": "79d6ef693b6241db4a86a90943c02180c4944214", "rev": "bc4503b8b70f4cd435d6e64a9e6c623ca44b9fcd",
"sha256": "0ldskh9dd8qwa96nz1q5sbb8r2jdfcxvq589dyw87m3gpb8v16qq" "sha256": "0pvimmw5c6gh6xi2iblzyikgaw7cr8gqjdvyappcahjpalxxsjbw"
}, },
"qtgamepad": { "qtgamepad": {
"url": "https://invent.kde.org/qt/qt/qtgamepad.git", "url": "https://invent.kde.org/qt/qt/qtgamepad.git",
"rev": "ad63dc64f4bdafb503f7015d04e8849cef5d99b4", "rev": "b1c2f272f69e222a532485e6f820776c220b3535",
"sha256": "06ag3cmg56f4z9pc3ix9lddz5ydx48pf438xc2l1z3x4wxbkfbsy" "sha256": "1zga6sa901g0fpqyjlyj73s2f94yjm0z3599gngnlvvd7jsnlgnv"
}, },
"qtgraphicaleffects": { "qtgraphicaleffects": {
"url": "https://invent.kde.org/qt/qt/qtgraphicaleffects.git", "url": "https://invent.kde.org/qt/qt/qtgraphicaleffects.git",
"rev": "4119e4e6dc94447d773a01c1d6e4de0fefb9235a", "rev": "2c39e673d6c15a84dcc7882d3772fa04cc79f9ed",
"sha256": "0sdywxrbjzz9qmrywd54hqqssv59b9mlvra16hjxfd0di50brab2" "sha256": "177xkhi3syx6r3my5rly5bncgjfhdvgrhf6fw5ajqplik6yln4pq"
}, },
"qtimageformats": { "qtimageformats": {
"url": "https://invent.kde.org/qt/qt/qtimageformats.git", "url": "https://invent.kde.org/qt/qt/qtimageformats.git",
"rev": "dbc9c396199ef78e820b40ddb8a4e76c0a86d48c", "rev": "4e4f5fc6bdac96f5281a3ebeb0fee78df7b1a498",
"sha256": "18dhnvkv9hialjfcm80g9y38fsxfcfk4fgrrsm3hy2yda6a6g1c6" "sha256": "1w68v55y1l1biv7krzv9vmi2czz84jk89f4pymq3ri1w3y4rc1id"
}, },
"qtlocation": { "qtlocation": {
"url": "https://invent.kde.org/qt/qt/qtlocation.git", "url": "https://invent.kde.org/qt/qt/qtlocation.git",
"rev": "435f931a7e42172e12ceba8f0d9da06ba4ec0bee", "rev": "3beb9c810611337fde61d89aa981e9f177a9ede9",
"sha256": "1p7hz09jv8whlv0m39cnjz3yc6pjzyxkc8zinl6f0qmrska6m4gp" "sha256": "1fwn9x3n01dlkhw53n12z5kb06qj2lmangzvj3fjr5ff0yy47df9"
}, },
"qtlottie": { "qtlottie": {
"url": "https://invent.kde.org/qt/qt/qtlottie.git", "url": "https://invent.kde.org/qt/qt/qtlottie.git",
"rev": "56f94cb8e2da9801ada7aa06f86ccf807f5a4ed8", "rev": "b8c1fa109dce6f8bff9f55738d2f1e21ff677796",
"sha256": "1pyshl395qmf84h5lyw3rgn3gmz98sm1dq003jvr74w9i746hszf" "sha256": "0qydaqj8945hikby7a9529i0g5ycpvhws6y0zc566jv50qida725"
}, },
"qtmacextras": { "qtmacextras": {
"url": "https://invent.kde.org/qt/qt/qtmacextras.git", "url": "https://invent.kde.org/qt/qt/qtmacextras.git",
"rev": "bc397be87f9b02e8279cfe2fc9b893c9f95219b9", "rev": "e66cba7cf02aa8aecce03540cd167621f2cda5f0",
"sha256": "1dr8a7sv00dmk1hc6kzs93rhvjk2wkxx0mxl7riafdzxzyajcl7n" "sha256": "0q7d3lh3fpkrakxx1sqx9csa7l7rxzskcavbidxb5298jxn49wn8"
}, },
"qtmultimedia": { "qtmultimedia": {
"url": "https://invent.kde.org/qt/qt/qtmultimedia.git", "url": "https://invent.kde.org/qt/qt/qtmultimedia.git",
"rev": "32557dbe01ba66005b8e28b38033eeee9819a4c6", "rev": "53069c9c6eb52b744333812f42aed36c3db6e752",
"sha256": "09mds5v3b3jq34r40hqg2a39q16p4q648wda7cqgm2yp249j06g8" "sha256": "0y8km2mp5mj1zw1v3acsdvzrc1jyiwpxy3rmif5ssn40wwxifilp"
}, },
"qtnetworkauth": { "qtnetworkauth": {
"url": "https://invent.kde.org/qt/qt/qtnetworkauth.git", "url": "https://invent.kde.org/qt/qt/qtnetworkauth.git",
"rev": "f082a4c84c54e888b8d023ba68b7085551403425", "rev": "28180f28c98e329676463e24cef0097cba45bc00",
"sha256": "03sd0a58b8z340in4avk6lqqa9qzkzkaxnk2yn1a270sxrsq6y0l" "sha256": "1g6clwmrpdvl9m6flyrk4vlckjnjv3phqhy1xbxlra3zcfn3357r"
}, },
"qtpurchasing": { "qtpurchasing": {
"url": "https://invent.kde.org/qt/qt/qtpurchasing.git", "url": "https://invent.kde.org/qt/qt/qtpurchasing.git",
"rev": "9dfea35b04dcb52d02d7a2883df88d89ba9999ef", "rev": "d4903bf08c576a6c085278c1960a2676cd83dca7",
"sha256": "0swliqwzz3b297z7y6sr79ijgv3914s2g9ymq77plxglfdrnm74j" "sha256": "04bry3ys15bd6kaiwyb8fh037s50mcplircpzvrwdc1h8milx7y7"
}, },
"qtquick3d": { "qtquick3d": {
"url": "https://invent.kde.org/qt/qt/qtquick3d.git", "url": "https://invent.kde.org/qt/qt/qtquick3d.git",
"rev": "47defc8b33b7bdf1dbf289b65b301fba2def9b1c", "rev": "ad229f0c135f74801fba2bcd22c78abc0e3cf1d2",
"sha256": "0kfwkxln3yz0c5rd1kfjmw0y2drwm1gg2s7f52kajfvg4274ha9c" "sha256": "17jdsahdw72l5lpbng8733qv2fp2qkfzlzrayzigz2slfdqgjxnk"
}, },
"qtquickcontrols": { "qtquickcontrols": {
"url": "https://invent.kde.org/qt/qt/qtquickcontrols.git", "url": "https://invent.kde.org/qt/qt/qtquickcontrols.git",
"rev": "18977875d16e22ad68a1dc2d7ee0a9c9f873c941", "rev": "9325659ec390eda5b160736a926ba58ccb445cce",
"sha256": "0n3930zzvp4s6m715rvx1bjh2s2fg7cadjs2hq6bc8k9mwlqibk1" "sha256": "0r1kkn6pr6yynk8x2ggkfqqrh27g1qra102ilglj7chsmrp92xgc"
}, },
"qtquickcontrols2": { "qtquickcontrols2": {
"url": "https://invent.kde.org/qt/qt/qtquickcontrols2.git", "url": "https://invent.kde.org/qt/qt/qtquickcontrols2.git",
"rev": "56ce8233382a091a8476c831edd416b5f704ae4f", "rev": "69fea340f8f4c483a9b2889e4e24a4b1b52ebc87",
"sha256": "1h68s2fdgn1pbf5hsk6c8v4icz8c4cpbxv8iirz22yhlzabc3hdm" "sha256": "0v6g146ryabks0sff5dgyx42690xckaqpx44c6g7x0b0w24lj6ws"
}, },
"qtquicktimeline": { "qtquicktimeline": {
"url": "https://invent.kde.org/qt/qt/qtquicktimeline.git", "url": "https://invent.kde.org/qt/qt/qtquicktimeline.git",
"rev": "4cd0142a30bfa5eef47c720ac24dd73e12764806", "rev": "bf6c73064c82b07fcb1f7e72c263b249e137e224",
"sha256": "13vhlgxq8ap796p3y9c3kj645p0370bqjwm5hkz13pazm15sbc9z" "sha256": "0pnn5ds6sxls8i6pzzmraalvln2pabgga3gnv761b2skgkv26gnq"
}, },
"qtremoteobjects": { "qtremoteobjects": {
"url": "https://invent.kde.org/qt/qt/qtremoteobjects.git", "url": "https://invent.kde.org/qt/qt/qtremoteobjects.git",
"rev": "929c7ad0676f084b9ecc469cd47a307596923cb3", "rev": "3873bdc809ca8d58d91968cb0de34da26646bc79",
"sha256": "0l94k9fdzk96j40gab2l5n4lmadzaqhvbg8s3m5f3v4im00xa2x9" "sha256": "0bncsi45zjwd6q3g40gxdqxqq4zhjrgw7xnxj1v53npbyw4vd0h5"
},
"qtscript": {
"url": "https://invent.kde.org/qt/qt/qtscript.git",
"rev": "4d8e4bd20b7100b0b7192547b19c3c239aaf7034",
"sha256": "1pvihbjjmczby4934lir3h3kq0rqcvxnbw2vdkl9lhkds3lm0qhf"
}, },
"qtscxml": { "qtscxml": {
"url": "https://invent.kde.org/qt/qt/qtscxml.git", "url": "https://invent.kde.org/qt/qt/qtscxml.git",
"rev": "0c93f94a44e2dce7eed9d17d4976b0c1e14be7bb", "rev": "6834b183966d08d9f061642ee7ea2d482cbbf073",
"sha256": "1vvzvin23ws6njhyg93s2dlkxb9p50mkipc611lsx7971gv1wih0" "sha256": "1h88idcfcsbpx2x2djcg1lzazadm676miz19x6n0n6n4gwp46738"
}, },
"qtsensors": { "qtsensors": {
"url": "https://invent.kde.org/qt/qt/qtsensors.git", "url": "https://invent.kde.org/qt/qt/qtsensors.git",
"rev": "6add85fa1a234a7e1943ba175c6fc799ccbae48e", "rev": "bf0b718cd0b6c7823e9d2037d3bdece44185f444",
"sha256": "1k02x3wzczwg7cqh6hav31akdsz9kk8s0vryd3q7zfrhqy9m88sh" "sha256": "1my7ls1nsaf26kh3hn75jjnxp6gm0ilyfzcczqps0xj7xj9bzwzd"
}, },
"qtserialbus": { "qtserialbus": {
"url": "https://invent.kde.org/qt/qt/qtserialbus.git", "url": "https://invent.kde.org/qt/qt/qtserialbus.git",
"rev": "ced5c7223d037aece1e7f37d4314f388252de025", "rev": "616bc5b962cdcacb1c1ba985d7236392e9cadb8c",
"sha256": "009ajdry6lvf9pifzm2zl0w5zhkmrrxm53mjf9s76jqrsi6yqk30" "sha256": "0njahb52kshci23xw89j1rgffmrmric8kz54dzmqsmlcqp181qkh"
}, },
"qtserialport": { "qtserialport": {
"url": "https://invent.kde.org/qt/qt/qtserialport.git", "url": "https://invent.kde.org/qt/qt/qtserialport.git",
"rev": "e2851096dc6f6a7cfa635d69ea950b382e3658ab", "rev": "34c19c6441cd440dc65b59ae7670eadf099d51f8",
"sha256": "071g8d9i3wi8rqqy4lxpp3z25a55pd2xwsy3r8v0a6s6y5g5lcpf" "sha256": "0hiqfvz5jc6ha6ln8jl8vv4ijsdz55f3zp801dbh2r68cmf9qsrm"
}, },
"qtspeech": { "qtspeech": {
"url": "https://invent.kde.org/qt/qt/qtspeech.git", "url": "https://invent.kde.org/qt/qt/qtspeech.git",
"rev": "255845e2b2e605363762be25932d92fc10d32749", "rev": "8ad0f08ad7e2a8d27dc5e69806812c6a3f298946",
"sha256": "0apyk2z9r7i54sh0zgbs8vfncc4jrcrzzvi3q14d105pkhrschp9" "sha256": "0pyiiqj18c2gvbqvgnaki2hzcizi1lam82x761y2lp717sgb09v9"
}, },
"qtsvg": { "qtsvg": {
"url": "https://invent.kde.org/qt/qt/qtsvg.git", "url": "https://invent.kde.org/qt/qt/qtsvg.git",
"rev": "a7a0f2491334e8cb4ef5731f5eb741f3f7b9af76", "rev": "690128b2b8fb6d6fbdc43b2b2633f0f1de3f0638",
"sha256": "13zpzvwqv61dsd74s92nf46rhaw2rw3hl8m6d313wjlaaqi95ln6" "sha256": "1iiml673isnqakjzspq5gf6818zmmd7pj6z9y2jwxb2xkkn8ahpc"
}, },
"qttools": { "qttools": {
"url": "https://invent.kde.org/qt/qt/qttools.git", "url": "https://invent.kde.org/qt/qt/qttools.git",
"rev": "090e526e713d01eac34c64e4a09ad961c612febf", "rev": "f82ed367d1b80b69d738cfcde534b75854a45476",
"sha256": "1zrxv9wdnqayn5hhblwyqyrdn8mj7x2ks2f4qsr2w3cdidcjjz7y" "sha256": "1pv7af4z3f9d1ifqjwbf7fhgglpnjfby8h2fg5h114mpils661bn"
}, },
"qttranslations": { "qttranslations": {
"url": "https://invent.kde.org/qt/qt/qttranslations.git", "url": "https://invent.kde.org/qt/qt/qttranslations.git",
"rev": "af8cd030fed6a47cc1e8727e7ee5445e037bf712", "rev": "c601106c8b5d5495f951c8ea0ad6a9e171416ae0",
"sha256": "14fx3r9s3p16rhv9fyrwnv6bn24nvh5xnjwcw1mb04c44ddb9r86" "sha256": "0w8ggzc4sxfa1y3n40m24zxp59c2y1mfb2c7zdd8nmlrg7xnqsf0"
}, },
"qtvirtualkeyboard": { "qtvirtualkeyboard": {
"url": "https://invent.kde.org/qt/qt/qtvirtualkeyboard.git", "url": "https://invent.kde.org/qt/qt/qtvirtualkeyboard.git",
"rev": "5f66c9571303170f07954f73b09cad4cee1ce5d0", "rev": "7389450a5de5fdd210f1459abcf73621ec0496bd",
"sha256": "0jzl7a2zr83nd9sskmz9fk2w2spn3v821j0l7kcp2hxydgyhk8v3" "sha256": "1hv8yi4lq3mdxqkcln2b75drdyfiaqj63khzvy09gdf1x6fyjnn5"
}, },
"qtwayland": { "qtwayland": {
"url": "https://invent.kde.org/qt/qt/qtwayland.git", "url": "https://invent.kde.org/qt/qt/qtwayland.git",
"rev": "df41e7e3e1f0e5495c5c8c52f1c9bb5a32b0da27", "rev": "75f434f14499eb47ede2cb66f0946527bf555791",
"sha256": "0f292axj0ivgwgx97zc8x744243i7lgqcxbkjxham6md81m1xbwj" "sha256": "17d7bcc3v55ywakaybp88c493bfx63vyiz7n8f5kcijj5q5hdf1r"
}, },
"qtwebchannel": { "qtwebchannel": {
"url": "https://invent.kde.org/qt/qt/qtwebchannel.git", "url": "https://invent.kde.org/qt/qt/qtwebchannel.git",
"rev": "f8949655ccfacc2d34cfb0af23c540db84a2b9e5", "rev": "fca83088ef430f96257d2014e77d08bd350259af",
"sha256": "1303hghvk6avshb7imnkv24qv1ij5d3nbljba20l6v6dsr7zg7ba" "sha256": "1jc7myns24mzfnfybzzjqkpnl235c0fm0zqkai55xwi3vcv9xyr5"
}, },
"qtwebglplugin": { "qtwebglplugin": {
"url": "https://invent.kde.org/qt/qt/qtwebglplugin.git", "url": "https://invent.kde.org/qt/qt/qtwebglplugin.git",
"rev": "655be6c5406f8ba42acaca363fc55d78a6198733", "rev": "3681356904277e055759693551357e7e488d1be9",
"sha256": "08biydqk1lhjzvrgl3zhbrrgnjcy611pmh9scyw42avdvj2qzpc2" "sha256": "14v9r4mhqq453dzkc5gvv660gq11zsmzngvwgi44srhzcx7k1qqv"
}, },
"qtwebsockets": { "qtwebsockets": {
"url": "https://invent.kde.org/qt/qt/qtwebsockets.git", "url": "https://invent.kde.org/qt/qt/qtwebsockets.git",
"rev": "90f3590c3c49a0820462af9a778dd13d8df42244", "rev": "dbbdc64b804f7c4d0ed92198aaab49b07fa15e7f",
"sha256": "1dxc3imh8455vy3pggrzjflb2v5382q9ha2fwplybxawld9wdw45" "sha256": "1gbgga8qy26nxxq0537hm3h6la04xb6m4cc2aifjhhhj8py95170"
}, },
"qtwebview": { "qtwebview": {
"url": "https://invent.kde.org/qt/qt/qtwebview.git", "url": "https://invent.kde.org/qt/qt/qtwebview.git",
"rev": "dfd86e07019488954cddcf2ba314df3cd0c01c0c", "rev": "bbb1891595aba23ff3c6d137aa74442f9e54479b",
"sha256": "1crph9sdmxxs0787il86j2dv6k3qylmy8a83hfzczcjcx3pwcf7a" "sha256": "0j59r6dj4wvassng39whnidd6nzhndwssfwjppppqbs5xy57zh2z"
}, },
"qtwinextras": { "qtwinextras": {
"url": "https://invent.kde.org/qt/qt/qtwinextras.git", "url": "https://invent.kde.org/qt/qt/qtwinextras.git",
"rev": "48318520a4031167c4c0ad559e1a11b2f4c053d6", "rev": "907009a4f7e5d2b99805547caf4b901bdbb0d4d6",
"sha256": "04smnp9pl3szizdp05dz7qmdgg8sk57d3r40sdy7v9zwi4lwaqi4" "sha256": "0aam2imp4rkbrjir5gsk4ja7vf7vv68ybsh7qchavb3zdmjsvxcd"
}, },
"qtx11extras": { "qtx11extras": {
"url": "https://invent.kde.org/qt/qt/qtx11extras.git", "url": "https://invent.kde.org/qt/qt/qtx11extras.git",
"rev": "e44c85e8643f2724109993a7b9eaf0dff3530fec", "rev": "6c3605fcb3b34e55951f597e06c135d97dfa6cd7",
"sha256": "1vs1013zxw54xfmkpid99p5f38hlqds172vija7xjyjaww7j7y3b" "sha256": "0dqmw2yqh5b5ayq93px2na50ghfk55y55zsgwraxglly0zgm39w9"
}, },
"qtxmlpatterns": { "qtxmlpatterns": {
"url": "https://invent.kde.org/qt/qt/qtxmlpatterns.git", "url": "https://invent.kde.org/qt/qt/qtxmlpatterns.git",
"rev": "3199d91de3f38e5ece3d36bcefe2c33b2c014f3f", "rev": "087f6f35bd027f940818b1696d0aad822e034377",
"sha256": "1l6babh2cjqwaqk12cqpkkl2qy909b1fd84p0ab19raw419ncawz" "sha256": "0y3hkz7ss6iibpfr7dc855bzhdanz79ix0jm6b28viqjy3bdzgar"
} }
} }

View File

@ -1,18 +1,14 @@
{ lib, fetchgit, fetchFromGitHub }: { lib, fetchgit, fetchFromGitHub }:
let let
version = "5.15.8"; version = "5.15.14";
overrides = {};
mk = name: args: mk = name: args:
let
override = overrides.${name} or {};
in
{ {
version = override.version or version; inherit version;
src = override.src or src = fetchgit {
fetchgit {
inherit (args) url rev sha256; inherit (args) url rev sha256;
fetchLFS = false;
fetchSubmodules = true; fetchSubmodules = true;
deepClone = false; deepClone = false;
leaveDotGit = false; leaveDotGit = false;
@ -21,6 +17,29 @@ let
in in
lib.mapAttrs mk (lib.importJSON ./srcs-generated.json) lib.mapAttrs mk (lib.importJSON ./srcs-generated.json)
// { // {
# qtpim has no official releases
qtpim = {
version = "unstable-2020-11-02";
src = fetchFromGitHub {
owner = "qt";
repo = "qtpim";
# Last commit before Qt5 support was broken
rev = "f9a8f0fc914c040d48bbd0ef52d7a68eea175a98";
hash = "sha256-/1g+vvHjuRLB1vsm41MrHbBZ+88Udca0iEcbz0Q1BNQ=";
};
};
# Has no kde/5.15 branch
qtpositioning = rec {
version = "5.15.2";
src = fetchFromGitHub {
owner = "qt";
repo = "qtpositioning";
rev = "v${version}";
hash = "sha256-L/P+yAQItm3taPpCNoOOm7PNdOFZiIwJJYflk6JDWvU=";
};
};
# qtwebkit does not have an official release tarball on the qt mirror and is # qtwebkit does not have an official release tarball on the qt mirror and is
# mostly maintained by the community. # mostly maintained by the community.
qtwebkit = rec { qtwebkit = rec {
@ -33,43 +52,37 @@ lib.mapAttrs mk (lib.importJSON ./srcs-generated.json)
version = "5.212.0-alpha4"; version = "5.212.0-alpha4";
}; };
catapult = fetchgit { # qtsystems has no official releases
url = "https://chromium.googlesource.com/catapult"; qtsystems = {
rev = "5eedfe23148a234211ba477f76fc2ea2e8529189"; version = "unstable-2019-01-03";
sha256 = "sha256-LPfBCEB5tJOljXpptsNk0sHGtJf/wIRL7fccN79Nh6o="; src = fetchFromGitHub {
owner = "qt";
repo = "qtsystems";
rev = "e3332ee38d27a134cef6621fdaf36687af1b6f4a";
hash = "sha256-P8MJgWiDDBCYo+icbNva0LODy0W+bmQTS87ggacuMP0=";
};
}; };
qtwebengine = qtscript = rec {
let version = "5.15.17";
branchName = "5.15.12";
rev = "v${branchName}-lts";
in
{
version = branchName;
src = fetchgit { src = fetchFromGitHub {
url = "https://github.com/qt/qtwebengine.git"; owner = "qt";
sha256 = "sha256-8EQqSvxw9rqf+64CIbcCb1VXhNx1GNC8eDIgLyYDyvk="; repo = "qtscript";
inherit rev branchName; rev = "v${version}-lts";
hash = "sha256-wXEKdu2gdlkVsWr3nb/tCBwyo9H8GPHWTUele1cP0ks=";
};
};
qtwebengine = rec {
version = "5.15.17";
src = fetchFromGitHub {
owner = "qt";
repo = "qtwebengine";
rev = "v${version}-lts";
hash = "sha256-1be8Y96yHYBCxQsRC/PD2X0TVWpA2/r1hvi8sBKOais=";
fetchSubmodules = true; fetchSubmodules = true;
leaveDotGit = true;
name = "qtwebengine-${lib.substring 0 8 rev}.tar.gz";
postFetch = ''
# remove submodule .git directory
rm -rf "$out/src/3rdparty/.git"
# compress to not exceed the 2GB output limit
# try to make a deterministic tarball
tar -I 'gzip -n' \
--sort=name \
--mtime=1970-01-01 \
--owner=root --group=root \
--numeric-owner --mode=go=rX,u+rw,a-s \
--transform='s@^@source/@' \
-cf temp -C "$out" .
rm -r "$out"
mv temp "$out"
'';
}; };
}; };
} }

View File

@ -31,7 +31,7 @@ qtHostPathHook() {
local qmlDir="$1/${qtQmlPrefix:?}" local qmlDir="$1/${qtQmlPrefix:?}"
if [ -d "$qmlDir" ] if [ -d "$qmlDir" ]
then then
qtWrapperArgs+=(--prefix QML2_IMPORT_PATH : "$qmlDir") qtWrapperArgs+=(--prefix NIXPKGS_QT5_QML_IMPORT_PATH : "$qmlDir")
fi fi
} }
addEnvHooks "$targetOffset" qtHostPathHook addEnvHooks "$targetOffset" qtHostPathHook

View File

@ -1,6 +1,4 @@
{ lib, debug, wrapQtAppsHook }: { wrapQtAppsHook }:
let inherit (lib) optional; in
mkDerivation: mkDerivation:

View File

@ -2,8 +2,8 @@
qtModule { qtModule {
pname = "qt3d"; pname = "qt3d";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
# error: use of undeclared identifier 'stat64' # error: use of undeclared identifier 'stat64'
NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) "-Dstat64=stat"; env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) "-Dstat64=stat";
} }

View File

@ -3,6 +3,9 @@
, coreutils, bison, flex, gdb, gperf, lndir, perl, pkg-config, python3 , coreutils, bison, flex, gdb, gperf, lndir, perl, pkg-config, python3
, which , which
# darwin support
, libiconv, libobjc, xcbuild, AGL, AppKit, ApplicationServices, AVFoundation, Carbon, Cocoa, CoreAudio, CoreBluetooth
, CoreLocation, CoreServices, DiskArbitration, Foundation, OpenGL, MetalKit, IOKit
, dbus, fontconfig, freetype, glib, harfbuzz, icu, libdrm, libX11, libXcomposite , dbus, fontconfig, freetype, glib, harfbuzz, icu, libdrm, libX11, libXcomposite
, libXcursor, libXext, libXi, libXrender, libinput, libjpeg, libpng , libxcb , libXcursor, libXext, libXi, libXrender, libinput, libjpeg, libpng , libxcb
@ -12,6 +15,7 @@
# optional dependencies # optional dependencies
, cups ? null, postgresql ? null , cups ? null, postgresql ? null
, withGtk3 ? false, dconf, gtk3 , withGtk3 ? false, dconf, gtk3
, withQttranslation ? true, qttranslations ? null
# options # options
, libGLSupported ? !stdenv.isDarwin , libGLSupported ? !stdenv.isDarwin
@ -24,13 +28,19 @@
, debug ? false , debug ? false
, developerBuild ? false , developerBuild ? false
, decryptSslTraffic ? false , decryptSslTraffic ? false
, testers
, buildPackages
}: }:
let let
debugSymbols = debug || developerBuild; debugSymbols = debug || developerBuild;
qtPlatformCross = plat: with plat;
if isLinux
then "linux-generic-g++"
else throw "Please add a qtPlatformCross entry for ${plat.config}";
in in
stdenv.mkDerivation { stdenv.mkDerivation (finalAttrs: ({
pname = "qtbase"; pname = "qtbase";
inherit qtCompatVersion src version; inherit qtCompatVersion src version;
debug = debugSymbols; debug = debugSymbols;
@ -46,6 +56,10 @@ stdenv.mkDerivation {
pcre2 pcre2
] ++ ( ] ++ (
if stdenv.isDarwin then [ if stdenv.isDarwin then [
# TODO: move to buildInputs, this should not be propagated.
AGL AppKit ApplicationServices AVFoundation Carbon Cocoa CoreAudio CoreBluetooth
CoreLocation CoreServices DiskArbitration Foundation OpenGL
libobjc libiconv MetalKit IOKit
] else [ ] else [
dbus glib udev dbus glib udev
@ -71,10 +85,24 @@ stdenv.mkDerivation {
++ lib.optional (mysqlSupport) libmysqlclient ++ lib.optional (mysqlSupport) libmysqlclient
++ lib.optional (postgresql != null) postgresql; ++ lib.optional (postgresql != null) postgresql;
nativeBuildInputs = [ bison flex gperf lndir perl pkg-config which ]; nativeBuildInputs = [ bison flex gperf lndir perl pkg-config which ]
++ lib.optionals stdenv.isDarwin [ xcbuild ];
} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
# `qtbase` expects to find `cc` (with no prefix) in the
# `$PATH`, so the following is needed even if
# `stdenv.buildPlatform.canExecute stdenv.hostPlatform`
depsBuildBuild = [ buildPackages.stdenv.cc ];
} // {
propagatedNativeBuildInputs = [ lndir ]; propagatedNativeBuildInputs = [ lndir ];
# libQt5Core links calls CoreFoundation APIs that call into the system ICU. Binaries linked
# against it will crash during build unless they can access `/usr/share/icu/icudtXXl.dat`.
propagatedSandboxProfile = lib.optionalString stdenv.isDarwin ''
(allow file-read* (subpath "/usr/share/icu"))
'';
enableParallelBuilding = true; enableParallelBuilding = true;
outputs = [ "bin" "dev" "out" ]; outputs = [ "bin" "dev" "out" ];
@ -113,6 +141,15 @@ stdenv.mkDerivation {
patchShebangs ./bin patchShebangs ./bin
'' + ( '' + (
if stdenv.isDarwin then '' if stdenv.isDarwin then ''
sed -i \
-e 's|/usr/bin/xcode-select|xcode-select|' \
-e 's|/usr/bin/xcrun|xcrun|' \
-e 's|/usr/bin/xcodebuild|xcodebuild|' \
-e 's|QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`|QMAKE_CXX="clang++"\nQMAKE_CONF_COMPILER="clang++"|' \
./configure
substituteInPlace ./mkspecs/common/mac.conf \
--replace "/System/Library/Frameworks/OpenGL.framework/" "${OpenGL}/Library/Frameworks/OpenGL.framework/" \
--replace "/System/Library/Frameworks/AGL.framework/" "${AGL}/Library/Frameworks/AGL.framework/"
'' else lib.optionalString libGLSupported '' '' else lib.optionalString libGLSupported ''
sed -i mkspecs/common/linux.conf \ sed -i mkspecs/common/linux.conf \
-e "/^QMAKE_INCDIR_OPENGL/ s|$|${libGL.dev or libGL}/include|" \ -e "/^QMAKE_INCDIR_OPENGL/ s|$|${libGL.dev or libGL}/include|" \
@ -137,6 +174,13 @@ stdenv.mkDerivation {
export MAKEFLAGS+=" -j$NIX_BUILD_CORES" export MAKEFLAGS+=" -j$NIX_BUILD_CORES"
./bin/syncqt.pl -version $version ./bin/syncqt.pl -version $version
'' + lib.optionalString (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
# QT's configure script will refuse to use pkg-config unless these two environment variables are set
export PKG_CONFIG_SYSROOT_DIR=/
export PKG_CONFIG_LIBDIR=${lib.getLib pkg-config}/lib
echo "QMAKE_LFLAGS=''${LDFLAGS}" >> mkspecs/devices/${qtPlatformCross stdenv.hostPlatform}/qmake.conf
echo "QMAKE_CFLAGS=''${CFLAGS}" >> mkspecs/devices/${qtPlatformCross stdenv.hostPlatform}/qmake.conf
echo "QMAKE_CXXFLAGS=''${CXXFLAGS}" >> mkspecs/devices/${qtPlatformCross stdenv.hostPlatform}/qmake.conf
''; '';
postConfigure = '' postConfigure = ''
@ -161,8 +205,14 @@ stdenv.mkDerivation {
done done
''; '';
env = {
NIX_CFLAGS_COMPILE = toString ([ NIX_CFLAGS_COMPILE = toString ([
"-Wno-error=sign-compare" # freetype-2.5.4 changed signedness of some struct fields "-Wno-error=sign-compare" # freetype-2.5.4 changed signedness of some struct fields
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"-Wno-warn=free-nonheap-object"
"-Wno-free-nonheap-object"
"-w"
] ++ [
''-DNIXPKGS_QTCOMPOSE="${libX11.out}/share/X11/locale"'' ''-DNIXPKGS_QTCOMPOSE="${libX11.out}/share/X11/locale"''
''-DLIBRESOLV_SO="${stdenv.cc.libc.out}/lib/libresolv"'' ''-DLIBRESOLV_SO="${stdenv.cc.libc.out}/lib/libresolv"''
''-DNIXPKGS_LIBXCURSOR="${libXcursor.out}/lib/libXcursor"'' ''-DNIXPKGS_LIBXCURSOR="${libXcursor.out}/lib/libXcursor"''
@ -176,6 +226,13 @@ stdenv.mkDerivation {
''-DNIXPKGS_QGTK3_XDG_DATA_DIRS="${gtk3}/share/gsettings-schemas/${gtk3.name}"'' ''-DNIXPKGS_QGTK3_XDG_DATA_DIRS="${gtk3}/share/gsettings-schemas/${gtk3.name}"''
''-DNIXPKGS_QGTK3_GIO_EXTRA_MODULES="${dconf.lib}/lib/gio/modules"'' ''-DNIXPKGS_QGTK3_GIO_EXTRA_MODULES="${dconf.lib}/lib/gio/modules"''
] ++ lib.optional decryptSslTraffic "-DQT_DECRYPT_SSL_TRAFFIC"); ] ++ lib.optional decryptSslTraffic "-DQT_DECRYPT_SSL_TRAFFIC");
} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
NIX_CFLAGS_COMPILE_FOR_BUILD = toString ([
"-Wno-warn=free-nonheap-object"
"-Wno-free-nonheap-object"
"-w"
]);
};
prefixKey = "-prefix "; prefixKey = "-prefix ";
@ -184,6 +241,9 @@ stdenv.mkDerivation {
# To prevent these failures, we need to override PostgreSQL detection. # To prevent these failures, we need to override PostgreSQL detection.
PSQL_LIBS = lib.optionalString (postgresql != null) "-L${postgresql.lib}/lib -lpq"; PSQL_LIBS = lib.optionalString (postgresql != null) "-L${postgresql.lib}/lib -lpq";
} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
configurePlatforms = [ ];
} // {
# TODO Remove obsolete and useless flags once the build will be totally mastered # TODO Remove obsolete and useless flags once the build will be totally mastered
configureFlags = [ configureFlags = [
"-plugindir $(out)/$(qtPluginPrefix)" "-plugindir $(out)/$(qtPluginPrefix)"
@ -210,11 +270,16 @@ stdenv.mkDerivation {
"-L" "${icu.out}/lib" "-L" "${icu.out}/lib"
"-I" "${icu.dev}/include" "-I" "${icu.dev}/include"
"-pch" "-pch"
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"-device ${qtPlatformCross stdenv.hostPlatform}"
"-device-option CROSS_COMPILE=${stdenv.cc.targetPrefix}"
] ]
++ lib.optional debugSymbols "-debug" ++ lib.optional debugSymbols "-debug"
++ lib.optionals developerBuild [ ++ lib.optionals developerBuild [
"-developer-build" "-developer-build"
"-no-warnings-are-errors" "-no-warnings-are-errors"
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"-no-warnings-are-errors"
] ++ (if (!stdenv.hostPlatform.isx86_64) then [ ] ++ (if (!stdenv.hostPlatform.isx86_64) then [
"-no-sse2" "-no-sse2"
] else [ ] else [
@ -286,6 +351,9 @@ stdenv.mkDerivation {
] ++ lib.optionals (mysqlSupport) [ ] ++ lib.optionals (mysqlSupport) [
"-L" "${libmysqlclient}/lib" "-L" "${libmysqlclient}/lib"
"-I" "${libmysqlclient}/include" "-I" "${libmysqlclient}/include"
] ++ lib.optional (withQttranslation && (qttranslations != null)) [
# depends on x11
"-translationdir" "${qttranslations}/translations"
] ]
); );
@ -325,6 +393,8 @@ stdenv.mkDerivation {
setupHook = ../hooks/qtbase-setup-hook.sh; setupHook = ../hooks/qtbase-setup-hook.sh;
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
meta = with lib; { meta = with lib; {
homepage = "https://www.qt.io/"; homepage = "https://www.qt.io/";
description = "A cross-platform application framework for C++"; description = "A cross-platform application framework for C++";
@ -352,4 +422,4 @@ stdenv.mkDerivation {
platforms = platforms.unix; platforms = platforms.unix;
}; };
} }))

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtcharts"; pname = "qtcharts";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -1,8 +1,13 @@
{ qtModule, lib, stdenv, qtbase, qtdeclarative, bluez }: { qtModule, lib, stdenv, qtbase, qtdeclarative, bluez, IOBluetooth }:
qtModule { qtModule {
pname = "qtconnectivity"; pname = "qtconnectivity";
qtInputs = [ qtbase qtdeclarative ];
buildInputs = lib.optional stdenv.isLinux bluez; buildInputs = lib.optional stdenv.isLinux bluez;
propagatedBuildInputs = [
qtbase
qtdeclarative
] ++ lib.optionals stdenv.isDarwin [
IOBluetooth
];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -0,0 +1,9 @@
{ lib, stdenv, qtModule, qtbase, qtdeclarative }:
qtModule {
pname = "qtdatavis3d";
propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ];
# error: use of undeclared identifier 'stat64'
env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) "-Dstat64=stat";
}

View File

@ -1,8 +1,10 @@
{ qtModule, lib, python3, qtbase, qtsvg }: { lib
, stdenv
, qtModule, python3, qtbase, qtsvg }:
qtModule { qtModule {
pname = "qtdeclarative"; pname = "qtdeclarative";
qtInputs = [ qtbase qtsvg ]; propagatedBuildInputs = [ qtbase qtsvg ];
nativeBuildInputs = [ python3 ]; nativeBuildInputs = [ python3 ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
preConfigure = '' preConfigure = ''

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtdoc"; pname = "qtdoc";
qtInputs = [ qtdeclarative ]; propagatedBuildInputs = [ qtdeclarative ];
outputs = [ "out" ]; outputs = [ "out" ];
} }

View File

@ -2,7 +2,7 @@
qtModule { qtModule {
pname = "qtgamepad"; pname = "qtgamepad";
qtInputs = [ qtbase qtdeclarative ] propagatedBuildInputs = [ qtbase qtdeclarative ]
++ lib.optional stdenv.isDarwin GameController; ++ lib.optional stdenv.isDarwin GameController;
buildInputs = [ ]; buildInputs = [ ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtgraphicaleffects"; pname = "qtgraphicaleffects";
qtInputs = [ qtdeclarative ]; propagatedBuildInputs = [ qtdeclarative ];
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
} }

View File

@ -1,7 +1,20 @@
{ qtModule, qtbase, libtiff }: { lib
, stdenv
, qtModule
, qtbase
, libwebp
, jasper
, libmng
, libtiff
}:
qtModule { qtModule {
pname = "qtimageformats"; pname = "qtimageformats";
qtInputs = [ qtbase ]; propagatedBuildInputs = [
propagatedBuildInputs = [ libtiff ]; qtbase libwebp
] ++ lib.optionals (!jasper.meta.broken) [
jasper
] ++ [
libmng libtiff
];
} }

View File

@ -2,12 +2,13 @@
qtModule { qtModule {
pname = "qtlocation"; pname = "qtlocation";
qtInputs = [ qtbase qtmultimedia ]; propagatedBuildInputs = [ qtbase qtmultimedia ];
outputs = [ "bin" "out" "dev" ]; outputs = [ "bin" "out" "dev" ];
qmakeFlags = lib.optionals stdenv.isDarwin [ qmakeFlags = lib.optionals stdenv.isDarwin [
# boost uses std::auto_ptr which has been disabled in clang with libcxx # boost uses std::auto_ptr which has been disabled in clang with libcxx
# This flag re-enables this feature # This flag re-enables this feature
# https://libcxx.llvm.org/docs/UsingLibcxx.html#c-17-specific-configuration-macros # https://libcxx.llvm.org/docs/UsingLibcxx.html#c-17-specific-configuration-macros
"QMAKE_CXXFLAGS+=-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR" "QMAKE_CXXFLAGS+=-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR"
"QMAKE_CXXFLAGS+=-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"
]; ];
} }

View File

@ -5,5 +5,5 @@
qtModule { qtModule {
pname = "qtlottie"; pname = "qtlottie";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
} }

View File

@ -2,7 +2,7 @@
qtModule { qtModule {
pname = "qtmacextras"; pname = "qtmacextras";
qtInputs = [ qtbase ]; propagatedBuildInputs = [ qtbase ];
meta = with lib; { meta = with lib; {
maintainers = with maintainers; [ periklis ]; maintainers = with maintainers; [ periklis ];
platforms = platforms.darwin; platforms = platforms.darwin;

View File

@ -13,7 +13,7 @@
qtModule { qtModule {
pname = "qtmultimedia"; pname = "qtmultimedia";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ gstreamer gst-plugins-base ] buildInputs = [ gstreamer gst-plugins-base ]
# https://github.com/NixOS/nixpkgs/pull/169336 regarding libpulseaudio # https://github.com/NixOS/nixpkgs/pull/169336 regarding libpulseaudio

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtnetworkauth"; pname = "qtnetworkauth";
qtInputs = [ qtbase ]; propagatedBuildInputs = [ qtbase ];
} }

View File

@ -0,0 +1,27 @@
{ qtModule
, lib
, qtbase
, qtdeclarative
}:
qtModule {
pname = "qtpim";
outputs = [
"out"
"dev"
];
propagatedBuildInputs = [
qtbase
qtdeclarative
];
qmakeFlags = [
"CONFIG+=git_build"
];
meta = {
maintainers = with lib.maintainers; [ OPNA2608 ];
};
}

View File

@ -0,0 +1,14 @@
{ qtModule
, qtbase
, qtdeclarative
, qtserialport
, pkg-config
, openssl
}:
qtModule {
pname = "qtpositioning";
propagatedBuildInputs = [ qtbase qtdeclarative qtserialport ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
}

View File

@ -0,0 +1,14 @@
{ stdenv
, lib
, qtModule
, qtbase
, qtdeclarative
, StoreKit
, Foundation
}:
qtModule {
pname = "qtpurchasing";
propagatedBuildInputs = [ qtbase qtdeclarative ];
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ Foundation StoreKit ];
}

View File

@ -0,0 +1,11 @@
{ qtModule
, qtbase
, qtdeclarative
, openssl
}:
qtModule {
pname = "qtquick3d";
propagatedBuildInputs = [ qtbase qtdeclarative ];
buildInputs = [ openssl ];
}

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtquickcontrols"; pname = "qtquickcontrols";
qtInputs = [ qtdeclarative ]; propagatedBuildInputs = [ qtdeclarative ];
} }

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtquickcontrols2"; pname = "qtquickcontrols2";
qtInputs = [ qtdeclarative ]; propagatedBuildInputs = [ qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -0,0 +1,8 @@
{ qtModule, qtbase, qtdeclarative }:
qtModule {
pname = "qtremoteobjects";
propagatedBuildInputs = [ qtbase qtdeclarative ];
# cycle is detected in build when adding "dev" "bin" too
outputs = [ "out" ];
}

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtscript"; pname = "qtscript";
qtInputs = [ qtbase qttools ]; propagatedBuildInputs = [ qtbase qttools ];
} }

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtscxml"; pname = "qtscxml";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtsensors"; pname = "qtsensors";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtserialbus"; pname = "qtserialbus";
qtInputs = [ qtbase qtserialport ]; propagatedBuildInputs = [ qtbase qtserialport ];
} }

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtserialport"; pname = "qtserialport";
qtInputs = [ qtbase ]; propagatedBuildInputs = [ qtbase ];
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isLinux "-DNIXPKGS_LIBUDEV=\"${lib.getLib systemd}/lib/libudev\""; env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isLinux "-DNIXPKGS_LIBUDEV=\"${lib.getLib systemd}/lib/libudev\"";
} }

View File

@ -2,7 +2,7 @@
qtModule { qtModule {
pname = "qtspeech"; pname = "qtspeech";
qtInputs = [ ]; propagatedBuildInputs = [ ];
buildInputs = lib.optionals stdenv.isLinux [ speechd ]; buildInputs = lib.optionals stdenv.isLinux [ speechd ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtsvg"; pname = "qtsvg";
qtInputs = [ qtbase ]; propagatedBuildInputs = [ qtbase ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -0,0 +1,54 @@
{ qtModule
, stdenv
, lib
, bluez
, libevdev
, libX11
, pkg-config
, qtbase
, udev
, wrapQtAppsHook
}:
qtModule {
pname = "qtsystems";
outputs = [
"out"
"dev"
] ++ lib.optionals stdenv.hostPlatform.isLinux [
"bin"
];
propagatedBuildInputs = [
qtbase
];
nativeBuildInputs = [
pkg-config
wrapQtAppsHook
];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
bluez
libevdev
libX11
udev
];
qmakeFlags = [
"CONFIG+=git_build"
] ++ lib.optionals stdenv.hostPlatform.isLinux [
"CONFIG+=ofono"
"CONFIG+=udisks"
"CONFIG+=upower"
];
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
wrapQtApp $bin/bin/servicefw
'';
meta = {
maintainers = with lib.maintainers; [ OPNA2608 ];
};
}

View File

@ -2,7 +2,7 @@
qtModule { qtModule {
pname = "qttools"; pname = "qttools";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
# fixQtBuiltinPaths overwrites a builtin path we should keep # fixQtBuiltinPaths overwrites a builtin path we should keep
@ -36,7 +36,7 @@ qtModule {
"bin/macdeployqt" "bin/macdeployqt"
]; ];
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin ''-DNIXPKGS_QMLIMPORTSCANNER="${qtdeclarative.dev}/bin/qmlimportscanner"''; env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.isDarwin && qtdeclarative != null) ''-DNIXPKGS_QMLIMPORTSCANNER="${qtdeclarative.dev}/bin/qmlimportscanner"'';
setupHook = ../hooks/qttools-setup-hook.sh; setupHook = ../hooks/qttools-setup-hook.sh;
} }

View File

@ -2,5 +2,6 @@
qtModule { qtModule {
pname = "qttranslations"; pname = "qttranslations";
qtInputs = [ qttools ]; nativeBuildInputs = [ qttools ];
outputs = [ "out" ];
} }

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtvirtualkeyboard"; pname = "qtvirtualkeyboard";
qtInputs = [ qtbase qtdeclarative qtsvg hunspell ]; propagatedBuildInputs = [ qtbase qtdeclarative qtsvg hunspell ];
} }

View File

@ -1,24 +1,16 @@
{ lib, qtModule, qtbase, qtquickcontrols, wayland, pkg-config, fetchpatch }: { qtModule, qtbase, qtquickcontrols, wayland, wayland-scanner, pkg-config, lib }:
qtModule { qtModule {
pname = "qtwayland"; pname = "qtwayland";
qtInputs = [ qtbase qtquickcontrols ]; propagatedBuildInputs = [ qtbase qtquickcontrols ];
buildInputs = [ wayland ]; buildInputs = [ wayland ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config wayland-scanner ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
patches = [ patches = [
# NixOS-specific, ensure that app_id is correctly determined for # NixOS-specific, ensure that app_id is correctly determined for
# wrapped executables from `wrapQtAppsHook` (see comment in patch for further # wrapped executables from `wrapQtAppsHook` (see comment in patch for further
# context). Beware: shared among different Qt5 versions. # context).
./qtwayland-app_id.patch ./qtwayland-app_id.patch
# Backport of https://codereview.qt-project.org/c/qt/qtwayland/+/388338
# Pulled from Fedora as they modified it to not apply to KDE as Plasma 5.x
# doesn't behave properly with the patch applied. See the discussion at
# https://invent.kde.org/qt/qt/qtwayland/-/merge_requests/39 for details
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/qt5-qtwayland/raw/46376bb00d4c3dd3db2e82ad7ca5301ce16ea4ab/f/0080-Client-set-constraint-adjustments-for-popups-in-xdg.patch";
sha256 = "sha256-XP+noYCk8fUdA0ItCqMjV7lSXDlNdB7Az9q7NRpupHc=";
})
]; ];
meta.badPlatforms = lib.platforms.darwin;
} }

View File

@ -1,8 +1,12 @@
{ qtModule, qtbase, qtdeclarative }: { lib
, stdenv
, qtModule
, qtbase
, qtdeclarative
}:
qtModule { qtModule {
pname = "qtwebchannel"; pname = "qtwebchannel";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" ] ++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [ "bin" ];
} }

View File

@ -2,13 +2,17 @@
, qtdeclarative, qtquickcontrols, qtlocation, qtwebchannel , qtdeclarative, qtquickcontrols, qtlocation, qtwebchannel
, bison, flex, git, gperf, ninja, pkg-config, python, which , bison, flex, git, gperf, ninja, pkg-config, python, which
, nodejs, qtbase, perl , nodejs, perl
, buildPackages
, pkgsBuildTarget
, pkgsBuildBuild
, xorg, libXcursor, libXScrnSaver, libXrandr, libXtst , xorg, libXcursor, libXScrnSaver, libXrandr, libXtst
, fontconfig, freetype, harfbuzz, icu, dbus, libdrm , fontconfig, freetype, harfbuzz, icu, dbus, libdrm
, zlib, minizip, libjpeg, libpng, libtiff, libwebp, libopus , zlib, minizip, libjpeg, libpng, libtiff, libwebp, libopus
, jsoncpp, protobuf, libvpx, srtp, snappy, nss, libevent , jsoncpp, protobuf, libvpx, srtp, snappy, nss, libevent
, alsa-lib , alsa-lib
, pulseaudio
, libcap , libcap
, pciutils , pciutils
, systemd , systemd
@ -17,8 +21,8 @@
, cctools, libobjc, libpm, libunwind, sandbox, xnu , cctools, libobjc, libpm, libunwind, sandbox, xnu
, ApplicationServices, AVFoundation, Foundation, ForceFeedback, GameController, AppKit , ApplicationServices, AVFoundation, Foundation, ForceFeedback, GameController, AppKit
, ImageCaptureCore, CoreBluetooth, IOBluetooth, CoreWLAN, Quartz, Cocoa, LocalAuthentication , ImageCaptureCore, CoreBluetooth, IOBluetooth, CoreWLAN, Quartz, Cocoa, LocalAuthentication
, MediaPlayer, MediaAccessibility, SecurityInterface, Vision, CoreML , MediaPlayer, MediaAccessibility, SecurityInterface, Vision, CoreML, OpenDirectory, Accelerate
, cups, openbsm, runCommand, xcbuild, writeScriptBin , cups, openbsm, xcbuild, writeScriptBin
, ffmpeg_4 ? null , ffmpeg_4 ? null
, lib, stdenv, fetchpatch , lib, stdenv, fetchpatch
, version ? null , version ? null
@ -26,13 +30,39 @@
, pipewireSupport ? stdenv.isLinux , pipewireSupport ? stdenv.isLinux
, pipewire_0_2 , pipewire_0_2
, postPatch ? "" , postPatch ? ""
, nspr
, lndir
}: }:
qtModule { let
# qtwebengine expects to find an executable in $PATH which runs on
# the build platform yet knows about the host `.pc` files. Most
# configury allows setting $PKG_CONFIG to point to an
# arbitrarily-named script which serves this purpose; however QT
# insists that it is named `pkg-config` with no target prefix. So
# we re-wrap the host platform's pkg-config.
pkg-config-wrapped-without-prefix = stdenv.mkDerivation {
name = "pkg-config-wrapper-without-target-prefix";
dontUnpack = true;
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
ln -s '${buildPackages.pkg-config}/bin/${buildPackages.pkg-config.targetPrefix}pkg-config' $out/bin/pkg-config
'';
};
in
qtModule ({
pname = "qtwebengine"; pname = "qtwebengine";
qtInputs = [ qtdeclarative qtquickcontrols qtlocation qtwebchannel ];
nativeBuildInputs = [ nativeBuildInputs = [
bison flex git gperf ninja pkg-config python which gn nodejs bison flex git gperf ninja pkg-config (python.withPackages(ps: [ ps.html5lib ])) which gn nodejs
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
perl
lndir (lib.getDev pkgsBuildTarget.targetPackages.qt5.qtbase)
pkgsBuildBuild.pkg-config
(lib.getDev pkgsBuildTarget.targetPackages.qt5.qtquickcontrols)
pkg-config-wrapped-without-prefix
] ++ lib.optional stdenv.isDarwin xcbuild; ] ++ lib.optional stdenv.isDarwin xcbuild;
doCheck = true; doCheck = true;
outputs = [ "bin" "dev" "out" ]; outputs = [ "bin" "dev" "out" ];
@ -76,8 +106,8 @@ qtModule {
'' ''
# Patch library paths in Chromium sources # Patch library paths in Chromium sources
+ lib.optionalString (!stdenv.isDarwin) '' + lib.optionalString (!stdenv.isDarwin) ''
#sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \ sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \
# src/3rdparty/chromium/device/udev_linux/udev?_loader.cc src/3rdparty/chromium/device/udev_linux/udev?_loader.cc
sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \ sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
src/3rdparty/chromium/gpu/config/gpu_info_collector_linux.cc src/3rdparty/chromium/gpu/config/gpu_info_collector_linux.cc
@ -102,7 +132,12 @@ qtModule {
--replace "-Wl,-fatal_warnings" "" --replace "-Wl,-fatal_warnings" ""
'') + postPatch; '') + postPatch;
NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isGNU [ env = {
NIX_CFLAGS_COMPILE =
toString (
lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"-w "
] ++ lib.optionals stdenv.cc.isGNU [
# with gcc8, -Wclass-memaccess became part of -Wall and this exceeds the logging limit # with gcc8, -Wclass-memaccess became part of -Wall and this exceeds the logging limit
"-Wno-class-memaccess" "-Wno-class-memaccess"
] ++ lib.optionals (stdenv.hostPlatform.gcc.arch or "" == "sandybridge") [ ] ++ lib.optionals (stdenv.hostPlatform.gcc.arch or "" == "sandybridge") [
@ -112,6 +147,10 @@ qtModule {
] ++ lib.optionals stdenv.cc.isClang [ ] ++ lib.optionals stdenv.cc.isClang [
"-Wno-elaborated-enum-base" "-Wno-elaborated-enum-base"
]); ]);
} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
NIX_CFLAGS_LINK = "-Wl,--no-warn-search-mismatch";
"NIX_CFLAGS_LINK_${buildPackages.stdenv.cc.suffixSalt}" = "-Wl,--no-warn-search-mismatch";
};
preConfigure = '' preConfigure = ''
export NINJAFLAGS=-j$NIX_BUILD_CORES export NINJAFLAGS=-j$NIX_BUILD_CORES
@ -119,13 +158,20 @@ qtModule {
if [ -d "$PWD/tools/qmake" ]; then if [ -d "$PWD/tools/qmake" ]; then
QMAKEPATH="$PWD/tools/qmake''${QMAKEPATH:+:}$QMAKEPATH" QMAKEPATH="$PWD/tools/qmake''${QMAKEPATH:+:}$QMAKEPATH"
fi fi
'' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
export QMAKE_CC=$CC
export QMAKE_CXX=$CXX
export QMAKE_LINK=$CXX
export QMAKE_AR=$AR
''; '';
qmakeFlags = [ "--" "-system-ffmpeg" ] qmakeFlags = [ "--" "-system-ffmpeg" ]
++ lib.optional pipewireSupport "-webengine-webrtc-pipewire" ++ lib.optional (pipewireSupport && stdenv.buildPlatform == stdenv.hostPlatform) "-webengine-webrtc-pipewire"
++ lib.optional enableProprietaryCodecs "-proprietary-codecs"; ++ lib.optional enableProprietaryCodecs "-proprietary-codecs";
propagatedBuildInputs = [ propagatedBuildInputs = [
qtdeclarative qtquickcontrols qtlocation qtwebchannel
# Image formats # Image formats
libjpeg libpng libtiff libwebp libjpeg libpng libtiff libwebp
@ -145,6 +191,7 @@ qtModule {
# Audio formats # Audio formats
alsa-lib alsa-lib
pulseaudio
# Text rendering # Text rendering
fontconfig freetype fontconfig freetype
@ -186,6 +233,8 @@ qtModule {
SecurityInterface SecurityInterface
Vision Vision
CoreML CoreML
OpenDirectory
Accelerate
openbsm openbsm
libunwind libunwind
@ -215,7 +264,9 @@ qtModule {
dontUseNinjaBuild = true; dontUseNinjaBuild = true;
dontUseNinjaInstall = true; dontUseNinjaInstall = true;
postInstall = lib.optionalString stdenv.isLinux '' postInstall = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
mkdir -p $out/libexec
'' + lib.optionalString stdenv.isLinux ''
cat > $out/libexec/qt.conf <<EOF cat > $out/libexec/qt.conf <<EOF
[Paths] [Paths]
Prefix = .. Prefix = ..
@ -230,25 +281,36 @@ qtModule {
meta = with lib; { meta = with lib; {
description = "A web engine based on the Chromium web browser"; description = "A web engine based on the Chromium web browser";
mainProgram = "qwebengine_convert_dict";
maintainers = with maintainers; [ matthewbauer ]; maintainers = with maintainers; [ matthewbauer ];
# qtwebengine-5.15.8: "QtWebEngine can only be built for x86, # qtwebengine-5.15.8: "QtWebEngine can only be built for x86,
# x86-64, ARM, Aarch64, and MIPSel architectures." # x86-64, ARM, Aarch64, and MIPSel architectures."
platforms = platforms = with lib.systems.inspect.patterns;
lib.trivial.pipe lib.systems.doubles.all [ let inherit (lib.systems.inspect) patternLogicalAnd;
(map (double: lib.systems.elaborate { system = double; })) in concatMap (patternLogicalAnd isUnix) (lib.concatMap lib.toList [
(lib.lists.filter (parsedPlatform: with parsedPlatform; isx86_32
isUnix && isx86_64
(isx86_32 || isAarch32
isx86_64 || isAarch64
isAarch32 || (patternLogicalAnd isMips isLittleEndian)
isAarch64 || ]);
(isMips && isLittleEndian))))
(map (plat: plat.system))
];
broken = stdenv.isDarwin && stdenv.isx86_64;
# This build takes a long time; particularly on slow architectures # This build takes a long time; particularly on slow architectures
timeout = 24 * 3600; timeout = 24 * 3600;
}; };
}
} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
configurePlatforms = [ ];
# to get progress output in `nix-build` and `nix build -L`
preBuild = ''
export TERM=dumb
'';
depsBuildBuild = [
pkgsBuildBuild.stdenv
zlib
nss
nspr
];
})

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtwebglplugin"; pname = "qtwebglplugin";
qtInputs = [ qtbase qtwebsockets ]; propagatedBuildInputs = [ qtbase qtwebsockets ];
} }

View File

@ -2,7 +2,7 @@
, qtbase, qtdeclarative, qtlocation, qtmultimedia, qtsensors, qtwebchannel , qtbase, qtdeclarative, qtlocation, qtmultimedia, qtsensors, qtwebchannel
, fontconfig, libwebp, libxml2, libxslt , fontconfig, libwebp, libxml2, libxslt
, sqlite, systemd, glib, gst_all_1, cmake , sqlite, systemd, glib, gst_all_1, cmake
, bison, flex, gdb, gperf, perl, pkg-config, python38, ruby , bison, flex, gdb, gperf, perl, pkg-config, python3, ruby
, ICU, OpenGL , ICU, OpenGL
}: }:
@ -22,11 +22,11 @@ let
in in
qtModule { qtModule {
pname = "qtwebkit"; pname = "qtwebkit";
qtInputs = [ qtbase qtdeclarative qtlocation qtsensors qtwebchannel ] propagatedBuildInputs = [ qtbase qtdeclarative qtlocation qtsensors qtwebchannel ]
++ lib.optional stdenv.isDarwin qtmultimedia; ++ lib.optional stdenv.isDarwin qtmultimedia;
buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite glib gst_all_1.gstreamer gst_all_1.gst-plugins-base hyphen ] buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite glib gst_all_1.gstreamer gst_all_1.gst-plugins-base hyphen ]
++ lib.optionals stdenv.isDarwin [ ICU OpenGL ]; ++ lib.optionals stdenv.isDarwin [ ICU OpenGL ];
nativeBuildInputs = [ bison flex gdb gperf perl pkg-config python38 ruby cmake ]; nativeBuildInputs = [ bison flex gdb gperf perl pkg-config python3 ruby cmake ];
cmakeFlags = [ "-DPORT=Qt" ] cmakeFlags = [ "-DPORT=Qt" ]
++ lib.optionals stdenv.isDarwin [ ++ lib.optionals stdenv.isDarwin [
@ -35,7 +35,7 @@ qtModule {
"-DMACOS_FORCE_SYSTEM_XML_LIBRARIES=OFF" "-DMACOS_FORCE_SYSTEM_XML_LIBRARIES=OFF"
]; ];
NIX_CFLAGS_COMPILE = toString ([ env.NIX_CFLAGS_COMPILE = toString ([
# with gcc7 this warning blows the log over Hydra's limit # with gcc7 this warning blows the log over Hydra's limit
"-Wno-expansion-to-defined" "-Wno-expansion-to-defined"
] ]
@ -47,12 +47,13 @@ qtModule {
doCheck = false; # fails 13 out of 13 tests (ctest) doCheck = false; # fails 13 out of 13 tests (ctest)
# Hack to avoid TMPDIR in RPATHs. # remove forbidden references to $TMPDIR
preFixup = '' preFixup = lib.optionalString stdenv.isLinux ''
rm -rf "$(pwd)" patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$out"/libexec/*
mkdir "$(pwd)"
''; '';
enableParallelBuilding = true;
meta = { meta = {
maintainers = with lib.maintainers; [ abbradar periklis ]; maintainers = with lib.maintainers; [ abbradar periklis ];
knownVulnerabilities = [ knownVulnerabilities = [

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtwebsockets"; pname = "qtwebsockets";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
outputs = [ "out" "dev" "bin" ]; outputs = [ "out" "dev" "bin" ];
} }

View File

@ -2,7 +2,7 @@
qtModule { qtModule {
pname = "qtwebview"; pname = "qtwebview";
qtInputs = [ qtdeclarative qtwebengine ]; propagatedBuildInputs = [ qtdeclarative qtwebengine ];
buildInputs = lib.optionals stdenv.isDarwin [ buildInputs = lib.optionals stdenv.isDarwin [
CoreFoundation CoreFoundation
WebKit WebKit

View File

@ -2,5 +2,5 @@
qtModule { qtModule {
pname = "qtx11extras"; pname = "qtx11extras";
qtInputs = [ qtbase ]; propagatedBuildInputs = [ qtbase ];
} }

View File

@ -2,6 +2,6 @@
qtModule { qtModule {
pname = "qtxmlpatterns"; pname = "qtxmlpatterns";
qtInputs = [ qtbase qtdeclarative ]; propagatedBuildInputs = [ qtbase qtdeclarative ];
devTools = [ "bin/xmlpatterns" "bin/xmlpatternsvalidator" ]; devTools = [ "bin/xmlpatterns" "bin/xmlpatternsvalidator" ];
} }

View File

@ -1,9 +1,16 @@
{ lib, mkDerivation, perl }: { lib
, stdenv
, buildPackages
, mkDerivation
, perl
, qmake
, patches
, srcs
, pkgsHostTarget
}:
let inherit (lib) licenses maintainers platforms; in let inherit (lib) licenses maintainers platforms; in
{ self, srcs, patches }:
args: args:
let let
@ -16,8 +23,18 @@ mkDerivation (args // {
inherit pname version src; inherit pname version src;
patches = (args.patches or []) ++ (patches.${pname} or []); patches = (args.patches or []) ++ (patches.${pname} or []);
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ perl self.qmake ]; nativeBuildInputs =
propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []); (args.nativeBuildInputs or []) ++ [
perl qmake
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
pkgsHostTarget.qt5.qtbase.dev
];
propagatedBuildInputs =
(lib.warnIf (args ? qtInputs) "qt5.qtModule's qtInputs argument is deprecated" args.qtInputs or []) ++
(args.propagatedBuildInputs or []);
} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
depsBuildBuild = [ buildPackages.stdenv.cc ] ++ (args.depsBuildBuild or []);
} // {
outputs = args.outputs or [ "out" "dev" ]; outputs = args.outputs or [ "out" "dev" ];
setOutputFlags = args.setOutputFlags or false; setOutputFlags = args.setOutputFlags or false;