sagiegurari / cargo-make Goto Github PK
View Code? Open in Web Editor NEWRust task runner and build tool.
Home Page: https://sagiegurari.github.io/cargo-make/
License: Apache License 2.0
Rust task runner and build tool.
Home Page: https://sagiegurari.github.io/cargo-make/
License: Apache License 2.0
Internal workspace member handling of sub flows instead of running sub cargo-make processes per member.
This will improve performance for workspace builds and will reduce messages in the console.
This is a breaking change which will break the flow in case a task is defined with multiple action types such as run_task, command or script.
This is a breaking change, but would help make the tasks more clearer to read and understand.
Support watch for changes that will trigger cargo make automatically.
Should help during development time to reduce the need of manual invocations of cargo make.
Hi ! As building cargo-make
can take a really long and unneeded time on Travis, it could be interesting to have a docker image available, as Travis (and Gitlab-CI, too) support Docker. I don't know the state of Docker/Rust compatibility however, but I could try preparing an image myself and making a PR afterwards.
This way, the actual binary would only be built once per version, and then downloaded from the Docker hub or another repository, instead of rebuilding it during every build.
This .travis.yml
before_install:
- cargo install --debug cargo-make
script:
- cargo make ci-flow
would be replaced by:
services:
- docker
before_install:
- docker pull sagiegurari/cargo-make
script:
- docker run sagiegurari/cargo-make ci-flow
In many cases cargo plugin is in the form of cargo-command so the crate name can be extracted from the command itself in most cases and there is no need to manually define it.
Support user level configuration file to enable setting defaults for cargo-make.
This should include:
The file could be named and located as: ~/.cargo/.cargo-make.toml
Will improve performance on envs that do not require this feature.
Verify based on common env vars that most continues integration services define.
I saw the recently added workspace support.
This is a great feature, but I would also really want to run special tasks in the root directory where the workspace manifest lives.
Maybe the behaviour could be like this:
use env var to turn on in order not to have any backward break
Never mind... CI screwed up.
I would like to set directory before running task. For example, if I have sub directory in the project, I want to use that as directory for my task. The directory should be relative directory from project.
Fore example, if I have subdirectory "sub1", then
[tasks.do_something]
cd = "sub1"
script = [
"ls"
]
This should cd to sub1 in the my project and run "ls".
Unlike conditions, disabled is defined before the fliw starts and should cause the taks and it's dependenciea (unless they are defined in other tasks as well) to be ignored.
Today the dependencies are still invoked.
To ensure mac support is tested with every change as well.
Based on env vars call also all examples build as part of ci flow
For crates with no dependencies, it makes no sense to run tasks like audit or outdated, so using a condition to skip those would improve performance
I'm trying to build a project with a workspace on CI.
On Travis, it work's perfectly.
On Appveyor, it fails though.
All that I do is run cargo make ci-flow
.
The important part of the log below seems to be this:
C:\Windows>cd \\?\C:\projects\juniper
'\\?\C:\projects\juniper'
CMD does not support UNC paths as current directories.
C:\Windows>cd ./juniper
The system cannot find the path specified.
All sub-crates use the default ci-flow task, except the juniper_rocket
crate, which has a custom Makefile.toml.
What could be the issue here?
Code can be found at: https://github.com/theduke/juniper/tree/11896700e5729b19ee0be34c27e92c71facbc702
Error log:
[00:00:00] Build started
[00:00:00] git clone -q https://github.com/mhallin/juniper.git C:\projects\juniper
[00:00:02] git fetch -q origin +refs/pull/73/merge:
[00:00:02] git checkout -qf FETCH_HEAD
[00:00:02] Running Install scripts
[00:00:02] curl -sSf -o rustup-init.exe https://win.rustup.rs
[00:00:04] rustup-init.exe --default-host %TARGET% --default-toolchain %CHANNEL% -y
[00:00:04] info: syncing channel updates for 'stable-i686-pc-windows-gnu'
[00:00:04] info: latest update on 2017-07-20, rust version 1.19.0 (0ade33941 2017-07-17)
[00:00:04] info: downloading component 'rustc'
[00:00:07] info: downloading component 'rust-std'
[00:00:09] info: downloading component 'cargo'
[00:00:09] info: downloading component 'rust-docs'
[00:00:09] info: downloading component 'rust-mingw'
[00:00:10] info: installing component 'rustc'
[00:00:14] info: installing component 'rust-std'
[00:00:26] info: installing component 'cargo'
[00:00:26] info: installing component 'rust-docs'
[00:00:41] info: installing component 'rust-mingw'
[00:00:41] info: default toolchain set to 'stable'
[00:00:41]
[00:00:42] stable installed - rustc 1.19.0 (0ade33941 2017-07-17)
[00:00:42]
[00:00:42] set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
[00:00:43] rustc -Vv
[00:00:43] rustc 1.19.0 (0ade33941 2017-07-17)
[00:00:43] binary: rustc
[00:00:43] commit-hash: 0ade339411587887bf01bcfa2e9ae4414c8900d4
[00:00:43] commit-date: 2017-07-17
[00:00:43] host: i686-pc-windows-gnu
[00:00:43] release: 1.19.0
[00:00:43] LLVM version: 4.0
[00:00:43] cargo -V
[00:00:43] cargo 0.20.0 (a60d185c8 2017-07-13)
[00:00:43] cargo install --debug cargo-make
[00:00:43] Updating registry `https://github.com/rust-lang/crates.io-index`
[00:00:54] Downloading cargo-make v0.3.47
[00:00:55] Installing cargo-make v0.3.47
[00:00:55] Downloading serde v1.0.11
[00:00:56] Downloading toml v0.4.4
[00:00:56] Downloading clap v2.26.0
[00:00:56] Downloading serde_derive v1.0.11
[00:00:56] Downloading rand v0.3.16
[00:00:56] Downloading term_size v0.3.0
[00:00:56] Downloading bitflags v0.9.1
[00:00:56] Downloading ansi_term v0.9.0
[00:00:56] Downloading atty v0.2.2
[00:00:57] Downloading textwrap v0.7.0
[00:00:57] Downloading unicode-width v0.1.4
[00:00:57] Downloading strsim v0.6.0
[00:00:57] Downloading unicode-segmentation v1.2.0
[00:00:57] Downloading vec_map v0.8.0
[00:00:57] Downloading quote v0.3.15
[00:00:57] Downloading serde_derive_internals v0.15.1
[00:00:57] Downloading syn v0.11.11
[00:00:57] Downloading synom v0.11.3
[00:00:57] Downloading unicode-xid v0.0.4
[00:00:58] Downloading libc v0.2.29
[00:00:58] Downloading winapi v0.2.8
[00:00:58] Downloading kernel32-sys v0.2.2
[00:00:58] Downloading winapi-build v0.1.1
[00:00:58] Compiling libc v0.2.29
[00:00:58] Compiling unicode-width v0.1.4
[00:00:59] Compiling unicode-segmentation v1.2.0
[00:00:59] Compiling winapi-build v0.1.1
[00:01:00] Compiling strsim v0.6.0
[00:01:00] Compiling vec_map v0.8.0
[00:01:01] Compiling serde v1.0.11
[00:01:01] Compiling ansi_term v0.9.0
[00:01:02] Compiling bitflags v0.9.1
[00:01:02] Compiling winapi v0.2.8
[00:01:10] Compiling unicode-xid v0.0.4
[00:01:10] Compiling quote v0.3.15
[00:01:11] Compiling rand v0.3.16
[00:01:13] Compiling kernel32-sys v0.2.2
[00:01:13] Compiling toml v0.4.4
[00:01:17] Compiling synom v0.11.3
[00:01:18] Compiling syn v0.11.11
[00:01:24] Compiling serde_derive_internals v0.15.1
[00:01:27] Compiling serde_derive v1.0.11
[00:01:42] Compiling term_size v0.3.0
[00:01:42] Compiling atty v0.2.2
[00:01:42] Compiling textwrap v0.7.0
[00:01:44] Compiling clap v2.26.0
[00:02:05] Compiling cargo-make v0.3.47
[00:02:13] Finished dev [unoptimized + debuginfo] target(s) in 74.77 secs
[00:02:13] Installing C:\Users\appveyor\.cargo\bin\cargo-make.exe
[00:02:13] cargo make ci-flow
[00:02:13] [cargo-make] info - cargo-make 0.3.47
[00:02:13] [cargo-make] info - Using Build File: Makefile.toml
[00:02:13] [cargo-make] info - Task: ci-flow
[00:02:14] [cargo-make] info - External file not found, skipping.
[00:02:14] [cargo-make] info - Setting Up Env.
[00:02:16] [cargo-make] info - Running Task: init
[00:02:16] [cargo-make] info - Running Task: workspace
[00:02:16] [cargo-make] info - Execute Command: "cmd.exe" "/C" "C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cargo-make\\CehlP3I9VQ.bat"
[00:02:16] '\\?\C:\projects\juniper'
[00:02:16] CMD.EXE was started with the above path as the current directory.
[00:02:16] UNC paths are not supported. Defaulting to Windows directory.
[00:02:16]
[00:02:16] C:\Windows>cd \\?\C:\projects\juniper
[00:02:16] '\\?\C:\projects\juniper'
[00:02:16] CMD does not support UNC paths as current directories.
[00:02:16]
[00:02:16] C:\Windows>cd ./juniper
[00:02:16] The system cannot find the path specified.
[00:02:16]
[00:02:16] C:\Windows>cargo make ci-flow
[00:02:16] [cargo-make] info - cargo-make 0.3.47
[00:02:16] [cargo-make] info - Using Build File: Makefile.toml
[00:02:16] [cargo-make] info - Task: ci-flow
[00:02:16] [cargo-make] info - External file not found, skipping.
[00:02:16] [cargo-make] info - Setting Up Env.
[00:02:16] [cargo-make] error - Error while executing command, exit code: 128
[00:02:16] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:16] stack backtrace:
[00:02:16] 0: 0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:16] 1: 0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:16] 2: 0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:16] 3: 0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:16] at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:16] 4: 0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:16] 5: 0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:16] 6: 0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:16] 7: 0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:16] 8: 0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:16] 9: 0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:16] 10: 0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:16] 11: 0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:16] 12: 0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:16] 13: 0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:16] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:16] 14: 0x875745 - __rust_maybe_catch_panic
[00:02:16] 15: 0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:16] 16: 0x4f99f2 - main
[00:02:16] 17: 0x4013e2 - __tmainCRTStartup
[00:02:16] 18: 0x76e47c03 - unit_addrs_search
[00:02:16] 19: 0x778dad2e - unit_addrs_search
[00:02:16]
[00:02:16] C:\Windows>cd \\?\C:\projects\juniper
[00:02:16] '\\?\C:\projects\juniper'
[00:02:16] CMD does not support UNC paths as current directories.
[00:02:16]
[00:02:16] C:\Windows>cd ./juniper_codegen
[00:02:16] The system cannot find the path specified.
[00:02:16]
[00:02:16] C:\Windows>cargo make ci-flow
[00:02:16] [cargo-make] info - cargo-make 0.3.47
[00:02:16] [cargo-make] info - Using Build File: Makefile.toml
[00:02:16] [cargo-make] info - Task: ci-flow
[00:02:16] [cargo-make] info - External file not found, skipping.
[00:02:16] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17] 0: 0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17] 1: 0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17] 2: 0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17] 3: 0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17] at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17] 4: 0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17] 5: 0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17] 6: 0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17] 7: 0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17] 8: 0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17] 9: 0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17] 10: 0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17] 11: 0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17] 12: 0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17] 13: 0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17] 14: 0x875745 - __rust_maybe_catch_panic
[00:02:17] 15: 0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17] 16: 0x4f99f2 - main
[00:02:17] 17: 0x4013e2 - __tmainCRTStartup
[00:02:17] 18: 0x76e47c03 - unit_addrs_search
[00:02:17] 19: 0x778dad2e - unit_addrs_search
[00:02:17]
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17]
[00:02:17] C:\Windows>cd ./juniper_tests
[00:02:17] The system cannot find the path specified.
[00:02:17]
[00:02:17] C:\Windows>cargo make ci-flow
[00:02:17] [cargo-make] info - cargo-make 0.3.47
[00:02:17] [cargo-make] info - Using Build File: Makefile.toml
[00:02:17] [cargo-make] info - Task: ci-flow
[00:02:17] [cargo-make] info - External file not found, skipping.
[00:02:17] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17] 0: 0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17] 1: 0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17] 2: 0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17] 3: 0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17] at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17] 4: 0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17] 5: 0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17] 6: 0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17] 7: 0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17] 8: 0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17] 9: 0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17] 10: 0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17] 11: 0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17] 12: 0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17] 13: 0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17] 14: 0x875745 - __rust_maybe_catch_panic
[00:02:17] 15: 0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17] 16: 0x4f99f2 - main
[00:02:17] 17: 0x4013e2 - __tmainCRTStartup
[00:02:17] 18: 0x76e47c03 - unit_addrs_search
[00:02:17] 19: 0x778dad2e - unit_addrs_search
[00:02:17]
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17]
[00:02:17] C:\Windows>cd ./juniper_iron
[00:02:17] The system cannot find the path specified.
[00:02:17]
[00:02:17] C:\Windows>cargo make ci-flow
[00:02:17] [cargo-make] info - cargo-make 0.3.47
[00:02:17] [cargo-make] info - Using Build File: Makefile.toml
[00:02:17] [cargo-make] info - Task: ci-flow
[00:02:17] [cargo-make] info - External file not found, skipping.
[00:02:17] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17] 0: 0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17] 1: 0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17] 2: 0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17] 3: 0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17] at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17] 4: 0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17] 5: 0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17] 6: 0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17] 7: 0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17] 8: 0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17] 9: 0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17] 10: 0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17] 11: 0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17] 12: 0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17] 13: 0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17] 14: 0x875745 - __rust_maybe_catch_panic
[00:02:17] 15: 0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17] 16: 0x4f99f2 - main
[00:02:17] 17: 0x4013e2 - __tmainCRTStartup
[00:02:17] 18: 0x76e47c03 - unit_addrs_search
[00:02:17] 19: 0x778dad2e - unit_addrs_search
[00:02:17]
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17]
[00:02:17] C:\Windows>cd ./juniper_rocket
[00:02:17] The system cannot find the path specified.
[00:02:17]
[00:02:17] C:\Windows>cargo make ci-flow
[00:02:17] [cargo-make] info - cargo-make 0.3.47
[00:02:17] [cargo-make] info - Using Build File: Makefile.toml
[00:02:17] [cargo-make] info - Task: ci-flow
[00:02:17] [cargo-make] info - External file not found, skipping.
[00:02:17] [cargo-make] info - Setting Up Env.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 128
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17] 0: 0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17] 1: 0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17] 2: 0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17] 3: 0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17] at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17] 4: 0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17] 5: 0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17] 6: 0x49b821 - cargo_make::environment::gitinfo::load_branch::ha61188dc0e49c367
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:74
[00:02:17] 7: 0x49beb9 - cargo_make::environment::gitinfo::load::ha0940e4ec3358022
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/gitinfo.rs:100
[00:02:17] 8: 0x49e91a - cargo_make::environment::setup_env_for_git_repo::h869320ff912b4bb6
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:83
[00:02:17] 9: 0x49f4e5 - cargo_make::environment::setup_env::h1bb130f92a02d3c4
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\environment/mod.rs:163
[00:02:17] 10: 0x4a4aac - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:49
[00:02:17] 11: 0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17] 12: 0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17] 13: 0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17] 14: 0x875745 - __rust_maybe_catch_panic
[00:02:17] 15: 0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17] 16: 0x4f99f2 - main
[00:02:17] 17: 0x4013e2 - __tmainCRTStartup
[00:02:17] 18: 0x76e47c03 - unit_addrs_search
[00:02:17] 19: 0x778dad2e - unit_addrs_search
[00:02:17]
[00:02:17] C:\Windows>cd \\?\C:\projects\juniper
[00:02:17] '\\?\C:\projects\juniper'
[00:02:17] CMD does not support UNC paths as current directories.
[00:02:17] [cargo-make] error - Error while executing command, exit code: 1
[00:02:17] thread 'main' panicked at 'Build Failed.', C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src\log.rs:106
[00:02:17] stack backtrace:
[00:02:17] 0: 0x8723cf - std::panicking::default_hook::{{closure}}::h4f40948f481650e9
[00:02:17] 1: 0x871f81 - std::panicking::default_hook::hcafd67ea48a23ee0
[00:02:17] 2: 0x8727b1 - std::panicking::rust_panic_with_hook::he7f3abd836207891
[00:02:17] 3: 0x442a73 - std::panicking::begin_panic::h181db6e2d0f9c785
[00:02:17] at C:\projects\rust\src\libstd/panicking.rs:511
[00:02:17] 4: 0x49697f - cargo_make::log::Logger::error::h5e441a51bc11d3cb
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/log.rs:106
[00:02:17] 5: 0x49fbd0 - cargo_make::command::validate_exit_code::h7165c8f72ef5574f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:55
[00:02:17] 6: 0x4a1368 - cargo_make::command::run_command::hddec0a2d2d409797
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:208
[00:02:17] 7: 0x4a0b9d - cargo_make::command::run_script::hb4302db5ca32d4f6
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:171
[00:02:17] 8: 0x4a1516 - cargo_make::command::run::h2567240627e21d6b
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/command.rs:228
[00:02:17] 9: 0x4a2439 - cargo_make::runner::run_task::h5d2e9c63243d4bf2
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:65
[00:02:17] 10: 0x4a25a0 - cargo_make::runner::run_task_flow::hb7abbc951cf78885
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:78
[00:02:17] 11: 0x4a3ed3 - cargo_make::runner::run_flow::h92bede15fbcca898
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:243
[00:02:17] 12: 0x4a4082 - cargo_make::runner::run::h2e6a9d1aeb452b8c
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/runner.rs:261
[00:02:17] 13: 0x4a4ba6 - cargo_make::cli::run::h8a19113e866bb47f
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:56
[00:02:17] 14: 0x4a5716 - cargo_make::cli::run_for_args::h5d14d9e46916d3c9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:88
[00:02:17] 15: 0x4a6503 - cargo_make::cli::run_cli::h51274122c19865d9
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/cli.rs:153
[00:02:17] 16: 0x4a6517 - cargo_make::main::h58ec6e08ef64d6d5
[00:02:17] at C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\cargo-make-0.3.47\src/main.rs:120
[00:02:17] 17: 0x875745 - __rust_maybe_catch_panic
[00:02:17] 18: 0x872d86 - std::rt::lang_start::hae2aefe6738024b9
[00:02:17] 19: 0x4f99f2 - main
[00:02:17] 20: 0x4013e2 - __tmainCRTStartup
[00:02:17] 21: 0x76e47c03 - unit_addrs_search
[00:02:17] 22: 0x778dad2e - unit_addrs_search
[00:02:17] Command exited with code 101
It would be better to remove it or to set to the github.com or github.io cargo-make pages, which contain much more information.
Creating a default
task in project's Makefile.toml
still pulls in dependencies from global default.
More generally, the global defaults are quite heavyweight and overprescriptive.
$ cat Makefile.toml
[tasks.default]
dependencies = ["build"]
[tasks.build]
command = "cargo"
args = ["build", "--release"]
dependencies = []
$ cargo make
[cargo-make] INFO - cargo-make 0.9.2
[cargo-make] INFO - Using Build File: Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - Setting Up Env.
[cargo-make] INFO - Running Task: init // ?? Why?
[cargo-make] INFO - Running Task: pre-format
[cargo-make] INFO - Running Task: format-stable
[cargo-make] INFO - Execute Command: "cargo" "fmt" "--" "--write-mode=overwrite" "--force"
Unrecognized option: 'force'.
usage: rustfmt [options] <file>...
Options:
-h, --help show this message
-V, --version show version information
-v, --verbose show progress
--write-mode [replace|overwrite|display|diff|coverage|checkstyle]
mode to write in (not usable when piping from stdin)
--skip-children
don't reformat child modules
--config-help show details of rustfmt configuration options
--config-path [Path for the configuration file]
Recursively searches the given path for the
rustfmt.toml config file. If not found reverts to the
input file path
[cargo-make] ERROR - Error while executing command, exit code: 1
[cargo-make] WARN - Build Failed.
To keep the attributes simple and to make the design more extendable, the rs script should be replaced with script and script runner as @rust
This would allow new types of script runners
Please allow environment variable to be computed from other variable. I can sort of do it in the task but then I have to declare unnecessary dependency.
[env]
MAKE = "ford"
YEAR = "2014"
MODEL = "${MAKE} ${YEAR}
Current MODEL is set to be empty.
Apart of running other tasks, commands and scripts, add support for running rust code.
This way we can have multi platform steps that do not have cargo plugins or commands without writing scripts for each platform.
In addition rust developers should feel comfortable to write tasks in rust code.
Instead of embedding the script text which could be long if using @rust
simply direct to a file using a new task attribute: script_file
Based on env vars call also benches as part of ci flow
Using conditions on rust channel
Just like codecov support, should add task to publish coverage report to coverall
/// paste code here
cargo make fails on projects without git repository. Stripped down example below for getting the 128 error code.
cargo new hello_cargo --bin --vcs none
cd hello_cargo
cargo make
[cargo-make] INFO - cargo-make 0.9.0
[cargo-make] INFO - Using Build File: Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - External file not found, skipping.
[cargo-make] INFO - Setting Up Env.
[cargo-make] ERROR - Error while executing command, exit code: 128
[cargo-make] WARN - Build Failed.
For faster execution, use cache in CI builds, but force cargo-make installation to use latest features.
if running inside a crate but not in its root directory, look for makefile.toml in parent directories until found or until reached Cargo.toml directory (project root).
I need to set environment variable based on result of the script. This variable will be feed to another task. This is blocker for me to use this tool. Something like this will be good way to configure env variable.
[env]
name = "count"
description = "count of file"
script = "wc file.txt"
[task.echo]
script = ["echo ${count}]
The following won't work as expected on bash nor msys2:
[config]
skip_core_tasks = true
[tasks.default]
script = [
"echo \"var: ${CARGO_MAKE_CRATE_VERSION}\""
]
Emits:
$ cargo make
[cargo-make] INFO - cargo-make 0.9.4
[cargo-make] INFO - Using Build File: Makefile.toml
[cargo-make] INFO - Task: default
[cargo-make] INFO - Setting Up Env.
[cargo-make] INFO - Running Task: empty
[cargo-make] INFO - Running Task: default
C:\workspace2\gen>cd C:\workspace2\gen
C:\workspace2\gen>echo "var: ${CARGO_MAKE_CRATE_VERSION}"
"var: ${CARGO_MAKE_CRATE_VERSION}"
[cargo-make] INFO - Running Task: empty
[cargo-make] INFO - Build Done in 0 seconds.
Similar to the platform override, it would be very nice to have a toolchain override for stable / beta / nightly.
This is most useful for running additional stuff on nightly, or ignoring things on nightly.
This can of course be already done with a condition_script, but that's pretty awkward compared to the override, Especially since you need a different script for windows and linux.
Even better would be a combination with the platform.
So, something like this:
[tasks.build]
...
[tasks.build.nightly]
...
[tasks.build.windows.nightly]
...
Similar to task, environment can be set based on condition.
[env]
DIR="ls"
[env.window]
DIR="dir"
This will allow for true cross platform scripting like rs_script but with improved runtime performance
Is the coverage task intended to only be run in CI builds and not locally?
When running cargo make coverage
locally, the coverage-kcov
task misses binaries built in the <workspace_dir>/target/debug/deps
directory, seemingly because it misses this script:
[tasks.workspace-members-ci]
description = "Runs the ci-flow for every workspace member."
script = [
'''
#prevent codecov publish in member builds
export CARGO_MAKE_SKIP_CODECOV="true"
export CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY="${CARGO_MAKE_WORKING_DIRECTORY}/target"
#output coverage data goes into workspace level
export CARGO_MAKE_COVERAGE_REPORT_DIRECTORY="${CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY}/coverage"
cargo make --loglevel=${CARGO_MAKE_LOG_LEVEL} ci-flow
unset CARGO_MAKE_COVERAGE_REPORT_DIRECTORY
unset CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY
unset CARGO_MAKE_SKIP_CODECOV
'''
]
I edited the coverage-kcov
script a bit to see if CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY
was populated, but it wasn't:
[cargo-make] INFO - Execute Command: "sh" "/tmp/cargo-make/RFPj37lX46.sh"
+ cd /home/azriel/work/gitlab/azriel91/free_will/crate/application
+ echo Working Directory: /home/azriel/work/gitlab/azriel91/free_will/crate/application
Working Directory: /home/azriel/work/gitlab/azriel91/free_will/crate/application
+ echo CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY:
CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY:
+ TARGET_DIRECTORY=target/coverage
+ [ -n ]
+ mkdir -p ./target/coverage
+ BINARY_DIRECTORY=target/debug/deps
+ [ -n ]
+ echo Running unit tests from directory: target/debug/deps
Running unit tests from directory: target/debug/deps
+ target/debug/deps/application*
/tmp/cargo-make/RFPj37lX46.sh: 22: /tmp/cargo-make/RFPj37lX46.sh: target/debug/deps/application*: not found
If I export CARGO_MAKE_WORKSPACE_TARGET_DIRECTORY
and CARGO_MAKE_COVERAGE_REPORT_DIRECTORY
myself, I do get the coverage generated in the right place.
Seems like the current stable version panics when a task fails.
Simple example:
[tasks.post-build]
dependencies = [
"format",
"clippy"
]
...
...
warning: rustfmt may have failed to format. See previous 1 errors.
[cargo-make] ERROR - Error while executing command, exit code: 3
thread 'main' panicked at 'Build Failed.', /home/theduke/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-make-0.3.75/src/logger.rs:56:16
stack backtrace:
0: 0x560a6c305393 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::ha36f9d6000a258d0
at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: 0x560a6c3019ca - std::sys_common::backtrace::_print::h9e51e0c7e57504cc
at /checkout/src/libstd/sys_common/backtrace.rs:71
2: 0x560a6c308fe3 - std::panicking::default_hook::{{closure}}::h6ad513f5b7fa7e45
at /checkout/src/libstd/sys_common/backtrace.rs:60
at /checkout/src/libstd/panicking.rs:381
3: 0x560a6c308d52 - std::panicking::default_hook::h92972e21fe795ab1
at /checkout/src/libstd/panicking.rs:397
4: 0x560a6c309447 - std::panicking::rust_panic_with_hook::h8231d9bc11839b47
at /checkout/src/libstd/panicking.rs:577
5: 0x560a6c198f2a - std::panicking::begin_panic::h527cec84396e91a6
6: 0x560a6c1b4e43 - cargo_make::logger::init::{{closure}}::h47bedaf674e30241
7: 0x560a6c2e861c - <fern::log_impl::Dispatch as fern::FernLog>::log_args::h632e7f5f8ffa61f3
8: 0x560a6c2f3f1a - log::__log::h70c54316b85ca3db
9: 0x560a6c1b8c94 - cargo_make::command::validate_exit_code::h1aeb6ec528c2e2c5
10: 0x560a6c1ba24a - cargo_make::command::run_command::hea93f14a5edab934
11: 0x560a6c1bb498 - cargo_make::runner::run_task::hb7027958db09b457
12: 0x560a6c1bd56b - cargo_make::runner::run_flow::h6ce16b508ef6d43c
13: 0x560a6c1bd68f - cargo_make::runner::run::hcb7541bc671237da
14: 0x560a6c1a98db - cargo_make::main::he7241edaf43a5955
15: 0x560a6c31024c - __rust_maybe_catch_panic
at /checkout/src/libpanic_unwind/lib.rs:99
16: 0x560a6c309c6b - std::rt::lang_start::hb98200139e7807ed
at /checkout/src/libstd/panicking.rs:459
at /checkout/src/libstd/panic.rs:361
at /checkout/src/libstd/rt.rs:59
17: 0x7fc8c99404c9 - __libc_start_main
18: 0x560a6c182719 - _start
19: 0x0 - <unknown>
[tasks.whatever]
condition = {channels = ["stable"]}
dependencies = [
"some",
"deps",
]
I would expect the condition to block the whole task from running, which it does for a task with a script
definition, but not for a task with dependencies.
I read the documentation and it says this is the intended behaviour, but I find this very weird. It makes running tasks conditionally kind of awkward for workspaces, because you have to define a wrapper task with run_task
in every workspace member just to enable checking a condition.
Wha'ts the reasoning behind this behaviour?
ps: my workaround for now was to do this:
[tasks.scoped-ci-flow]
description = "CI task will run cargo build and cargo test with verbose output"
dependencies = [
"pre-ci-flow",
"pre-build",
"build-verbose",
"post-build",
"pre-test",
"test-verbose",
"post-test",
"ci-coverage-flow",
"post-ci-flow"
]
[tasks.ci-flow]
condition = { channels = ["nightly"] }
run_task = "scoped-ci-flow"
dependencies = []
Based on comments in #44
Support new cargo --ver flag for crate installation as part of install_crate flow.
Should use new install_crate_args attribute
At start of build should check if a newer version of cargo-make exists and if so print a message to the user.
cargo make
panics when workspace members are not explicitly listed.
I have the following crate structure:
workspace_test
is a root workspace cratemember1
and member2
are membersworkspace_test
├── Cargo.lock
├── Cargo.toml
├── member
│ ├── member1
│ └── member2
└── src
└── lib.rs
In workspace_test
I have the following Cargo.toml
:
[package]
name = "workspace_test"
version = "0.1.0"
authors = ["Azriel Hoh <[email protected]>"]
[dependencies]
member1 = { path = "./member/member1" }
member2 = { path = "./member/member2" }
[workspace]
# note: no members explicitly listed
This is a valid set up based on Cargo's workspace section docs:
All path dependencies residing in the workspace directory become members.
When I run cargo make
I get:
[cargo-make] info - cargo-make 0.3.58
[cargo-make] info - Using Build File: Makefile.toml
[cargo-make] info - Task: default
[cargo-make] info - External file not found, skipping.
[cargo-make] info - Setting Up Env.
[cargo-make] info - Setting Up Env.
[cargo-make] info - Running Task: init
[cargo-make] info - Setting Up Env.
[cargo-make] info - Running Task: workspace
[cargo-make] info - Setting Up Env.
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0', /Users/travis/build/rust-lang/rust/src/liballoc/vec.rs:1555:10
stack backtrace:
0: 0x1060c0af3 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::hea646f639f5724a9
1: 0x1060c441a - std::panicking::default_hook::{{closure}}::h85c76fcfe66fd3c4
2: 0x1060c40d2 - std::panicking::default_hook::h3eec3c203ceba436
3: 0x1060c6692 - std::panicking::rust_panic_with_hook::h70dc815ddbea04a3
4: 0x1060c6574 - std::panicking::begin_panic::h964e463242cdda22
5: 0x1060c6442 - std::panicking::begin_panic_fmt::h5836acd93f32a20b
6: 0x1060c63aa - rust_begin_unwind
7: 0x1060ef373 - core::panicking::panic_fmt::hf5ab42af92a0e0c7
8: 0x1060ef2e8 - core::panicking::panic_bounds_check::h0d8311933e2799f3
9: 0x105ff9d6b - cargo_make::command::run_script::hb0271043a70e11b9
10: 0x105ffd6a7 - cargo_make::runner::run_task::h1e124d98163bfa20
11: 0x105fffca5 - cargo_make::runner::run_flow::h4fa2ea28900b8575
12: 0x106002c4a - cargo_make::cli::run_for_args::hb238ff9e91649f98
13: 0x10600480f - cargo_make::main::heaf0a96bae02441f
14: 0x1060c776c - __rust_maybe_catch_panic
15: 0x1060c6ae8 - std::rt::lang_start::h97e5b1c9e293b92d
No line numbers, because it's probably release mode, and also I'm on OS X which rustc doesn't give line numbers anyway. However we can at least see the panic happens in command.rs#run_script
.
Btw, if I add a glob like so:
[workspace]
members = ["member/*"]
which is also a valid configuration:
The path dependency can also use globs to match multiple paths.
Running cargo make
from the workspace root will run the default task on workspace_test
and member
, but not member2
I'd've started looking into why, but then I had to type this twice because I accidentally clicked on a link and lost the first post ._.
. Btw awesome crate!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.