diff --git a/pkgs/tools/graphics/pngquant/add-Cargo.lock.patch b/pkgs/tools/graphics/pngquant/add-Cargo.lock.patch new file mode 100644 index 0000000000000..9098198724bb5 --- /dev/null +++ b/pkgs/tools/graphics/pngquant/add-Cargo.lock.patch @@ -0,0 +1,428 @@ +diff --git a/Cargo.lock b/Cargo.lock +new file mode 100644 +index 0000000..319b40b +--- /dev/null ++++ b/Cargo.lock +@@ -0,0 +1,422 @@ ++# This file is automatically @generated by Cargo. ++# It is not intended for manual editing. ++version = 3 ++ ++[[package]] ++name = "arrayvec" ++version = "0.7.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" ++ ++[[package]] ++name = "autocfg" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" ++ ++[[package]] ++name = "bitflags" ++version = "1.3.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" ++ ++[[package]] ++name = "bitflags" ++version = "2.4.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" ++ ++[[package]] ++name = "bytemuck" ++version = "1.14.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" ++ ++[[package]] ++name = "cc" ++version = "1.0.83" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" ++dependencies = [ ++ "jobserver", ++ "libc", ++] ++ ++[[package]] ++name = "cfg-if" ++version = "1.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" ++ ++[[package]] ++name = "cocoa_image" ++version = "1.0.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ea3dcd9c6980e6b9152a61476163a7039bdd73b4508f699b4b3b102d53490839" ++dependencies = [ ++ "core-foundation", ++ "core-graphics", ++ "imgref", ++ "objc", ++ "rgb", ++] ++ ++[[package]] ++name = "core-foundation" ++version = "0.9.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" ++dependencies = [ ++ "core-foundation-sys", ++ "libc", ++] ++ ++[[package]] ++name = "core-foundation-sys" ++version = "0.8.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" ++ ++[[package]] ++name = "core-graphics" ++version = "0.23.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" ++dependencies = [ ++ "bitflags 1.3.2", ++ "core-foundation", ++ "core-graphics-types", ++ "foreign-types", ++ "libc", ++] ++ ++[[package]] ++name = "core-graphics-types" ++version = "0.1.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" ++dependencies = [ ++ "bitflags 1.3.2", ++ "core-foundation", ++ "libc", ++] ++ ++[[package]] ++name = "crossbeam-deque" ++version = "0.8.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" ++dependencies = [ ++ "cfg-if", ++ "crossbeam-epoch", ++ "crossbeam-utils", ++] ++ ++[[package]] ++name = "crossbeam-epoch" ++version = "0.9.15" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" ++dependencies = [ ++ "autocfg", ++ "cfg-if", ++ "crossbeam-utils", ++ "memoffset", ++ "scopeguard", ++] ++ ++[[package]] ++name = "crossbeam-utils" ++version = "0.8.16" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" ++dependencies = [ ++ "cfg-if", ++] ++ ++[[package]] ++name = "dunce" ++version = "1.0.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" ++ ++[[package]] ++name = "either" ++version = "1.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" ++ ++[[package]] ++name = "foreign-types" ++version = "0.5.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" ++dependencies = [ ++ "foreign-types-macros", ++ "foreign-types-shared", ++] ++ ++[[package]] ++name = "foreign-types-macros" ++version = "0.2.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ ++[[package]] ++name = "foreign-types-shared" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" ++ ++[[package]] ++name = "getopts" ++version = "0.2.21" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" ++dependencies = [ ++ "unicode-width", ++] ++ ++[[package]] ++name = "glob" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" ++ ++[[package]] ++name = "imagequant" ++version = "4.2.2" ++dependencies = [ ++ "arrayvec", ++ "once_cell", ++ "rayon", ++ "rgb", ++ "thread_local", ++] ++ ++[[package]] ++name = "imagequant-sys" ++version = "4.0.3" ++dependencies = [ ++ "bitflags 2.4.1", ++ "imagequant", ++ "libc", ++] ++ ++[[package]] ++name = "imgref" ++version = "1.10.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "90d944e334f00f4449c9640b440a171f816be0152305c12ef90424fc35fd035c" ++ ++[[package]] ++name = "jobserver" ++version = "0.1.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "lcms2-sys" ++version = "4.0.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "137dae56197ab9e66729ff73e2942e26f16f9ddcd14a53295c35f53dcd067b58" ++dependencies = [ ++ "cc", ++ "dunce", ++ "libc", ++ "pkg-config", ++] ++ ++[[package]] ++name = "libc" ++version = "0.2.150" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" ++ ++[[package]] ++name = "libpng-sys" ++version = "1.1.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b531eb8c558e697d1fc6a642b260426aa85ba4d054a8f0db66f5866918332674" ++dependencies = [ ++ "cc", ++ "dunce", ++ "libc", ++ "libz-sys", ++ "pkg-config", ++] ++ ++[[package]] ++name = "libz-sys" ++version = "1.1.12" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" ++dependencies = [ ++ "cc", ++ "libc", ++ "pkg-config", ++ "vcpkg", ++] ++ ++[[package]] ++name = "malloc_buf" ++version = "0.0.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "memoffset" ++version = "0.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" ++dependencies = [ ++ "autocfg", ++] ++ ++[[package]] ++name = "objc" ++version = "0.2.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" ++dependencies = [ ++ "malloc_buf", ++] ++ ++[[package]] ++name = "once_cell" ++version = "1.18.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" ++ ++[[package]] ++name = "pkg-config" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" ++ ++[[package]] ++name = "pngquant" ++version = "3.0.3" ++dependencies = [ ++ "cc", ++ "cocoa_image", ++ "dunce", ++ "getopts", ++ "imagequant-sys", ++ "lcms2-sys", ++ "libc", ++ "libpng-sys", ++ "wild", ++] ++ ++[[package]] ++name = "proc-macro2" ++version = "1.0.69" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" ++dependencies = [ ++ "unicode-ident", ++] ++ ++[[package]] ++name = "quote" ++version = "1.0.33" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" ++dependencies = [ ++ "proc-macro2", ++] ++ ++[[package]] ++name = "rayon" ++version = "1.8.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" ++dependencies = [ ++ "either", ++ "rayon-core", ++] ++ ++[[package]] ++name = "rayon-core" ++version = "1.12.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" ++dependencies = [ ++ "crossbeam-deque", ++ "crossbeam-utils", ++] ++ ++[[package]] ++name = "rgb" ++version = "0.8.37" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" ++dependencies = [ ++ "bytemuck", ++] ++ ++[[package]] ++name = "scopeguard" ++version = "1.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" ++ ++[[package]] ++name = "syn" ++version = "2.0.39" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "unicode-ident", ++] ++ ++[[package]] ++name = "thread_local" ++version = "1.1.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" ++dependencies = [ ++ "cfg-if", ++ "once_cell", ++] ++ ++[[package]] ++name = "unicode-ident" ++version = "1.0.12" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" ++ ++[[package]] ++name = "unicode-width" ++version = "0.1.11" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" ++ ++[[package]] ++name = "vcpkg" ++version = "0.2.15" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" ++ ++[[package]] ++name = "wild" ++version = "2.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "10d01931a94d5a115a53f95292f51d316856b68a035618eb831bbba593a30b67" ++dependencies = [ ++ "glob", ++] diff --git a/pkgs/tools/graphics/pngquant/default.nix b/pkgs/tools/graphics/pngquant/default.nix index 73fa81ad6025d..cdfcb4093548c 100644 --- a/pkgs/tools/graphics/pngquant/default.nix +++ b/pkgs/tools/graphics/pngquant/default.nix @@ -1,25 +1,33 @@ -{ lib, stdenv, fetchFromGitHub, pkg-config, libpng, zlib, lcms2 }: +{ lib, rustPlatform, fetchFromGitHub, pkg-config, libpng, zlib, lcms2 }: -stdenv.mkDerivation rec { +rustPlatform.buildRustPackage rec { pname = "pngquant"; - version = "2.17.0"; + version = "3.0.3"; + + outputs = [ "out" "man" ]; src = fetchFromGitHub { owner = "kornelski"; repo = "pngquant"; rev = version; - sha256 = "sha256-D2KNn6AJ4eIHeb/2Oo1Wf0djMCXTtVGrua0D6z7+9V4="; + hash = "sha256-u2zEp9Llo+c/+1QGW4V4r40KQn/ATHCTEsrpy7bRf/I="; fetchSubmodules = true; }; - preConfigure = "patchShebangs ."; - - configureFlags = lib.optionals (!stdenv.hostPlatform.isx86) [ "--disable-sse" ]; + cargoHash = "sha256-mZpg6BRpsvEiMsS6ZJzVYg6wXHLb3Cf72sK1yzTF8y4="; + cargoPatches = [ + # https://github.com/kornelski/pngquant/issues/347 + ./add-Cargo.lock.patch + ]; nativeBuildInputs = [ pkg-config ]; buildInputs = [ libpng zlib lcms2 ]; - doCheck = true; + doCheck = false; # Has no Rust-based tests + + postInstall = '' + install -Dpm0444 pngquant.1 $man/share/man/man1/pngquant.1 + ''; meta = with lib; { homepage = "https://pngquant.org/";