diff options
author | figsoda <figsoda@pm.me> | 2021-11-16 21:00:48 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-16 21:00:48 -0500 |
commit | 6ad04bcb7d3a198c63823e037138013503e089fd (patch) | |
tree | 21bc7ae1e598ae53e7758aaf0ec41156bdc749c3 /pkgs | |
parent | 141d3fc04ff684095d03675231ef6f102444f633 (diff) | |
parent | 0e9320dc5f2cf9914711ff44f1251a4c7bd0d30b (diff) | |
download | nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.tar nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.tar.gz nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.tar.bz2 nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.tar.lz nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.tar.xz nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.tar.zst nixpkgs-6ad04bcb7d3a198c63823e037138013503e089fd.zip |
Merge pull request #146243 from figsoda/treewide-rust-feature
treewide: use buildFeatures and checkFeatures for rust packages
Diffstat (limited to 'pkgs')
43 files changed, 118 insertions, 131 deletions
diff --git a/pkgs/applications/audio/librespot/default.nix b/pkgs/applications/audio/librespot/default.nix index 7b7d811f573..64d59516f87 100644 --- a/pkgs/applications/audio/librespot/default.nix +++ b/pkgs/applications/audio/librespot/default.nix @@ -15,24 +15,18 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "1sal85gsbnrabxi39298w9njdc08csnwl40akd6k9fsc0fmpn1b0"; - cargoBuildFlags = with lib; [ - "--no-default-features" - "--features" - (concatStringsSep "," (filter (x: x != "") [ - (optionalString withRodio "rodio-backend") - (optionalString withALSA "alsa-backend") - (optionalString withPulseAudio "pulseaudio-backend") - (optionalString withPortAudio "portaudio-backend") - - ])) - ]; - nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ] ++ lib.optional withALSA alsa-lib ++ lib.optional withPulseAudio libpulseaudio ++ lib.optional withPortAudio portaudio; + buildNoDefaultFeatures = true; + buildFeatures = lib.optional withRodio "rodio-backend" + ++ lib.optional withALSA "alsa-backend" + ++ lib.optional withPulseAudio "pulseaudio-backend" + ++ lib.optional withPortAudio "portaudio-backend"; + doCheck = false; meta = with lib; { diff --git a/pkgs/applications/audio/spotifyd/default.nix b/pkgs/applications/audio/spotifyd/default.nix index e9de6cb3cf7..dacf91e5622 100644 --- a/pkgs/applications/audio/spotifyd/default.nix +++ b/pkgs/applications/audio/spotifyd/default.nix @@ -20,12 +20,6 @@ rustPackages.rustPlatform.buildRustPackage rec { cargoSha256 = "07dxfc0csrnfl01p9vdrqvca9f574svlf37dk3dz8p6q08ki0n1z"; - cargoBuildFlags = [ - "--no-default-features" - "--features" - "${lib.optionalString withALSA "alsa_backend,"}${lib.optionalString withPulseAudio "pulseaudio_backend,"}${lib.optionalString withPortAudio "portaudio_backend,"}${lib.optionalString withMpris "dbus_mpris,"}${lib.optionalString withKeyring "dbus_keyring,"}" - ]; - nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ] @@ -34,6 +28,13 @@ rustPackages.rustPlatform.buildRustPackage rec { ++ lib.optional withPortAudio portaudio ++ lib.optional (withMpris || withKeyring) dbus; + buildNoDefaultFeatures = true; + buildFeatures = lib.optional withALSA "alsa_backend" + ++ lib.optional withPulseAudio "pulseaudio_backend" + ++ lib.optional withPortAudio "portaudio_backend" + ++ lib.optional withMpris "dbus_mpris" + ++ lib.optional withKeyring "dbus_keyring"; + doCheck = false; meta = with lib; { diff --git a/pkgs/applications/blockchains/alfis/default.nix b/pkgs/applications/blockchains/alfis/default.nix index 0738661c059..e1fd262eb77 100644 --- a/pkgs/applications/blockchains/alfis/default.nix +++ b/pkgs/applications/blockchains/alfis/default.nix @@ -14,12 +14,6 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "1n7kb1lyghpkgdgd58pw8ldvfps30rnv5niwx35pkdg74h59hqgj"; - cargoBuildFlags = [ "--no-default-features" ] - ++ lib.optional withGui "--features webgui"; - - cargoTestFlags = [ "--no-default-features" ] - ++ lib.optional withGui "--features webgui"; - checkFlags = [ # these want internet access, disable them "--skip=dns::client::tests::test_tcp_client" @@ -30,6 +24,9 @@ rustPlatform.buildRustPackage rec { buildInputs = lib.optional (withGui && stdenv.isLinux) webkitgtk ++ lib.optionals (withGui && stdenv.isDarwin) [ Cocoa WebKit ]; + buildNoDefaultFeatures = true; + buildFeatures = lib.optional withGui "webgui"; + postInstall = lib.optionalString (withGui && stdenv.isLinux) '' wrapProgram $out/bin/alfis \ --prefix PATH : ${lib.makeBinPath [ zenity ]} diff --git a/pkgs/applications/blockchains/openethereum/default.nix b/pkgs/applications/blockchains/openethereum/default.nix index 39f35f211f9..79ab37c7adb 100644 --- a/pkgs/applications/blockchains/openethereum/default.nix +++ b/pkgs/applications/blockchains/openethereum/default.nix @@ -29,7 +29,7 @@ rustPlatform.buildRustPackage rec { ++ lib.optionals stdenv.isLinux [ systemd ] ++ lib.optionals stdenv.isDarwin [ darwin.Security ]; - cargoBuildFlags = [ "--features final" ]; + buildFeatures = [ "final" ]; # Fix tests by preventing them from writing to /homeless-shelter. preCheck = '' diff --git a/pkgs/applications/graphics/menyoki/default.nix b/pkgs/applications/graphics/menyoki/default.nix index c454fc2ad61..77d1fd23072 100644 --- a/pkgs/applications/graphics/menyoki/default.nix +++ b/pkgs/applications/graphics/menyoki/default.nix @@ -27,7 +27,7 @@ rustPlatform.buildRustPackage rec { buildInputs = lib.optionals stdenv.isLinux [ libX11 libXrandr ]; - cargoBuildFlags = lib.optional (!withSki) "--no-default-features"; + buildNoDefaultFeatures = !withSki; postInstall = '' installManPage man/* diff --git a/pkgs/applications/misc/clipcat/default.nix b/pkgs/applications/misc/clipcat/default.nix index b28b33d56c9..38c0c103943 100644 --- a/pkgs/applications/misc/clipcat/default.nix +++ b/pkgs/applications/misc/clipcat/default.nix @@ -35,7 +35,7 @@ rustPlatform.buildRustPackage rec { ]; buildInputs = [ xorg.libxcb ]; - cargoBuildFlags = [ "--features=all" ]; + buildFeatures = [ "all" ]; postInstall = '' installShellCompletion --bash completions/bash-completion/completions/* diff --git a/pkgs/applications/misc/todiff/default.nix b/pkgs/applications/misc/todiff/default.nix index 752ab35461e..14f03cdc8ce 100644 --- a/pkgs/applications/misc/todiff/default.nix +++ b/pkgs/applications/misc/todiff/default.nix @@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "0vrn1vc3rwabv6l2r1qb7mkcxbp75q79bfl3rxhyi51ra3ij507r"; - checkPhase = "cargo test --features=integration_tests"; + checkFeatures = [ "integration_tests" ]; meta = with lib; { description = "Human-readable diff for todo.txt files"; diff --git a/pkgs/applications/networking/irc/tiny/default.nix b/pkgs/applications/networking/irc/tiny/default.nix index fde521c53d5..e102b1077a3 100644 --- a/pkgs/applications/networking/irc/tiny/default.nix +++ b/pkgs/applications/networking/irc/tiny/default.nix @@ -21,11 +21,11 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "05q3f1wp48mwkz8n0102rwb6jzrgpx3dlbxzf3zcw8r1mblgzim1"; - cargoBuildFlags = lib.optionals stdenv.isLinux [ "--features=desktop-notifications" ]; - nativeBuildInputs = lib.optional stdenv.isLinux pkg-config; buildInputs = lib.optionals stdenv.isLinux [ dbus openssl ] ++ lib.optional stdenv.isDarwin Foundation; + buildFeatures = lib.optional stdenv.isLinux "desktop-notifications"; + meta = with lib; { description = "A console IRC client"; homepage = "https://github.com/osa1/tiny"; diff --git a/pkgs/applications/networking/mailreaders/meli/default.nix b/pkgs/applications/networking/mailreaders/meli/default.nix index d0575b60653..d4076c88bb8 100644 --- a/pkgs/applications/networking/mailreaders/meli/default.nix +++ b/pkgs/applications/networking/mailreaders/meli/default.nix @@ -25,14 +25,14 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-ZE653OtXyZ9454bKPApmuL2kVko/hGBWEAya1L1KIoc="; - cargoBuildFlags = lib.optional withNotmuch "--features=notmuch"; - nativeBuildInputs = [ pkg-config gzip makeWrapper ]; buildInputs = [ openssl dbus sqlite ] ++ lib.optional withNotmuch notmuch; checkInputs = [ file ]; + buildFeatures = lib.optional withNotmuch [ "notmuch" ]; + postInstall = '' mkdir -p $out/share/man/man1 gzip < docs/meli.1 > $out/share/man/man1/meli.1.gz diff --git a/pkgs/applications/science/logic/elan/default.nix b/pkgs/applications/science/logic/elan/default.nix index cc4f0680de3..4326c5b0d6b 100644 --- a/pkgs/applications/science/logic/elan/default.nix +++ b/pkgs/applications/science/logic/elan/default.nix @@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec { buildInputs = [ curl zlib openssl ] ++ lib.optional stdenv.isDarwin libiconv; - cargoBuildFlags = [ "--features no-self-update" ]; + buildFeatures = [ "no-self-update" ]; patches = lib.optionals stdenv.isLinux [ # Run patchelf on the downloaded binaries. diff --git a/pkgs/applications/science/machine-learning/finalfusion-utils/default.nix b/pkgs/applications/science/machine-learning/finalfusion-utils/default.nix index 77dbbd7cdd1..19e6219fc04 100644 --- a/pkgs/applications/science/machine-learning/finalfusion-utils/default.nix +++ b/pkgs/applications/science/machine-learning/finalfusion-utils/default.nix @@ -22,12 +22,6 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-/rLv2/bcVsmWw+ZfyumDcj0ptHPQBCCYR9O/lVlV+G0="; - # Enables build against a generic BLAS. - cargoBuildFlags = [ - "--features" - "netlib" - ]; - nativeBuildInputs = [ installShellFiles ]; buildInputs = [ @@ -38,6 +32,9 @@ rustPlatform.buildRustPackage rec { Security ]; + # Enables build against a generic BLAS. + buildFeatures = [ "netlib" ]; + postInstall = '' # Install shell completions for shell in bash fish zsh; do diff --git a/pkgs/applications/version-management/git-and-tools/lucky-commit/default.nix b/pkgs/applications/version-management/git-and-tools/lucky-commit/default.nix index b58e192e391..7d91fb77542 100644 --- a/pkgs/applications/version-management/git-and-tools/lucky-commit/default.nix +++ b/pkgs/applications/version-management/git-and-tools/lucky-commit/default.nix @@ -22,7 +22,7 @@ rustPlatform.buildRustPackage rec { buildInputs = lib.optional withOpenCL (if stdenv.isDarwin then OpenCL else ocl-icd); - cargoBuildFlags = lib.optional (!withOpenCL) "--no-default-features"; + buildNoDefaultFeatures = !withOpenCL; # disable tests that require gpu checkNoDefaultFeatures = true; diff --git a/pkgs/applications/version-management/pijul/default.nix b/pkgs/applications/version-management/pijul/default.nix index 32126c7ce66..f558eab6b61 100644 --- a/pkgs/applications/version-management/pijul/default.nix +++ b/pkgs/applications/version-management/pijul/default.nix @@ -22,8 +22,6 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-j9xf97qPdhtakIwhAql0/Go5fPxlyWKAVLk5CMBfAbs="; - cargoBuildFlags = lib.optional gitImportSupport "--features=git"; - doCheck = false; nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl libsodium xxHash zstd ] @@ -32,6 +30,8 @@ rustPlatform.buildRustPackage rec { CoreServices Security SystemConfiguration ])); + buildFeatures = lib.optional gitImportSupport "git"; + meta = with lib; { description = "A distributed version control system"; homepage = "https://pijul.org"; diff --git a/pkgs/applications/window-managers/eww/default.nix b/pkgs/applications/window-managers/eww/default.nix index c2cc2f23cdb..a987c6c2e0e 100644 --- a/pkgs/applications/window-managers/eww/default.nix +++ b/pkgs/applications/window-managers/eww/default.nix @@ -25,10 +25,10 @@ rustPlatform.buildRustPackage rec { buildInputs = [ gtk3 ] ++ lib.optional withWayland gtk-layer-shell; - cargoBuildFlags = [ "--bin" "eww" ] ++ lib.optionals withWayland [ - "--no-default-features" - "--features=wayland" - ]; + buildNoDefaultFeatures = withWayland; + buildFeatures = lib.optional withWayland "wayland"; + + cargoBuildFlags = [ "--bin" "eww" ]; cargoTestFlags = cargoBuildFlags; diff --git a/pkgs/applications/window-managers/i3/status-rust.nix b/pkgs/applications/window-managers/i3/status-rust.nix index defb44f0f35..a285c4b5a54 100644 --- a/pkgs/applications/window-managers/i3/status-rust.nix +++ b/pkgs/applications/window-managers/i3/status-rust.nix @@ -27,10 +27,10 @@ rustPlatform.buildRustPackage rec { buildInputs = [ dbus libpulseaudio notmuch openssl ]; - cargoBuildFlags = [ - "--features=notmuch" - "--features=maildir" - "--features=pulseaudio" + buildFeatures = [ + "notmuch" + "maildir" + "pulseaudio" ]; prePatch = '' diff --git a/pkgs/applications/window-managers/i3/wmfocus.nix b/pkgs/applications/window-managers/i3/wmfocus.nix index 6756afb4a5c..9c33c555353 100644 --- a/pkgs/applications/window-managers/i3/wmfocus.nix +++ b/pkgs/applications/window-managers/i3/wmfocus.nix @@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec { # For now, this is the only available featureset. This is also why the file is # in the i3 folder, even though it might be useful for more than just i3 # users. - cargoBuildFlags = [ "--features i3" ]; + buildFeatures = [ "i3" ]; meta = with lib; { description = "Visually focus windows by label"; diff --git a/pkgs/development/interpreters/wasmer/default.nix b/pkgs/development/interpreters/wasmer/default.nix index 4dcb70bd3ec..6c714bc3de5 100644 --- a/pkgs/development/interpreters/wasmer/default.nix +++ b/pkgs/development/interpreters/wasmer/default.nix @@ -22,20 +22,18 @@ rustPlatform.buildRustPackage rec { nativeBuildInputs = [ cmake pkg-config ]; + # cranelift+jit works everywhere, see: + # https://github.com/wasmerio/wasmer/blob/master/Makefile#L22 + buildFeatures = [ "cranelift" "jit" ]; cargoBuildFlags = [ - # cranelift+jit works everywhere, see: - # https://github.com/wasmerio/wasmer/blob/master/Makefile#L22 - "--features" "cranelift,jit" # must target manifest and desired output bin, otherwise output is empty "--manifest-path" "lib/cli/Cargo.toml" "--bin" "wasmer" ]; - cargoTestFlags = [ - "--features" "test-cranelift" - # Can't use test-jit : - # error: Package `wasmer-workspace v2.0.0 (/build/source)` does not have the feature `test-jit` - ]; + # Can't use test-jit: + # error: Package `wasmer-workspace v2.0.0 (/build/source)` does not have the feature `test-jit` + checkFeatures = [ "test-cranelift" ]; LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; diff --git a/pkgs/development/tools/diesel-cli/default.nix b/pkgs/development/tools/diesel-cli/default.nix index 211993d2d7e..b964262f56c 100644 --- a/pkgs/development/tools/diesel-cli/default.nix +++ b/pkgs/development/tools/diesel-cli/default.nix @@ -21,9 +21,6 @@ assert lib.assertMsg (sqliteSupport == true || postgresqlSupport == true || mysq let inherit (lib) optional optionals optionalString; - features = optional sqliteSupport "sqlite" - ++ optional postgresqlSupport "postgres" - ++ optional mysqlSupport "mysql"; in rustPlatform.buildRustPackage rec { @@ -36,7 +33,6 @@ rustPlatform.buildRustPackage rec { sha256 = "sha256-mRdDc4fHMkwkszY+2l8z1RSNMEQnrWI5/Y0Y2W+guQE="; }; - cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ]; cargoSha256 = "sha256-sQ762Ss31sA5qALHzwkvwbfRXo00cCtqzQyoz3/zf6I="; nativeBuildInputs = [ installShellFiles pkg-config ]; @@ -48,6 +44,11 @@ rustPlatform.buildRustPackage rec { ++ optional postgresqlSupport postgresql ++ optionals mysqlSupport [ mariadb zlib ]; + buildNoDefaultFeatures = true; + buildFeatures = optional sqliteSupport "sqlite" + ++ optional postgresqlSupport "postgres" + ++ optional mysqlSupport "mysql"; + checkPhase = '' runHook preCheck '' + optionalString sqliteSupport '' diff --git a/pkgs/development/tools/knightos/regenkfs/default.nix b/pkgs/development/tools/knightos/regenkfs/default.nix index 8b80368cdaa..c50b10527f5 100644 --- a/pkgs/development/tools/knightos/regenkfs/default.nix +++ b/pkgs/development/tools/knightos/regenkfs/default.nix @@ -12,7 +12,8 @@ rustPlatform.buildRustPackage { }; cargoSha256 = "sha256-05VmQdop4vdzw2XEvVdp9+RNmyZvay1Q7gKN2n8rDEQ="; - cargoBuildFlags = [ "--features=c-undef" ]; + + buildFeatures = [ "c-undef" ]; meta = with lib; { description = "Reimplementation of genkfs in Rust"; diff --git a/pkgs/development/tools/misc/sccache/default.nix b/pkgs/development/tools/misc/sccache/default.nix index cbdee69ce2c..d2833ce9da6 100644 --- a/pkgs/development/tools/misc/sccache/default.nix +++ b/pkgs/development/tools/misc/sccache/default.nix @@ -13,11 +13,11 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "1f42cqaqnjwi9k4ihqil6z2dqh5dnf76x54gk7mndzkrfg3rl573"; - cargoBuildFlags = lib.optionals (!stdenv.isDarwin) [ "--features=dist-client,dist-server" ]; - nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security; + buildFeatures = lib.optionals (!stdenv.isDarwin) [ "dist-client" "dist-server" ]; + # Tests fail because of client server setup which is not possible inside the pure environment, # see https://github.com/mozilla/sccache/issues/460 doCheck = false; diff --git a/pkgs/development/tools/misc/tokei/default.nix b/pkgs/development/tools/misc/tokei/default.nix index e87f0706756..a93eee5cb1d 100644 --- a/pkgs/development/tools/misc/tokei/default.nix +++ b/pkgs/development/tools/misc/tokei/default.nix @@ -18,7 +18,7 @@ rustPlatform.buildRustPackage rec { ]; # enable all output formats - cargoBuildFlags = [ "--features" "all" ]; + buildFeatures = [ "all" ]; meta = with lib; { description = "A program that allows you to count your code, quickly"; diff --git a/pkgs/development/tools/rust/cargo-deny/default.nix b/pkgs/development/tools/rust/cargo-deny/default.nix index 7fe476c842c..39567600f7e 100644 --- a/pkgs/development/tools/rust/cargo-deny/default.nix +++ b/pkgs/development/tools/rust/cargo-deny/default.nix @@ -28,9 +28,7 @@ rustPlatform.buildRustPackage rec { buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ curl Security ]; - cargoBuildFlags = [ "--no-default-features" ]; - - cargoTestFlags = cargoBuildFlags; + buildNoDefaultFeatures = true; meta = with lib; { description = "Cargo plugin to generate list of all licenses for a crate"; diff --git a/pkgs/development/tools/rust/cargo-embed/default.nix b/pkgs/development/tools/rust/cargo-embed/default.nix index 2af012956c1..80a8195d77e 100644 --- a/pkgs/development/tools/rust/cargo-embed/default.nix +++ b/pkgs/development/tools/rust/cargo-embed/default.nix @@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec { nativeBuildInputs = [ pkg-config rustfmt ]; buildInputs = [ libusb1 libftdi1 ] ++ lib.optionals stdenv.isDarwin [ AppKit ]; - cargoBuildFlags = [ "--features=ftdi" ]; + buildFeatures = [ "ftdi" ]; meta = with lib; { description = "A cargo extension for working with microcontrollers"; diff --git a/pkgs/development/tools/rust/rust-analyzer/default.nix b/pkgs/development/tools/rust/rust-analyzer/default.nix index 91eea15867e..7e69f18e124 100644 --- a/pkgs/development/tools/rust/rust-analyzer/default.nix +++ b/pkgs/development/tools/rust/rust-analyzer/default.nix @@ -56,9 +56,6 @@ rustPlatform.buildRustPackage rec { buildAndTestSubdir = "crates/rust-analyzer"; - cargoBuildFlags = lib.optional useMimalloc "--features=mimalloc"; - cargoTestFlags = lib.optional useMimalloc "--features=mimalloc"; - nativeBuildInputs = lib.optional useMimalloc cmake; buildInputs = lib.optionals stdenv.isDarwin [ @@ -66,6 +63,8 @@ rustPlatform.buildRustPackage rec { libiconv ]; + buildFeatures = lib.optional useMimalloc "mimalloc"; + RUST_ANALYZER_REV = version; inherit doCheck; diff --git a/pkgs/development/tools/rust/rustup/default.nix b/pkgs/development/tools/rust/rustup/default.nix index f5e3b9ac4c2..3d137f58414 100644 --- a/pkgs/development/tools/rust/rustup/default.nix +++ b/pkgs/development/tools/rust/rustup/default.nix @@ -40,7 +40,9 @@ rustPlatform.buildRustPackage rec { zlib ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security libiconv xz ]; - cargoBuildFlags = [ "--features no-self-update" ]; + buildFeatures = [ "no-self-update" ]; + + checkFeatures = [ ]; patches = lib.optionals stdenv.isLinux [ (runCommand "0001-dynamically-patchelf-binaries.patch" { CC = stdenv.cc; patchelf = patchelf; libPath = "$ORIGIN/../lib:${libPath}"; } '' diff --git a/pkgs/development/tools/selene/default.nix b/pkgs/development/tools/selene/default.nix index 2f6e731ea33..dd936781d9d 100644 --- a/pkgs/development/tools/selene/default.nix +++ b/pkgs/development/tools/selene/default.nix @@ -26,9 +26,7 @@ rustPlatform.buildRustPackage rec { buildInputs = lib.optional robloxSupport openssl ++ lib.optional (robloxSupport && stdenv.isDarwin) Security; - cargoBuildFlags = lib.optional (!robloxSupport) "--no-default-features"; - - cargoTestFlags = cargoBuildFlags; + buildNoDefaultFeatures = !robloxSupport; meta = with lib; { description = "A blazing-fast modern Lua linter written in Rust"; diff --git a/pkgs/development/tools/stylua/default.nix b/pkgs/development/tools/stylua/default.nix index d0b7bbdca9d..8d0625d7bea 100644 --- a/pkgs/development/tools/stylua/default.nix +++ b/pkgs/development/tools/stylua/default.nix @@ -19,8 +19,8 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-/4ZW1FIfK51ak2EIV6dYY3XpucPPR+OZySPWwcKP4v0="; - cargoBuildFlags = lib.optionals lua52Support [ "--features" "lua52" ] - ++ lib.optionals luauSupport [ "--features" "luau" ]; + buildFeatures = lib.optional lua52Support "lua52" + ++ lib.optional luauSupport "luau"; # test_standard fails on darwin doCheck = !stdenvNoCC.isDarwin; diff --git a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix index 3a01058c99c..2bc9321353d 100644 --- a/pkgs/misc/vscode-extensions/vscode-lldb/default.nix +++ b/pkgs/misc/vscode-extensions/vscode-lldb/default.nix @@ -31,10 +31,11 @@ let buildAndTestSubdir = "adapter"; + buildFeatures = [ "weak-linkage" ]; + cargoBuildFlags = [ "--lib" "--bin=codelldb" - "--features=weak-linkage" ]; # Tests are linked to liblldb but it is not available here. diff --git a/pkgs/servers/routinator/default.nix b/pkgs/servers/routinator/default.nix index edff95d2e11..cb2c68d6c2d 100644 --- a/pkgs/servers/routinator/default.nix +++ b/pkgs/servers/routinator/default.nix @@ -20,9 +20,8 @@ rustPlatform.buildRustPackage rec { buildInputs = lib.optionals stdenv.isDarwin [ Security ]; - cargoBuildFlags = [ "--no-default-features" "--features=socks" ]; - - cargoTestFlags = cargoBuildFlags; + buildNoDefaultFeatures = true; + buildFeatures = [ "socks" ]; meta = with lib; { description = "An RPKI Validator written in Rust"; diff --git a/pkgs/shells/nushell/default.nix b/pkgs/shells/nushell/default.nix index 7a07c4ffdc4..ffc93bff6b7 100644 --- a/pkgs/shells/nushell/default.nix +++ b/pkgs/shells/nushell/default.nix @@ -37,7 +37,7 @@ rustPlatform.buildRustPackage rec { ++ lib.optionals (withExtraFeatures && stdenv.isLinux) [ xorg.libX11 ] ++ lib.optionals (withExtraFeatures && stdenv.isDarwin) [ AppKit nghttp2 libgit2 ]; - cargoBuildFlags = lib.optional withExtraFeatures "--features=extra"; + buildFeatures = lib.optional withExtraFeatures "extra"; # Since 0.34, nu has an indirect dependency on `zstd-sys` (via `polars` and # `parquet`, for dataframe support), which by default has an impure build diff --git a/pkgs/tools/X11/xidlehook/default.nix b/pkgs/tools/X11/xidlehook/default.nix index ac5d6fc964b..a19de0530bd 100644 --- a/pkgs/tools/X11/xidlehook/default.nix +++ b/pkgs/tools/X11/xidlehook/default.nix @@ -25,12 +25,14 @@ rustPlatform.buildRustPackage rec { sha256 = "1pl7f8fhxfcy0c6c08vkagp0x1ak96vc5wgamigrk1nkd6l371lb"; }; - cargoBuildFlags = lib.optionals (!stdenv.isLinux) [ "--no-default-features" "--features" "pulse" ]; cargoSha256 = "1y7m61j07gvqfqz97mda39nc602sv7a826c06m8l22i7z380xfms"; buildInputs = [ xlibsWrapper xorg.libXScrnSaver libpulseaudio ] ++ lib.optional stdenv.isDarwin Security; nativeBuildInputs = [ pkg-config patchelf python3 ]; + buildNoDefaultFeatures = !stdenv.isLinux; + buildFeatures = lib.optional (!stdenv.isLinux) "pulse"; + postFixup = lib.optionalString stdenv.isLinux '' RPATH="$(patchelf --print-rpath $out/bin/xidlehook)" patchelf --set-rpath "$RPATH:${libpulseaudio}/lib" $out/bin/xidlehook diff --git a/pkgs/tools/compression/ouch/default.nix b/pkgs/tools/compression/ouch/default.nix index c9ffaef4b76..3051c705c5f 100644 --- a/pkgs/tools/compression/ouch/default.nix +++ b/pkgs/tools/compression/ouch/default.nix @@ -27,9 +27,7 @@ rustPlatform.buildRustPackage rec { buildInputs = [ bzip2 xz zlib zstd ]; - cargoBuildFlags = [ "--features" "zstd/pkg-config" ]; - - cargoTestFlags = cargoBuildFlags; + buildFeatures = [ "zstd/pkg-config" ]; postInstall = '' help2man $out/bin/ouch > ouch.1 diff --git a/pkgs/tools/misc/termplay/default.nix b/pkgs/tools/misc/termplay/default.nix index 80c6341f025..2d493b857fc 100644 --- a/pkgs/tools/misc/termplay/default.nix +++ b/pkgs/tools/misc/termplay/default.nix @@ -11,7 +11,6 @@ rustPlatform.buildRustPackage rec { sha256 = "1w7hdqgqr1jgxid3k7f2j52wz31gv8bzr9rsm6xzp7nnihp6i45p"; }; - cargoBuildFlags = ["--features" "bin"]; cargoSha256 = "08ip6x4kink244majlk595yh551c2ap3ry58wly994mh8wf6ifwb"; nativeBuildInputs = [ makeWrapper ]; @@ -24,6 +23,8 @@ rustPlatform.buildRustPackage rec { libsixel ]; + buildFeatures = [ "bin" ]; + postInstall = '' wrapProgram $out/bin/termplay --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" ''; diff --git a/pkgs/tools/misc/vector/default.nix b/pkgs/tools/misc/vector/default.nix index 49588419484..9f06c858b48 100644 --- a/pkgs/tools/misc/vector/default.nix +++ b/pkgs/tools/misc/vector/default.nix @@ -22,8 +22,8 @@ , features ? ([ "sinks" "sources" "transforms" ] # the second feature flag is passed to the rdkafka dependency # building on linux fails without this feature flag (both x86_64 and AArch64) - ++ (lib.optionals enableKafka [ "rdkafka-plain" "rdkafka/dynamic_linking" ]) - ++ (lib.optional stdenv.targetPlatform.isUnix "unix")) + ++ lib.optionals enableKafka [ "rdkafka-plain" "rdkafka/dynamic_linking" ] + ++ lib.optional stdenv.targetPlatform.isUnix "unix") }: let @@ -51,24 +51,28 @@ rustPlatform.buildRustPackage { RUSTONIG_SYSTEM_LIBONIG = true; LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; - cargoBuildFlags = [ "--no-default-features" "--features" (lib.concatStringsSep "," features) ]; + TZDIR = "${tzdata}/share/zoneinfo"; + + buildNoDefaultFeatures = true; + buildFeatures = features; + # TODO investigate compilation failure for tests # dev dependency includes httpmock which depends on iashc which depends on curl-sys with http2 feature enabled # compilation fails because of a missing http2 include doCheck = !stdenv.isDarwin; - # healthcheck_grafana_cloud is trying to make a network access - # test_stream_errors is flaky on linux-aarch64 - # tcp_with_tls_intermediate_ca is flaky on linux-x86_64 - checkPhase = '' - TZDIR=${tzdata}/share/zoneinfo cargo test \ - --no-default-features \ - --features ${lib.concatStringsSep "," features} \ - -- --test-threads 1 \ - --skip=sinks::loki::tests::healthcheck_grafana_cloud \ - --skip=kubernetes::api_watcher::tests::test_stream_errors \ - --skip=sources::socket::test::tcp_with_tls_intermediate_ca \ - --skip=sources::host_metrics::cgroups::tests::generates_cgroups_metrics - ''; + + checkFlags = [ + # tries to make a network access + "--skip=sinks::loki::tests::healthcheck_grafana_cloud" + + # flaky on linux-aarch64 + "--skip=kubernetes::api_watcher::tests::test_stream_errors" + + # flaky on linux-x86_64 + "--skip=sources::socket::test::tcp_with_tls_intermediate_ca" + + "--skip=sources::host_metrics::cgroups::tests::generates_cgroups_metrics" + ]; # recent overhauls of DNS support in 0.9 mean that we try to resolve # vector.dev during the checkPhase, which obviously isn't going to work. diff --git a/pkgs/tools/misc/websocat/default.nix b/pkgs/tools/misc/websocat/default.nix index 7ba2accc678..ffbbc0ec806 100644 --- a/pkgs/tools/misc/websocat/default.nix +++ b/pkgs/tools/misc/websocat/default.nix @@ -12,13 +12,14 @@ rustPlatform.buildRustPackage rec { sha256 = "sha256-jwoWxK4phBqhIeo3+oRnpGsfvtn9gTR1ryd4N+0Lmbw="; }; - cargoBuildFlags = [ "--features=ssl" ]; cargoSha256 = "sha256-+3SG1maarY4DJ4+QiYGwltGLksOoOhKtcqstRwgzi2k="; nativeBuildInputs = [ pkg-config makeWrapper ]; buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ libiconv Security ]; + buildFeatures = [ "ssl" ]; + # Needed to get openssl-sys to use pkg-config. OPENSSL_NO_VENDOR=1; diff --git a/pkgs/tools/misc/xxv/default.nix b/pkgs/tools/misc/xxv/default.nix index 99a8193c6ca..e5852e5f51b 100644 --- a/pkgs/tools/misc/xxv/default.nix +++ b/pkgs/tools/misc/xxv/default.nix @@ -25,7 +25,8 @@ rustPlatform.buildRustPackage rec { # I'm picking pancurses for Windows simply because that's the example given in Cursive's # documentation for picking an alternative backend. We could just as easily pick crossterm. - cargoBuildFlags = lib.optionals (!useNcurses) [ "--no-default-features" "--features pancurses-backend" ]; + buildNoDefaultFeatures = !useNcurses; + buildFeatures = lib.optional (!useNcurses) "pancurses-backend"; meta = with lib; { description = "A visual hex viewer for the terminal"; diff --git a/pkgs/tools/networking/bore/default.nix b/pkgs/tools/networking/bore/default.nix index b22cdb0c2ae..cfe78590483 100644 --- a/pkgs/tools/networking/bore/default.nix +++ b/pkgs/tools/networking/bore/default.nix @@ -15,7 +15,9 @@ rustPlatform.buildRustPackage rec { cargoBuildFlags = "-p ${pname}"; # FIXME can’t test --all-targets and --doc in a single invocation - cargoTestFlags = "--features std --all-targets --workspace"; + checkFeatures = [ "std" ]; + + cargoTestFlags = [ "--all-targets" "--workspace" ]; nativeBuildInputs = [ installShellFiles ] ++ lib.optional stdenv.isDarwin llvmPackages.libclang; diff --git a/pkgs/tools/nix/statix/default.nix b/pkgs/tools/nix/statix/default.nix index 3e56fa4fb60..bb17d8df275 100644 --- a/pkgs/tools/nix/statix/default.nix +++ b/pkgs/tools/nix/statix/default.nix @@ -15,9 +15,7 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "sha256-e20POz9ZvuT0S+YG+9x7hcudhXQpOR4rVSFJbz76OI0="; - cargoBuildFlags = lib.optionals withJson [ "--features" "json" ]; - - cargoCheckFlags = cargoBuildFlags; + buildFeatures = lib.optional withJson "json"; meta = with lib; { description = "Lints and suggestions for the nix programming language"; diff --git a/pkgs/tools/package-management/cargo-audit/default.nix b/pkgs/tools/package-management/cargo-audit/default.nix index b871b4a53b2..232b6b4b0e8 100644 --- a/pkgs/tools/package-management/cargo-audit/default.nix +++ b/pkgs/tools/package-management/cargo-audit/default.nix @@ -32,8 +32,7 @@ rustPlatform.buildRustPackage rec { Security ]; - # enables `cargo audit fix` - cargoBuildFlags = [ "--features fix" ]; + buildFeatures = [ "fix" ]; # The tests require network access which is not available in sandboxed Nix builds. doCheck = false; diff --git a/pkgs/tools/security/sheesy-cli/default.nix b/pkgs/tools/security/sheesy-cli/default.nix index ea71be7c953..4be2189e293 100644 --- a/pkgs/tools/security/sheesy-cli/default.nix +++ b/pkgs/tools/security/sheesy-cli/default.nix @@ -14,12 +14,16 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "159a5ph1gxwcgahyr8885lq3c1w76nxzfrfdpyqixqrr7jzx2rd3"; cargoDepsName = pname; - cargoBuildFlags = [ "--bin sy" "--features" "vault,extract,completions,substitute,process" ]; - nativeBuildInputs = [ libgpg-error gpgme gettext installShellFiles ]; buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security ]; + buildFeatures = [ "vault" "extract" "completions" "substitute" "process" ]; + + checkFeatures = [ ]; + + cargoBuildFlags = [ "--bin" "sy" ]; + postInstall = '' installShellCompletion --cmd sy \ --bash <($out/bin/sy completions bash) \ diff --git a/pkgs/tools/security/vaultwarden/default.nix b/pkgs/tools/security/vaultwarden/default.nix index 6bdf428b199..77ec5a1e813 100644 --- a/pkgs/tools/security/vaultwarden/default.nix +++ b/pkgs/tools/security/vaultwarden/default.nix @@ -3,10 +3,7 @@ , libiconv, Security, CoreServices , dbBackend ? "sqlite", libmysqlclient, postgresql }: -let - featuresFlag = "--features ${dbBackend}"; - -in rustPlatform.buildRustPackage rec { +rustPlatform.buildRustPackage rec { pname = "vaultwarden"; version = "1.23.0"; @@ -35,14 +32,7 @@ in rustPlatform.buildRustPackage rec { # This may be removed if https://github.com/dani-garcia/vaultwarden/issues/712 is fixed. RUSTC_BOOTSTRAP = 1; - cargoBuildFlags = [ featuresFlag ]; - - checkPhase = '' - runHook preCheck - echo "Running cargo cargo test ${featuresFlag} -- ''${checkFlags} ''${checkFlagsArray+''${checkFlagsArray[@]}}" - cargo test ${featuresFlag} -- ''${checkFlags} ''${checkFlagsArray+"''${checkFlagsArray[@]}"} - runHook postCheck - ''; + buildFeatures = dbBackend; passthru.tests = nixosTests.vaultwarden; diff --git a/pkgs/tools/system/zenith/default.nix b/pkgs/tools/system/zenith/default.nix index 1e36614c427..3705c9cad90 100644 --- a/pkgs/tools/system/zenith/default.nix +++ b/pkgs/tools/system/zenith/default.nix @@ -18,12 +18,13 @@ rustPlatform.buildRustPackage rec { sha256 = "1bn364rmp0q86rd7vgv4n7x09cdf9m4njcaq92jnk85ni6h147ax"; }; - cargoBuildFlags = lib.optionals nvidiaSupport [ "--features" "nvidia" ]; cargoSha256 = "0c2mk2bcz4qjyqmf11yqhnhy4pqxr77b3c1gvr5jfmjshx4ff7v2"; nativeBuildInputs = lib.optional nvidiaSupport makeWrapper; buildInputs = lib.optionals stdenv.isDarwin [ IOKit ]; + buildFeatures = lib.optional nvidiaSupport "nvidia"; + postInstall = lib.optionalString nvidiaSupport '' wrapProgram $out/bin/zenith \ --suffix LD_LIBRARY_PATH : "/run/opengl-driver/lib" diff --git a/pkgs/tools/text/ripgrep/default.nix b/pkgs/tools/text/ripgrep/default.nix index 3fa202135f5..022f8bd25bb 100644 --- a/pkgs/tools/text/ripgrep/default.nix +++ b/pkgs/tools/text/ripgrep/default.nix @@ -22,13 +22,13 @@ rustPlatform.buildRustPackage rec { cargoSha256 = "1kfdgh8dra4jxgcdb0lln5wwrimz0dpp33bq3h7jgs8ngaq2a9wp"; - cargoBuildFlags = lib.optional withPCRE2 "--features pcre2"; - nativeBuildInputs = [ asciidoctor installShellFiles ] ++ lib.optional withPCRE2 pkg-config; buildInputs = lib.optional withPCRE2 pcre2 ++ lib.optional stdenv.isDarwin Security; + buildFeatures = lib.optional withPCRE2 "pcre2"; + preFixup = '' installManPage $releaseDir/build/ripgrep-*/out/rg.1 |