python313Packages.kivy: fix build (#372247)
[NixPkgs.git] / pkgs / by-name / li / libimagequant / package.nix
blobf4e3512bdb768b1bfac541c1d083d798ce299c8b
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , rust
5 , rustPlatform
6 , cargo-c
7 , python3
9 # tests
10 , testers
11 , vips
12 , libimagequant
15 rustPlatform.buildRustPackage rec {
16   pname = "libimagequant";
17   version = "4.3.1";
19   src = fetchFromGitHub {
20     owner = "ImageOptim";
21     repo = "libimagequant";
22     rev = version;
23     hash = "sha256-dau+oGwcyN7AA1jEBtCgYV/cmrx5Wo3koKXbloYagrw=";
24   };
26   cargoLock = {
27     # created it by running `cargo update` in the source tree.
28     lockFile = ./Cargo.lock;
29   };
31   postPatch = ''
32     ln -s ${./Cargo.lock} Cargo.lock
33   '';
35   nativeBuildInputs = [ cargo-c ];
37   postBuild = ''
38     pushd imagequant-sys
39     ${rust.envVars.setEnv} cargo cbuild --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
40     popd
41   '';
43   postInstall = ''
44     pushd imagequant-sys
45     ${rust.envVars.setEnv} cargo cinstall --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget}
46     popd
47   '';
49   passthru.tests = {
50     inherit vips;
51     inherit (python3.pkgs) pillow;
53     pkg-config = testers.hasPkgConfigModules {
54       package = libimagequant;
55       moduleNames = [ "imagequant" ];
56     };
57   };
59   meta = with lib; {
60     homepage = "https://pngquant.org/lib/";
61     description = "Image quantization library";
62     longDescription = "Small, portable C library for high-quality conversion of RGBA images to 8-bit indexed-color (palette) images.";
63     license = licenses.gpl3Plus;
64     platforms = platforms.unix;
65     maintainers = with maintainers; [ ma9e ];
66   };