Something went wrong. Try again.
Nix Packages collection & NixOS github.com/NixOS/nixpkgs
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899{ lib, buildPythonPackage, fetchFromGitHub,
# build-system py-build-cmake,
# dependencies jsonconversion,
# tests cbor2, docopt, pytestCheckHook, tabulate,}:
buildPythonPackage (finalAttrs: { pname = "amazon-ion"; version = "0.15.0"; pyproject = true; __structuredAttrs = true;
src = fetchFromGitHub { owner = "amazon-ion"; repo = "ion-python"; tag = "v${finalAttrs.version}"; # Test vectors require git submodule fetchSubmodules = true; leaveDotGit = true; # During ion-c submodule build git history/hash used to infer version postFetch = # Generated file should match output of command in src/ion-c/cmake/VersionHeader.cmake # Run Git before creating any files to avoid triggering false dirty suffix. '' (cd "$out/src/ion-c" && v="$(git describe --long --tags --dirty --match "v*")" && echo -n "$v" > .nixpkgs-patching-IONC_FULL_VERSION.txt) '' # Based on https://github.com/NixOS/nixpkgs/blob/183125f9/pkgs/build-support/fetchgit/nix-prefetch-git#L358 + '' find "$out" -name .git -exec rm -rf '{}' '+' ''; hash = "sha256-oAGFD3yKpym+qTehKDlXZAniCoxwIjPvl4QJby7vA6w="; };
patches = [ # Fix a double Py_DECREF in ionc_write_annotations when annotations aren't a list/tuple, # which corrupts the heap (crashes the test suite on darwin with Python 3.14) ./fix-annotations-double-decref.patch ];
postPatch = # Ion-C infers version based on Git. But there are issues with making .git folders deterministic. # See https://github.com/NixOS/nixpkgs/issues/8567 # Hence, we'll inject version ourselves '' substituteInPlace src/ion-c/CMakeLists.txt \ --replace-fail \ 'set(IONC_FULL_VERSION "v''${CMAKE_PROJECT_VERSION}-0-g000000")' \ "set(IONC_FULL_VERSION \"$(cat src/ion-c/.nixpkgs-patching-IONC_FULL_VERSION.txt)\")" '';
build-system = [ py-build-cmake ];
dependencies = [ jsonconversion ];
nativeCheckInputs = [ cbor2 docopt pytestCheckHook tabulate ];
disabledTestPaths = [ # Exclude benchmarks "tests/test_benchmark*.py" ];
pythonImportsCheck = [ "amazon.ion" "amazon._ioncmodule" # C extension module for speedup ];
meta = { description = "Python implementation of Amazon Ion"; homepage = "https://github.com/amazon-ion/ion-python"; changelog = "https://github.com/amazon-ion/ion-python/releases/tag/${finalAttrs.src.tag}"; sourceProvenance = with lib.sourceTypes; [ fromSource binaryNativeCode ]; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ terlar ]; };})