GithubHelp home page GithubHelp logo

Comments (8)

wmmc88 avatar wmmc88 commented on June 15, 2024

explicitly setting force = true in install_crate also doesn't add --force to the command. output is same as above.

from cargo-make.

sagiegurari avatar sagiegurari commented on June 15, 2024

either do:

install_crate = { crate_name = "cargo-expand", min_version = "1.0.80" }

or:

install_crate = { crate_name = "cargo-expand", binary="cargo", test_arg="whatever...", version = "1.0.80" }

which are the currently supported formats. you can see the types.rs for what combinations are supported.

from cargo-make.

sagiegurari avatar sagiegurari commented on June 15, 2024

also i do'nt think the doc link you gave shows combination as you suggested, maybe i'm wrong. but if something is not clear, would love you to help clear it up in the docs.

from cargo-make.

wmmc88 avatar wmmc88 commented on June 15, 2024

@sagiegurari Even when I switch this to install_crate = { crate_name = "cargo-expand", binary="cargo", test_arg=["expand", "--version"], version = "1.0.80" }, it still doesn't force the install of an older version when a newer version is already installed. If version 1.0.81 is installed, but i explictly require version = "1.0.80" (**not min_version= "1.0.80" **), I expect cargo-make would try to run cargo install cargo-expand --version 1.0.80 --force

from cargo-make.

sagiegurari avatar sagiegurari commented on June 15, 2024

@wmmc88

i ran:

cargo install cargo-expand

checked version manuallly:

gitpod /workspace/cargo-make (master) $ cargo expand --version
cargo-expand 1.0.81

created this makefile:

[config]
skip_core_tasks = true
skip_git_env_info = true
skip_rust_env_info = true
skip_crate_env_info = true

[tasks.default]
install_crate = { crate_name = "cargo-expand", binary="cargo", test_arg=["expand", "--version"], version = "1.0.80" }
script = '''
cargo expand --version
'''

ran it:

[cargo-make] INFO - cargo make 0.37.10
[cargo-make] INFO - Build File: ./target/Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - Profile: development
[cargo-make] INFO - Running Task: default
[cargo-make] INFO - Execute Command: "cargo" "install" "--force" "--locked" "--version" "1.0.80" "cargo-expand"
    Updating crates.io index
  Installing cargo-expand v1.0.80
    Updating crates.io index
    Updating crates.io index
   Compiling proc-macro2 v1.0.79
   Compiling unicode-ident v1.0.12
   Compiling serde v1.0.197
   Compiling memchr v2.7.1
   Compiling regex-syntax v0.8.2
   Compiling cfg-if v1.0.0
   Compiling libc v0.2.153
   Compiling equivalent v1.0.1
   Compiling crc32fast v1.4.0
   Compiling hashbrown v0.14.3
   Compiling serde_json v1.0.114
   Compiling bit-vec v0.6.3
   Compiling semver v1.0.22
   Compiling adler v1.0.2
   Compiling itoa v1.0.10
   Compiling ryu v1.0.17
   Compiling thiserror v1.0.58
   Compiling utf8parse v0.2.1
   Compiling same-file v1.0.6
   Compiling anstyle-parse v0.2.3
   Compiling miniz_oxide v0.7.2
   Compiling walkdir v2.5.0
   Compiling bit-set v0.5.3
   Compiling prettyplease v0.2.17
   Compiling once_cell v1.19.0
   Compiling anstyle-query v1.0.2
   Compiling log v0.4.21
   Compiling anstyle v1.0.6
   Compiling bytemuck v1.15.0
   Compiling rustix v0.38.32
   Compiling colorchoice v1.0.0
   Compiling fnv v1.0.7
   Compiling rgb v0.8.37
   Compiling anstream v0.6.13
   Compiling lazy_static v1.4.0
   Compiling std_prelude v0.2.12
   Compiling linux-raw-sys v0.4.13
   Compiling unsafe-libyaml v0.2.11
   Compiling aho-corasick v1.1.3
   Compiling clap_lex v0.7.0
   Compiling quote v1.0.35
   Compiling indexmap v2.2.6
   Compiling syn v2.0.55
   Compiling flate2 v1.0.28
   Compiling strsim v0.11.0
   Compiling winnow v0.6.5
   Compiling heck v0.5.0
   Compiling unicode-width v0.1.11
   Compiling bat v0.24.0
   Compiling bitflags v2.5.0
   Compiling termcolor v1.4.1
   Compiling bitflags v1.3.2
   Compiling clap_builder v4.5.2
   Compiling console v0.15.8
   Compiling ansi_colours v1.2.2
   Compiling content_inspector v0.2.4
   Compiling path_abs v0.5.1
   Compiling encoding_rs v0.8.33
   Compiling home v0.5.9
   Compiling nu-ansi-term v0.49.0
   Compiling shell-words v1.1.0
   Compiling cargo-expand v1.0.80
   Compiling regex-automata v0.4.6
   Compiling fastrand v2.0.2
   Compiling bytesize v1.3.0
   Compiling cargo-subcommand-metadata v0.1.0
   Compiling tempfile v3.10.1
   Compiling serde_derive v1.0.197
   Compiling thiserror-impl v1.0.58
   Compiling clap_derive v4.5.3
   Compiling syn-select v0.3.0
   Compiling regex v1.10.4
   Compiling bstr v1.9.1
   Compiling fancy-regex v0.11.0
   Compiling toolchain_find v0.4.0
   Compiling globset v0.4.14
   Compiling clap v4.5.3
   Compiling grep-cli v0.1.10
   Compiling bincode v1.3.3
   Compiling toml_datetime v0.6.5
   Compiling serde_spanned v0.6.5
   Compiling serde_yaml v0.9.34+deprecated
   Compiling clircle v0.4.0
   Compiling toml_edit v0.22.9
   Compiling syntect v5.2.0
   Compiling toml v0.8.12
    Finished release [optimized] target(s) in 1m 11s
   Replacing /workspace/.cargo/bin/cargo-expand
    Replaced package `cargo-expand v1.0.81` with `cargo-expand v1.0.80` (executable `cargo-expand`)
