mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-07 20:53:22 +00:00
Merge pull request #329238 from gador/pyside6-darwin
python312Packages.pyside6: allow optional dependencies for darwin
This commit is contained in:
commit
556126cb6c
@ -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,55 @@ 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.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.isDarwin { LLVM_INSTALL_DIR = "${llvmPackages.libclang.lib}/lib"; };
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
python
|
||||
pythonImportsCheckHook
|
||||
] ++ lib.optionals stdenv.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.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 +121,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cp -r PySide6.egg-info $out/${python.sitePackages}/
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "PySide6" ];
|
||||
|
||||
meta = {
|
||||
description = "Python bindings for Qt";
|
||||
license = with lib.licenses; [
|
||||
|
Loading…
Reference in New Issue
Block a user