python313Packages.mlx: 0.21.1 -> 0.26.3 (#410209)
This commit is contained in:
		
						commit
						422d591b73
					
				@ -4108,6 +4108,12 @@
 | 
			
		||||
    name = "Cameron Smith";
 | 
			
		||||
    keys = [ { fingerprint = "3F14 C258 856E 88AE E0F9  661E FF04 3B36 8811 DD1C"; } ];
 | 
			
		||||
  };
 | 
			
		||||
  cameronyule = {
 | 
			
		||||
    email = "cameron@cameronyule.com";
 | 
			
		||||
    github = "cameronyule";
 | 
			
		||||
    githubId = 5451;
 | 
			
		||||
    name = "Cameron Yule";
 | 
			
		||||
  };
 | 
			
		||||
  camillemndn = {
 | 
			
		||||
    email = "camillemondon@free.fr";
 | 
			
		||||
    github = "camillemndn";
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								pkgs/development/python-modules/mlx/darwin-build-fixes.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								pkgs/development/python-modules/mlx/darwin-build-fixes.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
 | 
			
		||||
index ab8aea44..9e1b06f4 100644
 | 
			
		||||
--- a/CMakeLists.txt
 | 
			
		||||
+++ b/CMakeLists.txt
 | 
			
		||||
@@ -100,9 +100,7 @@ elseif(MLX_BUILD_METAL)
 | 
			
		||||
   endif()
 | 
			
		||||
 
 | 
			
		||||
   # Throw an error if xcrun not found
 | 
			
		||||
-  execute_process(
 | 
			
		||||
-    COMMAND zsh "-c" "/usr/bin/xcrun -sdk macosx --show-sdk-version"
 | 
			
		||||
-    OUTPUT_VARIABLE MACOS_SDK_VERSION COMMAND_ERROR_IS_FATAL ANY)
 | 
			
		||||
+  set(MACOS_SDK_VERSION @sdkVersion@)
 | 
			
		||||
 
 | 
			
		||||
   if(${MACOS_SDK_VERSION} LESS 14.0)
 | 
			
		||||
     message(
 | 
			
		||||
@ -1,14 +1,28 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  fetchFromGitHub,
 | 
			
		||||
  buildPythonPackage,
 | 
			
		||||
  pybind11,
 | 
			
		||||
  cmake,
 | 
			
		||||
  xcbuild,
 | 
			
		||||
  zsh,
 | 
			
		||||
  blas,
 | 
			
		||||
  lapack,
 | 
			
		||||
  fetchFromGitHub,
 | 
			
		||||
  lib,
 | 
			
		||||
  replaceVars,
 | 
			
		||||
  stdenv,
 | 
			
		||||
 | 
			
		||||
  # build-system
 | 
			
		||||
  setuptools,
 | 
			
		||||
 | 
			
		||||
  # nativeBuildInputs
 | 
			
		||||
  cmake,
 | 
			
		||||
 | 
			
		||||
  # buildInputs
 | 
			
		||||
  apple-sdk_14,
 | 
			
		||||
  fmt_10,
 | 
			
		||||
  nanobind,
 | 
			
		||||
  nlohmann_json,
 | 
			
		||||
  pybind11,
 | 
			
		||||
 | 
			
		||||
  # tests
 | 
			
		||||
  numpy,
 | 
			
		||||
  pytestCheckHook,
 | 
			
		||||
  python,
 | 
			
		||||
  runCommand,
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
@ -16,79 +30,125 @@ let
 | 
			
		||||
  gguf-tools = fetchFromGitHub {
 | 
			
		||||
    owner = "antirez";
 | 
			
		||||
    repo = "gguf-tools";
 | 
			
		||||
    rev = "af7d88d808a7608a33723fba067036202910acb3";
 | 
			
		||||
    hash = "sha256-LqNvnUbmq0iziD9VP5OTJCSIy+y/hp5lKCUV7RtKTvM=";
 | 
			
		||||
    rev = "8fa6eb65236618e28fd7710a0fba565f7faa1848";
 | 
			
		||||
    hash = "sha256-15FvyPOFqTOr5vdWQoPnZz+mYH919++EtghjozDlnSA=";
 | 
			
		||||
  };
 | 
			
		||||
  nlohmann_json = fetchFromGitHub {
 | 
			
		||||
    owner = "nlohmann";
 | 
			
		||||
    repo = "json";
 | 
			
		||||
    rev = "v3.11.3";
 | 
			
		||||
    hash = "sha256-7F0Jon+1oWL7uqet5i1IgHX0fUw/+z0QwEcA3zs5xHg=";
 | 
			
		||||
 | 
			
		||||
  mlx = buildPythonPackage rec {
 | 
			
		||||
    pname = "mlx";
 | 
			
		||||
    version = "0.26.3";
 | 
			
		||||
    pyproject = true;
 | 
			
		||||
 | 
			
		||||
    src = fetchFromGitHub {
 | 
			
		||||
      owner = "ml-explore";
 | 
			
		||||
      repo = "mlx";
 | 
			
		||||
      tag = "v${version}";
 | 
			
		||||
      hash = "sha256-hbqV/2KYGJ1gyExZd5bgaxTdhl5+Gext+U/+1KAztMU=";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    patches = [
 | 
			
		||||
      (replaceVars ./darwin-build-fixes.patch {
 | 
			
		||||
        sdkVersion = apple-sdk_14.version;
 | 
			
		||||
      })
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    postPatch = ''
 | 
			
		||||
      substituteInPlace pyproject.toml \
 | 
			
		||||
        --replace-fail "nanobind==2.4.0" "nanobind>=2.4.0"
 | 
			
		||||
 | 
			
		||||
      substituteInPlace mlx/backend/cpu/jit_compiler.cpp \
 | 
			
		||||
        --replace-fail "g++" "$CXX"
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    dontUseCmakeConfigure = true;
 | 
			
		||||
 | 
			
		||||
    enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
    # Allows multiple cores to be used in Python builds.
 | 
			
		||||
    postUnpack = ''
 | 
			
		||||
      export MAKEFLAGS+="''${enableParallelBuilding:+-j$NIX_BUILD_CORES}"
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    # updates the wrong fetcher rev attribute
 | 
			
		||||
    passthru.skipBulkUpdate = true;
 | 
			
		||||
 | 
			
		||||
    env = {
 | 
			
		||||
      PYPI_RELEASE = version;
 | 
			
		||||
      CMAKE_ARGS = toString [
 | 
			
		||||
        # NOTE The `metal` command-line utility used to build the Metal kernels is not open-source.
 | 
			
		||||
        # To build mlx with Metal support in Nix, you'd need to use one of the sandbox escape
 | 
			
		||||
        # hatches which let you interact with a native install of Xcode, such as `composeXcodeWrapper`
 | 
			
		||||
        # or by changing the upstream (e.g., https://github.com/zed-industries/zed/discussions/7016).
 | 
			
		||||
        (lib.cmakeBool "MLX_BUILD_METAL" false)
 | 
			
		||||
        (lib.cmakeOptionType "filepath" "FETCHCONTENT_SOURCE_DIR_GGUFLIB" "${gguf-tools}")
 | 
			
		||||
        (lib.cmakeOptionType "filepath" "FETCHCONTENT_SOURCE_DIR_JSON" "${nlohmann_json.src}")
 | 
			
		||||
        (lib.cmakeOptionType "filepath" "FETCHCONTENT_SOURCE_DIR_FMT" "${fmt_10.src}")
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    build-system = [
 | 
			
		||||
      setuptools
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    nativeBuildInputs = [
 | 
			
		||||
      cmake
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    buildInputs = [
 | 
			
		||||
      apple-sdk_14
 | 
			
		||||
      fmt_10
 | 
			
		||||
      gguf-tools
 | 
			
		||||
      nanobind
 | 
			
		||||
      nlohmann_json
 | 
			
		||||
      pybind11
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    pythonImportsCheck = [ "mlx" ];
 | 
			
		||||
 | 
			
		||||
    # Run the mlx Python test suite.
 | 
			
		||||
    nativeCheckInputs = [
 | 
			
		||||
      numpy
 | 
			
		||||
      pytestCheckHook
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    pytestFlagsArray = [
 | 
			
		||||
      "python/tests/"
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    # Additional testing by executing the example Python scripts supplied with mlx
 | 
			
		||||
    # using the version of the library we've built.
 | 
			
		||||
    passthru.tests = {
 | 
			
		||||
      mlxTest =
 | 
			
		||||
        runCommand "run-mlx-examples"
 | 
			
		||||
          {
 | 
			
		||||
            buildInputs = [ mlx ];
 | 
			
		||||
            nativeBuildInputs = [ python ];
 | 
			
		||||
          }
 | 
			
		||||
          ''
 | 
			
		||||
            cp ${src}/examples/python/logistic_regression.py .
 | 
			
		||||
            ${python.interpreter} logistic_regression.py
 | 
			
		||||
            rm logistic_regression.py
 | 
			
		||||
 | 
			
		||||
            cp ${src}/examples/python/linear_regression.py .
 | 
			
		||||
            ${python.interpreter} linear_regression.py
 | 
			
		||||
            rm linear_regression.py
 | 
			
		||||
 | 
			
		||||
            touch $out
 | 
			
		||||
          '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    meta = {
 | 
			
		||||
      homepage = "https://github.com/ml-explore/mlx";
 | 
			
		||||
      description = "Array framework for Apple silicon";
 | 
			
		||||
      changelog = "https://github.com/ml-explore/mlx/releases/tag/${src.tag}";
 | 
			
		||||
      license = lib.licenses.mit;
 | 
			
		||||
      platforms = [ "aarch64-darwin" ];
 | 
			
		||||
      maintainers = with lib.maintainers; [
 | 
			
		||||
        viraptor
 | 
			
		||||
        Gabriella439
 | 
			
		||||
        cameronyule
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
buildPythonPackage rec {
 | 
			
		||||
  pname = "mlx";
 | 
			
		||||
  version = "0.21.1";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "ml-explore";
 | 
			
		||||
    repo = "mlx";
 | 
			
		||||
    rev = "refs/tags/v${version}";
 | 
			
		||||
    hash = "sha256-wxv9bA9e8VyFv/FMh63sUTTNgkXHGQJNQhLuVynczZA=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  pyproject = true;
 | 
			
		||||
 | 
			
		||||
  patches = [
 | 
			
		||||
    # With Darwin SDK 11 we cannot include vecLib/cblas_new.h, this needs to wait for PR #229210
 | 
			
		||||
    # In the meantime, pretend Accelerate is not available and use blas/lapack instead.
 | 
			
		||||
    ./disable-accelerate.patch
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    substituteInPlace CMakeLists.txt \
 | 
			
		||||
      --replace "/usr/bin/xcrun" "${xcbuild}/bin/xcrun" \
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  dontUseCmakeConfigure = true;
 | 
			
		||||
 | 
			
		||||
  # updates the wrong fetcher rev attribute
 | 
			
		||||
  passthru.skipBulkUpdate = true;
 | 
			
		||||
 | 
			
		||||
  env = {
 | 
			
		||||
    PYPI_RELEASE = version;
 | 
			
		||||
    # we can't use Metal compilation with Darwin SDK 11
 | 
			
		||||
    CMAKE_ARGS = toString [
 | 
			
		||||
      (lib.cmakeBool "MLX_BUILD_METAL" false)
 | 
			
		||||
      (lib.cmakeOptionType "filepath" "FETCHCONTENT_SOURCE_DIR_GGUFLIB" "${gguf-tools}")
 | 
			
		||||
      (lib.cmakeOptionType "filepath" "FETCHCONTENT_SOURCE_DIR_JSON" "${nlohmann_json}")
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
    cmake
 | 
			
		||||
    pybind11
 | 
			
		||||
    xcbuild
 | 
			
		||||
    zsh
 | 
			
		||||
    gguf-tools
 | 
			
		||||
    nlohmann_json
 | 
			
		||||
    setuptools
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
    blas
 | 
			
		||||
    lapack
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  meta = with lib; {
 | 
			
		||||
    homepage = "https://github.com/ml-explore/mlx";
 | 
			
		||||
    description = "Array framework for Apple silicon";
 | 
			
		||||
    changelog = "https://github.com/ml-explore/mlx/releases/tag/v${version}";
 | 
			
		||||
    license = licenses.mit;
 | 
			
		||||
    platforms = [ "aarch64-darwin" ];
 | 
			
		||||
    maintainers = with maintainers; [
 | 
			
		||||
      viraptor
 | 
			
		||||
      Gabriella439
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
mlx
 | 
			
		||||
 | 
			
		||||
@ -1,13 +0,0 @@
 | 
			
		||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
 | 
			
		||||
index 2d6bef9..d099673 100644
 | 
			
		||||
--- a/CMakeLists.txt
 | 
			
		||||
+++ b/CMakeLists.txt
 | 
			
		||||
@@ -104,7 +104,7 @@ elseif (MLX_BUILD_METAL)
 | 
			
		||||
     ${QUARTZ_LIB})
 | 
			
		||||
 endif()
 | 
			
		||||
 
 | 
			
		||||
-find_library(ACCELERATE_LIBRARY Accelerate)
 | 
			
		||||
+#find_library(ACCELERATE_LIBRARY Accelerate)
 | 
			
		||||
 if (MLX_BUILD_ARM AND ACCELERATE_LIBRARY)
 | 
			
		||||
   message(STATUS "Accelerate found ${ACCELERATE_LIBRARY}")
 | 
			
		||||
   set(MLX_BUILD_ACCELERATE ON)
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user