depot/third_party/nixpkgs/pkgs/development/python-modules/pyside6/default.nix

141 lines
3.3 KiB
Nix
Raw Normal View History

{
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";
inherit (shiboken6) version src;
sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/pyside6";
# 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.
# 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
pythonImportsCheckHook
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ moveBuildTree ];
buildInputs =
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 ];
cmakeFlags = [ "-DBUILD_TESTS=OFF" ];
dontWrapQtApps = true;
postInstall = ''
cd ../../..
${python.pythonOnBuildForHost.interpreter} setup.py egg_info --build-type=pyside6
cp -r PySide6.egg-info $out/${python.sitePackages}/
'';
pythonImportsCheck = [ "PySide6" ];
meta = {
description = "Python bindings for Qt";
license = with lib.licenses; [
lgpl3Only
gpl2Only
gpl3Only
];
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 ];
platforms = lib.platforms.all;
};
})