diff options
Diffstat (limited to 'pkgs/development/python-modules/pyside6/default.nix')
-rw-r--r-- | pkgs/development/python-modules/pyside6/default.nix | 132 |
1 files changed, 90 insertions, 42 deletions
diff --git a/pkgs/development/python-modules/pyside6/default.nix b/pkgs/development/python-modules/pyside6/default.nix index 79c691980ffbf..088f4e785af64 100644 --- a/pkgs/development/python-modules/pyside6/default.nix +++ b/pkgs/development/python-modules/pyside6/default.nix @@ -2,11 +2,55 @@ lib, stdenv, cmake, + cups, ninja, python, + pythonImportsCheckHook, moveBuildTree, shiboken6, + llvmPackages, + symlinkJoin, + libGL, + darwin, }: +let + packages = with python.pkgs.qt6; [ + # required + python.pkgs.ninja + python.pkgs.packaging + python.pkgs.setuptools + qtbase + + # optional + qt3d + qtcharts + qtconnectivity + qtdatavis3d + qtdeclarative + qthttpserver + qtmultimedia + qtnetworkauth + qtquick3d + qtremoteobjects + qtscxml + qtsensors + qtspeech + qtsvg + qtwebchannel + qtwebsockets + qtpositioning + qtlocation + qtshadertools + qtserialport + qtserialbus + qtgraphs + qttools + ]; + qt_linked = symlinkJoin { + name = "qt_linked"; + paths = packages; + }; +in stdenv.mkDerivation (finalAttrs: { pname = "pyside6"; @@ -15,52 +59,57 @@ stdenv.mkDerivation (finalAttrs: { sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/pyside6"; - # FIXME: cmake/Macros/PySideModules.cmake supposes that all Qt frameworks on macOS + # cmake/Macros/PySideModules.cmake supposes that all Qt frameworks on macOS # reside in the same directory as QtCore.framework, which is not true for Nix. - postPatch = lib.optionalString stdenv.isLinux '' - # Don't ignore optional Qt modules - substituteInPlace cmake/PySideHelpers.cmake \ - --replace-fail \ - 'string(FIND "''${_module_dir}" "''${_core_abs_dir}" found_basepath)' \ - 'set (found_basepath 0)' - ''; + # We therefore symLink all required and optional Qt modules in one directory tree ("qt_linked"). + # Also we remove "Designer" from darwin build, due to linking failure + postPatch = + '' + # Don't ignore optional Qt modules + substituteInPlace cmake/PySideHelpers.cmake \ + --replace-fail \ + 'string(FIND "''${_module_dir}" "''${_core_abs_dir}" found_basepath)' \ + 'set (found_basepath 0)' + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace cmake/PySideHelpers.cmake \ + --replace-fail \ + "Designer" "" + ''; + + # "Couldn't find libclang.dylib You will likely need to add it manually to PATH to ensure the build succeeds." + env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { + LLVM_INSTALL_DIR = "${llvmPackages.libclang.lib}/lib"; + }; nativeBuildInputs = [ cmake ninja python - ] ++ lib.optionals stdenv.isDarwin [ moveBuildTree ]; + pythonImportsCheckHook + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ moveBuildTree ]; buildInputs = - with python.pkgs.qt6; - [ - # required - qtbase - python.pkgs.ninja - python.pkgs.packaging - python.pkgs.setuptools - ] - ++ lib.optionals stdenv.isLinux [ - # optional - qt3d - qtcharts - qtconnectivity - qtdatavis3d - qtdeclarative - qthttpserver - qtmultimedia - qtnetworkauth - qtquick3d - qtremoteobjects - qtscxml - qtsensors - qtspeech - qtsvg - qttools - qtwebchannel - qtwebengine - qtwebsockets - ]; + if stdenv.hostPlatform.isLinux then + # qtwebengine fails under darwin + # see https://github.com/NixOS/nixpkgs/pull/312987 + packages ++ [ python.pkgs.qt6.qtwebengine ] + else + with darwin.apple_sdk_11_0.frameworks; + [ + qt_linked + libGL + cups + # frameworks + IOKit + DiskArbitration + CoreBluetooth + EventKit + AVFoundation + Contacts + AGL + AppKit + ]; propagatedBuildInputs = [ shiboken6 ]; @@ -74,6 +123,8 @@ stdenv.mkDerivation (finalAttrs: { cp -r PySide6.egg-info $out/${python.sitePackages}/ ''; + pythonImportsCheck = [ "PySide6" ]; + meta = { description = "Python bindings for Qt"; license = with lib.licenses; [ @@ -83,10 +134,7 @@ stdenv.mkDerivation (finalAttrs: { ]; homepage = "https://wiki.qt.io/Qt_for_Python"; changelog = "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-${finalAttrs.version}?h=v${finalAttrs.version}"; - maintainers = with lib.maintainers; [ - gebner - Enzime - ]; + maintainers = with lib.maintainers; [ gebner ]; platforms = lib.platforms.all; }; }) |