Unverified Commit d13d0407 authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

Merge pull request #316830 from Cryolitia/maa-darwin

{maa-assistant-arknights, maa-cli}: support darwin
parents afa84d8a 88c495fd
Loading
Loading
Loading
Loading
+43 −34
Original line number Diff line number Diff line
{ stdenv
, config
, pkgs
, lib
, fetchFromGitHub
, cmake
, eigen
, onnxruntime
, opencv
, cudaSupport ? config.cudaSupport
, cudaPackages ? { }
{
  stdenv,
  config,
  pkgs,
  lib,
  fetchFromGitHub,
  cmake,
  eigen,
  onnxruntime,
  opencv,
  cudaSupport ? config.cudaSupport,
  cudaPackages ? { },
}@inputs:

let
@@ -30,19 +31,24 @@ effectiveStdenv.mkDerivation (finalAttrs: {
    hash = "sha256-5TItnPDc5WShpZAgBYeqgI9KKkk3qw/M8HPMlq/H4BM=";
  };

  outputs = [ "out" "cmake" ];
  outputs = [
    "out"
    "cmake"
  ];

  nativeBuildInputs = [
    cmake
    eigen
  ] ++ lib.optionals cudaSupport [
    cudaPackages.cuda_nvcc
  ];
  ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ];

  buildInputs = [
  buildInputs =
    [
      onnxruntime
      opencv
  ] ++ lib.optionals cudaSupport (with cudaPackages; [
    ]
    ++ lib.optionals cudaSupport (
      with cudaPackages;
      [
        cuda_cccl # cub/cub.cuh
        libcublas # cublas_v2.h
        libcurand # curand.h
@@ -50,12 +56,15 @@ effectiveStdenv.mkDerivation (finalAttrs: {
        libcufft # cufft.h
        cudnn # cudnn.h
        cuda_cudart
  ]);
      ]
    );

  cmakeFlags = [
  cmakeFlags =
    [
      (lib.cmakeFeature "CMAKE_BUILD_TYPE" "None")
      (lib.cmakeBool "BUILD_SHARED_LIBS" true)
  ] ++ lib.optionals cudaSupport [
    ]
    ++ lib.optionals cudaSupport [
      (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cudaArchitecturesString)
    ];

@@ -67,7 +76,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
  meta = with lib; {
    description = "MaaAssistantArknights stripped-down version of FastDeploy";
    homepage = "https://github.com/MaaAssistantArknights/FastDeploy";
    platforms = platforms.linux;
    platforms = platforms.linux ++ platforms.darwin;
    license = licenses.asl20;
    broken = cudaSupport && stdenv.hostPlatform.system != "x86_64-linux";
  };
+42 −33
Original line number Diff line number Diff line
{ lib
, config
, callPackage
, stdenv
, fetchFromGitHub
, asio
, cmake
, eigen
, libcpr
, onnxruntime
, opencv
, isBeta ? false
, cudaSupport ? config.cudaSupport
, cudaPackages ? { }
{
  lib,
  config,
  callPackage,
  stdenv,
  overrideSDK,
  fetchFromGitHub,
  asio,
  cmake,
  libcpr,
  onnxruntime,
  opencv,
  isBeta ? false,
  cudaSupport ? config.cudaSupport,
  cudaPackages ? { },
}:

let
  fastdeploy = callPackage ./fastdeploy-ppocr.nix { };
  sources = lib.importJSON ./pin.json;
in
stdenv.mkDerivation (finalAttr: {
# https://github.com/NixOS/nixpkgs/issues/314160
(if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv).mkDerivation (finalAttr: {
  pname = "maa-assistant-arknights" + lib.optionalString isBeta "-beta";
  version = if isBeta then sources.beta.version else sources.stable.version;

@@ -33,16 +35,18 @@ stdenv.mkDerivation (finalAttr: {
    asio
    cmake
    fastdeploy.cmake
  ] ++ lib.optionals cudaSupport [
    cudaPackages.cuda_nvcc
  ];
  ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ];

  buildInputs = [
  buildInputs =
    [
      fastdeploy
      libcpr
      onnxruntime
      opencv
  ] ++ lib.optionals cudaSupport (with cudaPackages; [
    ]
    ++ lib.optionals cudaSupport (
      with cudaPackages;
      [
        cuda_cccl # cub/cub.cuh
        libcublas # cublas_v2.h
        libcurand # curand.h
@@ -50,7 +54,8 @@ stdenv.mkDerivation (finalAttr: {
        libcufft # cufft.h
        cudnn # cudnn.h
        cuda_cudart
  ]);
      ]
    );

  cmakeFlags = [
    (lib.cmakeBool "BUILD_SHARED_LIBS" true)
@@ -64,6 +69,10 @@ stdenv.mkDerivation (finalAttr: {

  passthru.updateScript = ./update.sh;

  postPatch = ''
    cp -v ${fastdeploy.cmake}/Findonnxruntime.cmake cmake/
  '';

  postInstall = ''
    mkdir -p $out/share/${finalAttr.pname}
    mv $out/{Python,resource} $out/share/${finalAttr.pname}
@@ -74,6 +83,6 @@ stdenv.mkDerivation (finalAttr: {
    homepage = "https://github.com/MaaAssistantArknights/MaaAssistantArknights";
    license = licenses.agpl3Only;
    maintainers = with maintainers; [ Cryolitia ];
    platforms = platforms.linux;
    platforms = platforms.linux ++ platforms.darwin;
  };
})
+33 −19
Original line number Diff line number Diff line
{ lib
, stdenv
, rustPlatform
, fetchFromGitHub
, installShellFiles
, makeWrapper
, pkg-config
, openssl
, maa-assistant-arknights
, android-tools
, git
{
  lib,
  stdenv,
  rustPlatform,
  fetchFromGitHub,
  installShellFiles,
  makeWrapper,
  pkg-config,
  openssl,
  darwin,
  maa-assistant-arknights,
  android-tools,
  git,
}:

rustPlatform.buildRustPackage rec {
@@ -28,13 +30,22 @@ rustPlatform.buildRustPackage rec {
    pkg-config
  ];

  buildInputs = [
    openssl
  ];
  buildInputs =
    [ openssl ]
    ++ lib.optionals stdenv.isDarwin (
      with darwin.apple_sdk.frameworks;
      [
        Security
        SystemConfiguration
      ]
    );

  # https://github.com/MaaAssistantArknights/maa-cli/pull/126
  buildNoDefaultFeatures = true;
  buildFeatures = [ "git2" "core_installer" ];
  buildFeatures = [
    "git2"
    "core_installer"
  ];

  cargoHash = "sha256-iy9myT3bVW1TXCZx3ddiiDoDXx5BWqeQnSsJ97bc4IA=";

@@ -47,9 +58,12 @@ rustPlatform.buildRustPackage rec {
    mv $out/bin/maa $out/share/maa-assistant-arknights/

    makeWrapper $out/share/maa-assistant-arknights/maa $out/bin/maa \
      --prefix PATH : "${lib.makeBinPath [
        android-tools git
      ]}"
      --prefix PATH : "${
        lib.makeBinPath [
          android-tools
          git
        ]
      }"

    installShellCompletion --cmd maa \
      --bash <($out/bin/maa complete bash) \
@@ -65,7 +79,7 @@ rustPlatform.buildRustPackage rec {
    description = "A simple CLI for MAA by Rust";
    homepage = "https://github.com/MaaAssistantArknights/maa-cli";
    license = licenses.agpl3Only;
    platforms = platforms.linux;
    platforms = platforms.linux ++ platforms.darwin;
    maintainers = with maintainers; [ Cryolitia ];
    mainProgram = "maa";
  };