Open mmstick opened 4 years ago
would love to have it. so i can install it via apt-get? and how is it getting updated in case of a new cargo-make release? (I got zero knowledge on how to publish to linux package manager repository)
You can on Pop!_OS, at least, since that's where it's now being packaged. It would allow anyone to build debian packages from the source repo, too. ie: dpkg-buildpackage -b
Any repository in the Pop!_OS GitHub repository that contains a debian directory is automatically packaged by our CI.
cool. maybe you can document it in the installation section?
@mmstick
@sagiegurari
Could we use cargo-deb
for that?
https://crates.io/crates/cargo-deb
"This is a Cargo helper command which automatically creates binary Debian packages (.deb) from Cargo projects."
ya probably but I'm not familiar with the entire publishing process to debian. need to learn a bit on it.
but a good start would be to create a deb file and have it part of the binary release artifacts
ya probably but I'm not familiar with the entire publishing process to debian. need to learn a bit on it.
but a good start would be to create a deb file and have it part of the binary release artifacts
I would really like to contribute to your package because I really like it so If you would like I can take of it 😄
that would be great. if you could create a task in the makefile to create the deb and have it run in the release build and upload it would be awesome
that would be great. if you could create a task in the makefile to create the deb and have it run in the release build and upload it would be awesome
Sure 😄 I will start tomorrow and ask you if I don't know something
@sagiegurari
Hey Im trying to build it locally (on an ubuntu vm, its on arm)
And Im getting this compilation error (I set my rustc version to 1.56.0):
[cargo-make] INFO - cargo make 0.35.13
[cargo-make] INFO - Project: cargo-make
[cargo-make] INFO - Build File: Makefile.toml
[cargo-make] INFO - Task: ci-flow
[cargo-make] INFO - Profile: development
[cargo-make] INFO - Running Task: legacy-migration
[cargo-make] INFO - Running Task: print-cargo-make-env
*************************************
Cargo Make:
Task: ci-flow
Task Arguments:
Command: cargo make
Working Directory: /home/john/Documents/cargo-make
Profile: development
Additional Profiles: all-default-tasks;multi-phase-tests;ci-coverage-tasks;ci-static-code-analysis-tasks;ci-all-build-tasks;publish-pre-cleanup
*************************************
[cargo-make] INFO - Running Task: print-project-env
*************************************
Project:
Name: cargo-make
Version: 0.35.12
Version Member:
*************************************
[cargo-make] INFO - Running Task: print-ci-env
*************************************
CI:
CI: false
PR: false
Branch Name:
CI Vendor:
*************************************
[cargo-make] INFO - Running Task: print-git-env
*************************************
Git:
Branch: 341-debian-packaging
User:
Email:
Commit Hash: 084eae90502e3ae42dab65a3276112ef3fcc674e
Commit Hash Prefix: 084eae90
*************************************
[cargo-make] INFO - Running Task: print-rust-env
*************************************
Rust:
Version: 1.56.0
Channel: stable
Target Arch: aarch64
Target Env: gnu
Target OS: linux
Pointer Width: 64
Target Vendor: unknown
Target Triple: aarch64-unknown-linux-gnu
*************************************
[cargo-make] INFO - Running Task: print-cargo-env
*************************************
Cargo:
Home: /home/john/.cargo
Profile: dev
*************************************
[cargo-make] INFO - Running Task: print-crate-env
*************************************
Crate:
Name: cargo-make
Version: 0.35.12
Description: Rust task runner and build tool.
License: Apache-2.0
Documentation: https://sagiegurari.github.io/cargo-make
Homepage: https://sagiegurari.github.io/cargo-make
Repository: https://github.com/sagiegurari/cargo-make.git
Workspace: false
Workspace Working Directory: /home/john/Documents/cargo-make
Workspace Members:
Has Dependencies: true
*************************************
[cargo-make] INFO - Running Task: print-duckscript-env
*************************************
Duckscript:
Runtime: 0.7.2
SDK: 0.8.12
*************************************
[cargo-make] INFO - Running Task: post-print-env
*************************************
Extended Info:
Unstable Environment Key: linux-stable-false
Unstable Test Environment: false
Unstable Format Environment: false
*************************************
[cargo-make] INFO - Execute Command: "cargo" "fmt" "--" "--check"
[cargo-make] INFO - Execute Command: "cargo" "build" "--all-features"
Compiling libc v0.2.126
Compiling proc-macro2 v1.0.39
Compiling cfg-if v1.0.0
Compiling unicode-ident v1.0.0
Compiling syn v1.0.96
Compiling autocfg v1.1.0
Compiling serde_derive v1.0.137
Compiling serde v1.0.137
Compiling cc v1.0.73
Compiling memchr v2.5.0
Compiling once_cell v1.12.0
Compiling typenum v1.15.0
Compiling ppv-lite86 v0.2.16
Compiling winapi-build v0.1.1
Compiling version_check v0.9.4
Compiling log v0.4.17
Compiling encoding_index_tests v0.1.4
Compiling untrusted v0.7.1
Compiling spin v0.5.2
Compiling semver v1.0.10
Compiling winapi v0.2.8
Compiling tinyvec_macros v0.1.0
Compiling fnv v1.0.7
Compiling regex-syntax v0.6.26
Compiling crc32fast v1.3.2
Compiling matches v0.1.9
Compiling itoa v1.0.2
Compiling lazy_static v1.4.0
Compiling crossbeam-utils v0.8.8
Compiling hashbrown v0.11.2
Compiling unicode-bidi v0.3.8
Compiling adler v1.0.2
Compiling percent-encoding v2.1.0
Compiling rustls v0.20.6
Compiling serde_json v1.0.81
Compiling utf8-ranges v0.1.3
Compiling camino v1.0.9
Compiling bytes v1.1.0
Compiling ryu v1.0.10
Compiling same-file v1.0.6
Compiling regex-syntax v0.3.9
Compiling os_str_bytes v6.1.0
Compiling wildmatch v2.1.0
Compiling nom v1.2.4
Compiling either v1.6.1
Compiling lazy_static v0.1.16
Compiling home v0.5.3
Compiling textwrap v0.15.0
Compiling termcolor v1.1.3
Compiling strsim v0.10.0
Compiling heck v0.4.0
Compiling base64 v0.13.0
Compiling bitflags v1.3.2
Compiling whoami v1.2.1
Compiling glob v0.3.0
Compiling fs_extra v1.2.0
Compiling git_info v0.1.2
Compiling rust_info v0.3.2
Compiling num-traits v0.2.15
Compiling num-integer v0.1.45
Compiling num-iter v0.1.43
Compiling indexmap v1.8.2
Compiling thread_local v1.1.4
Compiling encoding-index-korean v1.20141219.5
Compiling encoding-index-singlebyte v1.20141219.5
Compiling encoding-index-japanese v1.20141219.5
Compiling encoding-index-simpchinese v1.20141219.5
Compiling encoding-index-tradchinese v1.20141219.5
Compiling kernel32-sys v0.2.2
Compiling tinyvec v1.6.0
Compiling generic-array v0.14.5
Compiling miniz_oxide v0.5.3
Compiling form_urlencoded v1.0.1
Compiling ring v0.16.20
Compiling walkdir v2.3.2
Compiling http v0.2.8
Compiling clap_lex v0.2.2
Compiling meval v0.2.0
Compiling encoding v0.2.33
Compiling unicode-normalization v0.1.19
Compiling aho-corasick v0.7.18
Compiling bstr v0.2.17
Compiling quote v1.0.18
Compiling getrandom v0.2.6
Compiling memchr v0.1.11
Compiling time v0.1.43
Compiling atty v0.2.14
Compiling cpufeatures v0.2.2
Compiling which v4.2.5
Compiling num_cpus v1.13.1
Compiling dirs-sys-next v0.1.2
Compiling uname v0.1.1
Compiling fern v0.6.1
Compiling flate2 v1.0.24
Compiling rand_core v0.6.3
Compiling aho-corasick v0.5.3
Compiling regex v1.5.6
Compiling colored v2.0.0
Compiling dirs-next v2.0.0
Compiling idna v0.2.3
Compiling thread-id v2.0.0
Compiling rand_chacha v0.3.1
Compiling crypto-common v0.1.3
Compiling block-buffer v0.10.2
Compiling thread_local v0.2.7
Compiling digest v0.10.3
Compiling rand v0.8.5
Compiling url v2.2.2
Compiling regex v0.1.80
Compiling globset v0.4.9
Compiling java-properties v1.4.1
Compiling shell2batch v0.4.4
Compiling sha2 v0.10.2
Compiling webpki v0.22.0
Compiling sct v0.7.0
Compiling fsio v0.3.1
Compiling ignore v0.4.18
Compiling num v0.1.42
Compiling webpki-roots v0.22.3
Compiling duckscript v0.7.2
Compiling run_script v0.9.0
Compiling chrono v0.2.25
Compiling ftp v3.0.1
Compiling attohttpc v0.19.1
Compiling cargo-platform v0.1.2
Compiling serde_ignored v0.1.3
Compiling toml v0.5.9
Compiling lenient_semver_version_builder v0.4.2
Compiling envmnt v0.10.0
Compiling clap v3.2.1
Compiling lenient_semver_parser v0.4.2
Compiling ci_info v0.14.5
Compiling lenient_semver v0.4.2
Compiling cargo_metadata v0.14.2
Compiling duckscriptsdk v0.8.12
Compiling cargo-make v0.35.12 (/home/john/Documents/cargo-make)
warning: unknown lint: `deprecated_cfg_attr_crate_type_name`
--> src/lib/mod.rs:21:5
|
21 | deprecated_cfg_attr_crate_type_name,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unknown_lints)]` on by default
warning: unknown lint: `deref_into_dyn_supertrait`
--> src/lib/mod.rs:23:5
|
23 | deref_into_dyn_supertrait,
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unknown lint: `duplicate_macro_attributes`
--> src/lib/mod.rs:26:5
|
26 | duplicate_macro_attributes,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unknown lint: `enum_intrinsics_non_enums`
--> src/lib/mod.rs:29:5
|
29 | enum_intrinsics_non_enums,
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unknown lint: `text_direction_codepoint_in_comment`
--> src/lib/mod.rs:91:5
|
91 | text_direction_codepoint_in_comment,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unknown lint: `text_direction_codepoint_in_literal`
--> src/lib/mod.rs:92:5
|
92 | text_direction_codepoint_in_literal,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::values_of_lossy`: Replaced with `ArgMatches::get_many()`
--> src/lib/cli.rs:196:32
|
196 | cli_args.env = cmd_matches.values_of_lossy("env");
| ^^^^^^^^^^^^^^^
|
note: the lint level is defined here
--> src/lib/mod.rs:20:5
|
20 | deprecated,
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::occurrences_of`: Replaced with either `ArgAction::Count` or `ArgMatches::get_many(...).len()`
--> src/lib/cli.rs:198:42
|
198 | cli_args.build_file = if cmd_matches.occurrences_of("makefile") == 0 {
| ^^^^^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:202:14
|
202 | .value_of("makefile")
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:208:38
|
208 | cli_args.cwd = match cmd_matches.value_of("cwd") {
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:217:41
|
217 | cli_args.log_level = if cmd_matches.is_present("v") {
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:221:14
|
221 | .value_of("loglevel")
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:230:42
|
230 | cli_args.disable_color = cmd_matches.is_present("no-color")
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:235:21
|
235 | cmd_matches.is_present("time-summary") || envmnt::is("CARGO_MAKE_PRINT_TIME_SUMMARY");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:237:43
|
237 | cli_args.env_file = match cmd_matches.value_of("envfile") {
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:243:10
|
243 | .value_of("output-format")
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:247:54
|
247 | cli_args.list_category_steps = match cmd_matches.value_of("list-category-steps") {
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:252:46
|
252 | cli_args.output_file = match cmd_matches.value_of("output_file") {
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:258:10
|
258 | .value_of("profile".to_string())
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:262:54
|
262 | cli_args.disable_check_for_updates = cmd_matches.is_present("disable-check-for-updates");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:263:41
|
263 | cli_args.experimental = cmd_matches.is_present("experimental");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:264:39
|
264 | cli_args.print_only = cmd_matches.is_present("print-steps");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:265:46
|
265 | cli_args.disable_workspace = cmd_matches.is_present("no-workspace");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:266:45
|
266 | cli_args.disable_on_error = cmd_matches.is_present("no-on-error");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:267:42
|
267 | cli_args.allow_private = cmd_matches.is_present("allow-private");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:268:48
|
268 | cli_args.skip_init_end_tasks = cmd_matches.is_present("skip-init-end-tasks");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:269:43
|
269 | cli_args.list_all_steps = cmd_matches.is_present("list-steps");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::is_present`: Replaced with either `ArgAction::SetTrue` or `ArgMatches::contains_id(...)`
--> src/lib/cli.rs:270:48
|
270 | cli_args.diff_execution_plan = cmd_matches.is_present("diff-steps");
| ^^^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:272:53
|
272 | cli_args.skip_tasks_pattern = match cmd_matches.value_of("skip-tasks-pattern") {
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::value_of`: Replaced with `ArgMatches::get_one()`
--> src/lib/cli.rs:281:28
|
281 | let task = cmd_matches.value_of("task").unwrap_or(default_task_name);
| ^^^^^^^^
error: use of deprecated associated function `clap::ArgMatches::values_of`: Replaced with `ArgMatches::get_many()`
--> src/lib/cli.rs:283:10
|
283 | .values_of("TASK_CMD")
| ^^^^^^^^^
error: use of deprecated associated function `clap::Arg::<'help>::multiple_occurrences`: Replaced with `Arg::action` (Issue #3772)
--> src/lib/cli.rs:399:18
|
399 | .multiple_occurrences(true)
| ^^^^^^^^^^^^^^^^^^^^
error: use of deprecated associated function `clap::Arg::<'help>::allow_invalid_utf8`: Replaced with `Arg::value_parser(...)` with either `ValueParser::os_string()` or `ValueParser::path_buf()`
--> src/lib/cli.rs:402:18
|
402 | .allow_invalid_utf8(true)
| ^^^^^^^^^^^^^^^^^^
error: use of deprecated associated function `clap::Arg::<'help>::possible_values`: Replaced with `Arg::value_parser(PossibleValuesParser::new(...)).takes_value(true)`
--> src/lib/cli.rs:410:18
|
410 | .possible_values(&["verbose", "info", "error"])
| ^^^^^^^^^^^^^^^
error: use of deprecated associated function `clap::Arg::<'help>::possible_values`: Replaced with `Arg::value_parser(PossibleValuesParser::new(...)).takes_value(true)`
--> src/lib/cli.rs:444:18
|
444 | ... .possible_values(&["default", "short-description", "markdown", "markdown-single-page", "markdown-sub-section", "autocomplete"])
| ^^^^^^^^^^^^^^^
error: use of deprecated associated function `clap::Arg::<'help>::multiple_occurrences`: Replaced with `Arg::action` (Issue #3772)
--> src/lib/cli.rs:475:18
|
475 | .multiple_occurrences(true)
| ^^^^^^^^^^^^^^^^^^^^
warning: `cargo-make` (lib) generated 6 warnings
error: could not compile `cargo-make` due to 30 previous errors; 6 warnings emitted
[cargo-make] ERROR - Error while executing command, exit code: 101
[cargo-make] WARN - Build Failed.
Do you guys have any build instructions? I cannot find any
are you on master? make sure to upgrade your rustc as well.
github actions defined for this repo serve as best build instructions. you can see os, rust version, ...
by the way I do:
cargo run --bin cargo-make -- make
(which is also the same in the github actions) as the command to build and test
@John15321 ignore what i said. seems that clap broke something and are not backward compatible. they released 3.2 14 hours ago and its not compatible with 3.1 although minor version should be backward compatible.
seems they are backward compatible but marked many functions as deprecated and i have a lint rule against that. i'll resolve that later today. I need to find a more stable alternative to clap. its been like that multiple times and painful each time.
@John15321 ignore what i said. seems that clap broke something and are not backward compatible. they released 3.2 14 hours ago and its not compatible with 3.1 although minor version should be backward compatible.
EDIT
seems they are backward compatible but marked many functions as deprecated and i have a lint rule against that. i'll resolve that later today. I need to find a more stable alternative to clap. its been like that multiple times and painful each time.
@sagiegurari Checkout structopt https://crates.io/crates/structopt It's fully stable aka now it's only reciving bug fixes and i would say it's all that most programs would need It's actually what clap is based on
@John15321 ignore what i said. seems that clap broke something and are not backward compatible. they released 3.2 14 hours ago and its not compatible with 3.1 although minor version should be backward compatible.
EDIT
seems they are backward compatible but marked many functions as deprecated and i have a lint rule against that. i'll resolve that later today. I need to find a more stable alternative to clap. its been like that multiple times and painful each time.
Yeah i noticed that clap isn't the best in the way it is maintained. For example because structopt was merged into it, it has quite a few of it's features but they are not documented at all. I managed to use those features thru trial and error and when confronted as to why not document them as they are very useful and basic (like changing the name of the parameter etc). They said that's it's fine that they are only in the unit tests or whatever, i can even link you the issue later
@sagiegurari Also, I would suggest adding some sort of a nightly build for your project in the CI. Its made to catch things like this
nightly build exists. you mean recurring build every day/week not due to code change?
nightly build exists. you mean recurring build every day/week not due to code change?
Oh right, i forgot that it could also mean building it with the nightly edition of the rust compiler. But yes I mean running a build every day/night. Generally speaking the more CI jobs like this you have the easier it is to catch some regression as your frequency of measurement increases scientifically speaking
thats a good idea. by the way, to unblock yourself until i fix the clap issue, you can remove the deprecated lint enforcement i have
thats a good idea. by the way, to unblock yourself until i fix the clap issue, you can remove the deprecated lint enforcement i have
For now i just changed the package to bee 3.1.18, we can change that later in the PR
@John15321 please work on top of branch 0.35.14 where i pushed fixes for clap
@sagiegurari Im having a problem with cross-compilation due to that ring
library.
That appears not on any cross-compilation. So given that we can have an amd64 ubuntu runner that's cool and we can have a deb package for amd64, but given that GitHub does not support arm runners for some reason we would either have to spin up a docker image inside our runner or just not have arm deb package. Also, what is your preferred way of delivering that .deb package? As part of the release? Sorry its been a while since I have done anything in GitHub Actions.
Also when it comes to the compilation of the ring
lib its because of something called musl
. I am failair with that but from what I understand its some alternative to glibc or something like that. https://github.com/emk/rust-musl-builder https://stackoverflow.com/questions/68149955/rust-sorry-unimplemented-64-bit-mode-not-compiled-in/70628855#70628855
What do you think?
Also I think that after I manage to get this one running properly I could take a look at making packages for other distros like arch, fedora etc. I have been in the Linux world for a long time and I would love to do that
i prefer the deb to be uploaded to the release like other binaries. if we can't manage arm, lets skip it. i mean, the more options we can give the better but its not all or nothing. i work on arm by the way (rasp pi) so i am aware of the issues.
i prefer the deb to be uploaded to the release like other binaries. if we can't manage arm, lets skip it. i mean, the more options we can give the better but its not all or nothing. i work on arm by the way (rasp pi) so i am aware of the issues.
Sure, makes sense. So I will do it for amd64 releases so that it goes to the release section. Also, I would recommend we make an issue about not being able to cross-compile because of musl. Just so that we have it in the backlog so the problem itself is somehow remembered/stored
@sagiegurari I opened this PR with my changes. Please take a look at them. It's been a while since I have been playing with GitHub Actions and I want to be sure that my change to the CI doesn't affect other release artifacts being appended to the release itself.
https://github.com/sagiegurari/cargo-make/pull/665
Here is an example of the output of this workflow on my fork: https://github.com/John15321/cargo-make/releases/tag/v100.0.4
Additionally Im not sure to which branch Im supposed to be merging, master or 0.35.14
(I branched out of 0.35.14
)?
Would you be interested in having debian packaging in the repository?
Currently maintaining this in a fork for Pop!_OS.