cargo-expand 1.0.80
[cargo-make] INFO - Build Done in 71.51 seconds.

works fine.

from cargo-make.

wmmc88 avatar wmmc88 commented on June 15, 2024

@sagiegurari I am able to repro your behavior, but i still see other cases where this is not functioning.

Ex. If i enable core tasks and extend the test task like in #1063:

[config]
# skip_core_tasks = true
skip_git_env_info = true
skip_rust_env_info = true
skip_crate_env_info = true

[tasks.test]
install_crate = { crate_name = "cargo-expand", binary="cargo", test_arg=["expand", "--version"], version = "1.0.80" }

🪟 Windows 11 Enterprise(10.0.22631) (pwsh) make-test on  master [?] is 📦 v0.1.0 via 🦀 v1.77.1 took 3s
at 02:15:10 PM ❯ cargo clean
     Removed 19 files, 3.4MiB total

🪟 Windows 11 Enterprise(10.0.22631) (pwsh) make-test on  master [?] is 📦 v0.1.0 via 🦀 v1.77.1 
at 02:15:24 PM ❯ cargo expand --version
cargo-expand 1.0.82

🪟 Windows 11 Enterprise(10.0.22631) (pwsh) make-test on  master [?] is 📦 v0.1.0 via 🦀 v1.77.1 
at 02:15:31 PM ❯ cargo make test
[cargo-make] INFO - cargo make 0.37.11
[cargo-make] INFO - Build File: Makefile.toml
[cargo-make] INFO - Task: test
[cargo-make] INFO - Profile: development
[cargo-make] INFO - Running Task: legacy-migration
[cargo-make] INFO - Execute Command: "cargo" "test" "--all-features"
   Compiling make-test v0.1.0 (D:\make-test)
    Finished test [unoptimized + debuginfo] target(s) in 0.40s
     Running unittests src\main.rs (target\debug\deps\make_test-67937dc673a03896.exe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

[cargo-make] INFO - Build Done in 2.11 seconds.

As you see above, when cargo-expand is already installed, it does not force the installation of the older version. But when uninstall cargo-expand and rerun the task, it works:

🪟 Windows 11 Enterprise(10.0.22631) (pwsh) make-test on  master [?] is 📦 v0.1.0 via 🦀 v1.77.1 took 2s
at 02:15:40 PM ❯ cargo uninstall cargo-expand
    Removing D:\.tools\.cargo\bin\cargo-expand.exe

🪟 Windows 11 Enterprise(10.0.22631) (pwsh) make-test on  master [?] is 📦 v0.1.0 via 🦀 v1.77.1 
at 02:16:45 PM ❯ cargo make test
[cargo-make] INFO - cargo make 0.37.11
[cargo-make] INFO - Build File: Makefile.toml
[cargo-make] INFO - Task: test
[cargo-make] INFO - Profile: development
[cargo-make] INFO - Running Task: legacy-migration
[cargo-make] INFO - Execute Command: "cargo" "install" "--force" "--locked" "--version" "1.0.80" "cargo-expand"
    Updating crates.io index
  Installing cargo-expand v1.0.80
    Updating crates.io index
    Updating crates.io index

It seems like it is failing to respect version = 1.0.80 only when it is overriding the core test task

from cargo-make.

sagiegurari avatar sagiegurari commented on June 15, 2024

@wmmc88 ok got it.
there is a small hint for it in the docs (could be MUCH improved):

This ensures we are using a crate version that supports the feature we require for the build.
Currently there are few limitations when defining min_version:

Specifying toolchain in the task or rustup_component_name in the install_crate structure, will make cargo-make ignore the min version value.

same goes for version, not just in version.
The 'test' task is defined as follows by default:

[tasks.test]
description = "Runs all available tests."
category = "Test"
install_crate = false
toolchain = "${CARGO_MAKE_RUST_DEFAULT_TOOLCHAIN}"
command = "cargo"
args = [
  "test",
  "@@remove-empty(CARGO_MAKE_CARGO_VERBOSE_FLAGS)",
  "@@split(CARGO_MAKE_CARGO_BUILD_TEST_FLAGS, )",
]

since toolchain is defined, you won't have support for min/version here.

options

  1. do clear=true but than you redefine everything
  2. add dependency to your task that installs whatever you want - best option

from cargo-make.

sagiegurari avatar sagiegurari commented on June 15, 2024

@wmmc88 closing but reopen if you feel something is missing

from cargo-make.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.