lol

python3Packages.protobuf3: use dedicated package definition

+91 -1
+90
pkgs/development/python-modules/protobuf/3.nix
··· 1 + { buildPackages 2 + , buildPythonPackage 3 + , fetchpatch 4 + , isPyPy 5 + , lib 6 + , protobuf 7 + , pytestCheckHook 8 + , pythonAtLeast 9 + , tzdata 10 + }: 11 + 12 + assert lib.versionAtLeast protobuf.version "3.21" -> throw "Protobuf 3.20 or older required"; 13 + 14 + buildPythonPackage { 15 + inherit (protobuf) pname src; 16 + 17 + version = protobuf.version; 18 + 19 + sourceRoot = "${protobuf.src.name}/python"; 20 + 21 + patches = lib.optionals (pythonAtLeast "3.11") [ 22 + (fetchpatch { 23 + name = "support-python311.patch"; 24 + url = "https://github.com/protocolbuffers/protobuf/commit/2206b63c4649cf2e8a06b66c9191c8ef862ca519.diff"; 25 + stripLen = 1; # because sourceRoot above 26 + hash = "sha256-3GaoEyZIhS3QONq8LEvJCH5TdO9PKnOgcQF0GlEiwFo="; 27 + }) 28 + ]; 29 + 30 + prePatch = '' 31 + if [[ "$(<../version.json)" != *'"python": "'"$version"'"'* ]]; then 32 + echo "Python library version mismatch. Derivation version: $version, actual: $(<../version.json)" 33 + exit 1 34 + fi 35 + ''; 36 + 37 + # Remove the line in setup.py that forces compiling with C++14. Upstream's 38 + # CMake build has been updated to support compiling with other versions of 39 + # C++, but the Python build has not. Without this, we observe compile-time 40 + # errors using GCC. 41 + # 42 + # Fedora appears to do the same, per this comment: 43 + # 44 + # https://github.com/protocolbuffers/protobuf/issues/12104#issuecomment-1542543967 45 + # 46 + postPatch = '' 47 + sed -i "/extra_compile_args.append('-std=c++14')/d" setup.py 48 + ''; 49 + 50 + nativeBuildInputs = lib.optional isPyPy tzdata; 51 + 52 + buildInputs = [ protobuf ]; 53 + 54 + propagatedNativeBuildInputs = [ 55 + # For protoc of the same version. 56 + buildPackages."protobuf${lib.versions.major protobuf.version}_${lib.versions.minor protobuf.version}" 57 + ]; 58 + 59 + setupPyGlobalFlags = [ "--cpp_implementation" ]; 60 + 61 + nativeCheckInputs = [ 62 + pytestCheckHook 63 + ]; 64 + 65 + disabledTests = lib.optionals isPyPy [ 66 + # error message differs 67 + "testInvalidTimestamp" 68 + # requires tracemalloc which pypy does not implement 69 + # https://foss.heptapod.net/pypy/pypy/-/issues/3048 70 + "testUnknownFieldsNoMemoryLeak" 71 + # assertion is not raised for some reason 72 + "testStrictUtf8Check" 73 + ]; 74 + 75 + pythonImportsCheck = [ 76 + "google.protobuf" 77 + "google.protobuf.internal._api_implementation" # Verify that --cpp_implementation worked 78 + ]; 79 + 80 + passthru = { 81 + inherit protobuf; 82 + }; 83 + 84 + meta = with lib; { 85 + description = "Protocol Buffers are Google's data interchange format"; 86 + homepage = "https://developers.google.com/protocol-buffers/"; 87 + license = licenses.bsd3; 88 + maintainers = with maintainers; [ knedlsepp ]; 89 + }; 90 + }
+1 -1
pkgs/top-level/python-packages.nix
··· 9491 9491 }; 9492 9492 9493 9493 # Protobuf 3.x 9494 - protobuf3 = callPackage ../development/python-modules/protobuf { 9494 + protobuf3 = callPackage ../development/python-modules/protobuf/3.nix { 9495 9495 protobuf = pkgs.protobuf3_20; 9496 9496 }; 9497 9497