4bac34ead1
GitOrigin-RevId: 724bfc0892363087709bd3a5a1666296759154b1
78 lines
1.9 KiB
Nix
78 lines
1.9 KiB
Nix
{ lib
|
|
, fetchPypi
|
|
, rustPlatform
|
|
, stdenv
|
|
, Security
|
|
, writeShellScriptBin
|
|
, buildPythonPackage
|
|
, setuptools-scm
|
|
, appdirs
|
|
, milksnake
|
|
, pyyaml
|
|
, hypothesis
|
|
, jinja2
|
|
, mock
|
|
, pytestCheckHook
|
|
}:
|
|
let
|
|
pname = "cmsis-pack-manager";
|
|
version = "0.4.0";
|
|
|
|
src = fetchPypi {
|
|
inherit pname version;
|
|
hash = "sha256-NeUG6PFI2eTwq5SNtAB6ZMA1M3z1JmMND29V9/O5sgw=";
|
|
};
|
|
|
|
native = rustPlatform.buildRustPackage {
|
|
name = "${pname}-${version}-native";
|
|
|
|
inherit src;
|
|
|
|
buildInputs = lib.optionals stdenv.isDarwin [
|
|
Security
|
|
];
|
|
|
|
sourceRoot = "${pname}-${version}/rust";
|
|
cargoLock.lockFile = ./Cargo.lock;
|
|
|
|
postPatch = ''
|
|
cp ${./Cargo.lock} Cargo.lock
|
|
'';
|
|
|
|
cargoBuildFlags = [ "--lib" ];
|
|
};
|
|
in
|
|
buildPythonPackage rec {
|
|
inherit pname version src;
|
|
|
|
# The cargo build is already run in a separate derivation
|
|
postPatch = ''
|
|
substituteInPlace setup.py \
|
|
--replace "'cargo', 'build'," "'true',"
|
|
'';
|
|
|
|
nativeBuildInputs = [ setuptools-scm ];
|
|
propagatedBuildInputs = [ appdirs milksnake pyyaml ];
|
|
|
|
nativeCheckInputs = [ hypothesis jinja2 mock pytestCheckHook ];
|
|
|
|
preBuild = ''
|
|
mkdir -p rust/target/release/deps
|
|
ln -s ${native}/lib/libcmsis_cffi${stdenv.hostPlatform.extensions.sharedLibrary} rust/target/release/deps/
|
|
'';
|
|
|
|
preCheck = ''
|
|
# Otherwise the test uses a dummy library (missing all symbols)
|
|
ln -sf ../build/lib/cmsis_pack_manager/_native__lib${stdenv.hostPlatform.extensions.sharedLibrary} cmsis_pack_manager/_native__lib${stdenv.hostPlatform.extensions.sharedLibrary}
|
|
'';
|
|
|
|
pythonImportsCheck = [ "cmsis_pack_manager" ];
|
|
|
|
meta = with lib; {
|
|
description = "A Rust and Python module for handling CMSIS Pack files";
|
|
homepage = "https://github.com/pyocd/cmsis-pack-manager";
|
|
license = licenses.asl20;
|
|
maintainers = with maintainers; [ frogamic sbruder ];
|
|
broken = stdenv.isDarwin;
|
|
};
|
|
}
|