Unverified Commit b46c6103 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

pythonPackages.rds2py: init at 0.7.3 (#442058)

parents 323765fa 76a34acd
Loading
Loading
Loading
Loading
+123 −0
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  stdenv,
  fetchFromGitHub,
  cmake,
  zlib,
  pybind11,
  pytestCheckHook,
  pytest-cov-stub,
  pkg-config,
  setuptools,
  setuptools-scm,
  biocutils,
  biocframe,
  pandas,
  scipy,
}:

buildPythonPackage rec {
  pname = "rds2py";
  version = "0.7.3";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "BiocPy";
    repo = "rds2py";
    tag = version;
    hash = "sha256-GbRpkt+K2HXuAT7KtI4h1SnZ4RtSo5hrea2L92VZj/o=";
  };

  rds2cpp-src = fetchFromGitHub {
    owner = "LTLA";
    repo = "rds2cpp";
    rev = "v1.1.0";
    hash = "sha256-q7C/oORmhgXlqnZnslhyrxBc3RRF2gdgGuQU4TimxtI=";
  };

  byteme-src = fetchFromGitHub {
    owner = "LTLA";
    repo = "byteme";
    rev = "v1.2.2";
    hash = "sha256-rM/pSMGlaMWE69lYORaa8SQYGQyzhdyQnXImmAesxFA=";
  };

  # Upstream uses CMake's FetchContent to download rds2cpp and byteme into
  # build/_deps at configure time. We pre-fetch both repos and copy them
  # into build/_deps manually. This way the build tree matches what upstream expects.
  prePatch = ''
    mkdir -p build/_deps
    cp -r ${rds2cpp-src} build/_deps/rds2cpp-src
    cp -r ${byteme-src} build/_deps/byteme-src
    chmod -R u+w build/_deps
  '';

  # Patch upstream CMakeLists.txt files to use our vendored sources instead of
  # calling FetchContent. We point add_subdirectory() to the copies staged in
  # build/_deps above. We also patch rds2cpp's own extern/CMakeLists.txt to
  # disable its nested FetchContent call for byteme, since we already provide it.
  postPatch = ''
    substituteInPlace lib/CMakeLists.txt \
      --replace-fail \
        "FetchContent_MakeAvailable(byteme)" \
        "add_subdirectory(\''${CMAKE_BINARY_DIR}/../_deps/byteme-src \''${CMAKE_CURRENT_BINARY_DIR}/byteme)" \
      --replace-fail \
        "FetchContent_MakeAvailable(rds2cpp)" \
        "add_subdirectory(\''${CMAKE_BINARY_DIR}/../_deps/rds2cpp-src \''${CMAKE_CURRENT_BINARY_DIR}/rds2cpp)"

    substituteInPlace build/_deps/rds2cpp-src/extern/CMakeLists.txt \
      --replace-fail "FetchContent_MakeAvailable(byteme)" "# FetchContent_MakeAvailable(byteme) -- Patched by Nix"
  '';

  # We use the MORE_CMAKE_OPTIONS environment variable, which is a hook provided
  # by the upstream setup.py, to pass our zlib flags to the CMake configure step.
  preConfigure = ''
    export MORE_CMAKE_OPTIONS="-DZLIB_INCLUDE_DIR=${lib.getDev zlib}/include -DZLIB_LIBRARY=${lib.getLib zlib}/lib/libz.so"
  '';

  nativeBuildInputs = [
    cmake
    pkg-config
    pybind11
    zlib
  ];

  build-system = [
    setuptools
    setuptools-scm
  ];

  dependencies = [
    biocutils
  ];

  nativeCheckInputs = [
    pytest-cov-stub
    pytestCheckHook
    biocframe
    pandas
    scipy
  ];

  disabledTestPaths = [
    # Requires packages not in Nixpkgs
    "tests/test_delayedmatrices.py"
    "tests/test_granges.py"
    "tests/test_mae.py"
    "tests/test_sce.py"
    "tests/test_se.py"
  ];

  # setuptools drives the build, so disable cmake configure hook
  dontUseCmakeConfigure = true;

  pythonImportsCheck = [ "rds2py" ];

  meta = {
    description = "Read RDS files, in Python";
    homepage = "https://github.com/BiocPy/rds2py";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ b-rodrigues ];
  };
}
+2 −0
Original line number Diff line number Diff line
@@ -15710,6 +15710,8 @@ self: super: with self; {
    };
  };
  rds2py = callPackage ../development/python-modules/rds2py { };
  re-assert = callPackage ../development/python-modules/re-assert { };
  reactionmenu = callPackage ../development/python-modules/reactionmenu { };