depot/third_party/nixpkgs/pkgs/development/python-modules/sip/4.x.nix

71 lines
2 KiB
Nix

{
lib,
fetchurl,
fetchpatch,
buildPythonPackage,
python,
isPyPy,
pythonAtLeast,
pythonOlder,
sip-module ? "sip",
setuptools,
}:
buildPythonPackage rec {
pname = sip-module;
version = "4.19.25";
format = "other";
disabled = isPyPy;
src = fetchurl {
url = "https://www.riverbankcomputing.com/static/Downloads/sip/${version}/sip-${version}.tar.gz";
sha256 = "04a23cgsnx150xq86w1z44b6vr2zyazysy9mqax0fy346zlr77dk";
};
patches = lib.optionals (pythonAtLeast "3.11") [
(fetchpatch {
name = "sip-4-python3-11.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/python3-11.patch?h=sip4&id=67b5907227e68845cdfafcf050fedb89ed653585";
sha256 = "sha256-cmuz2y5+T8EM/h03G2oboSnnOwrUjVKt2TUQaC9YAdE=";
})
];
postPatch = lib.optionalString (pythonAtLeast "3.12") ''
substituteInPlace configure.py --replace-fail "from distutils" "from setuptools._distutils"
'';
propagatedBuildInputs = lib.optional (pythonAtLeast "3.12") setuptools;
configurePhase = ''
${python.executable} ./configure.py \
--sip-module ${sip-module} \
-d $out/${python.sitePackages} \
-b $out/bin -e $out/include
'';
enableParallelBuilding = true;
pythonImportsCheck = [
# https://www.riverbankcomputing.com/pipermail/pyqt/2023-January/045094.html
# the import check for "sip" will fail, as it segfaults as the interperter is shutting down.
# This is an upstream bug with sip4 on python3.12, and happens in the ubuntu packages version as well.
# As the pacakge works fine until exit, just remove the import check for now.
# See discussion at https://github.com/NixOS/nixpkgs/pull/327976#discussion_r1706488319
(lib.optional (pythonOlder "3.12") sip-module)
"sipconfig"
];
meta = with lib; {
description = "Creates C++ bindings for Python modules";
mainProgram = "sip";
homepage = "https://riverbankcomputing.com/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [
lovek323
sander
];
platforms = platforms.all;
};
}