1{ lib
2, rustPlatform
3, fetchCrate
4, cargo-c
5, rust
6, stdenv
7}:
8
9rustPlatform.buildRustPackage rec {
10 pname = "libdovi";
11 version = "3.3.0";
12
13 src = fetchCrate {
14 pname = "dolby_vision";
15 inherit version;
16 hash = "sha256-224fX+9klmWVoakU+XM7HrGa4iP4xsBJtn+686cH0qc=";
17 };
18
19 cargoLock.lockFile = ./Cargo.lock;
20
21 postPatch = ''
22 ln -s ${./Cargo.lock} Cargo.lock
23 '';
24
25 nativeBuildInputs = [ cargo-c ];
26
27 buildPhase = ''
28 runHook preBuild
29 ${rust.envVars.setEnv} cargo cbuild -j $NIX_BUILD_CORES --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
30 runHook postBuild
31 '';
32
33 installPhase = ''
34 runHook preInstall
35 ${rust.envVars.setEnv} cargo cinstall -j $NIX_BUILD_CORES --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
36 runHook postInstall
37 '';
38
39 checkPhase = ''
40 runHook preCheck
41 ${rust.envVars.setEnv} cargo ctest -j $NIX_BUILD_CORES --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
42 runHook postCheck
43 '';
44
45 meta = with lib; {
46 description = "C library for Dolby Vision metadata parsing and writing";
47 homepage = "https://crates.io/crates/dolby_vision";
48 license = licenses.mit;
49 maintainers = with maintainers; [ kranzes ];
50 };
51}