diff mbox series

[bug#54509] rust-cargo: Update to 0.60.0 to support Edition2021 projects

Message ID CAL8jUGV9EwAm9KLKFcgjHiPV_GrQSZV4ec6Epcb0otXBNaD17Q@mail.gmail.com
State New
Headers show
Series [bug#54509] rust-cargo: Update to 0.60.0 to support Edition2021 projects | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Paul Alesius March 21, 2022, 5:46 p.m. UTC
The current rust-cargo version is 0.53.0, this supports rust
edition2018 projects.

To install the latest cargo from crates.io using the existing version
(cargo install cargo), it will fail because the latest version is an
"edition2021" rust-cargo project.

-- log
Caused by:
  failed to parse manifest at `/xyz/cargo-0.59.0/Cargo.toml`
Caused by:
  feature `edition2021` is required
--

This patch updates rust-cargo and its dependencies to support the the
latest rust edition2021, and edition2021 cargo projects.

With regards,
- Paul

Comments

M March 21, 2022, 6:46 p.m. UTC | #1
Paul Alesius schreef op ma 21-03-2022 om 18:46 [+0100]:
> +(define-public rust-rustfix-0.6
> +  (package
> +    (name "rust-rustfix")

rustfix is already packaged in Guix.

Greetings,
Maxime.
Mekeor Melire June 29, 2022, 10:57 p.m. UTC | #2
the rust-compiler which is packaged for guix supports edition2021. but
the cargo version packaged for guix does not. that's a pity! because it
makes the cargo version packaged for guix pretty unusable as most
projects already use edition2021. can we please merge this patch so that
cargo is usable for recent rust-projects?
M June 30, 2022, 8:10 a.m. UTC | #3
Mekeor Melire schreef op wo 29-06-2022 om 22:57 [+0000]:
> the rust-compiler which is packaged for guix supports edition2021
> but the cargo version packaged for guix does not

Pretty sure that it does, IIRC under antioxidant-build-system I've seen
some things being compiled with the 2021 edition of rust, presumably
they also compiled under cargo-build-system.

Also, rust-cargo does not have the cargo binary (but a cargo library!),
you may be looking for the 'cargo' output of the 'rust' package
instead.

Greetings,
Maxime.
Mekeor Melire July 1, 2022, 9:48 p.m. UTC | #4
2022-06-30 / 10:10 / maximedevos@telenet.be:

> Mekeor Melire schreef op wo 29-06-2022 om 22:57 [+0000]:

> > the rust-compiler which is packaged for guix supports edition2021
> > but the cargo version packaged for guix does not
>
> Pretty sure that it does, IIRC under antioxidant-build-system I've seen
> some things being compiled with the 2021 edition of rust, presumably
> they also compiled under cargo-build-system.

i tested this again. i'll describe the issue with some instructions:

    create a cargo project:

        $ cargo new foo
        $ cd foo

    use edition 2021 instead of 2018:

        $ sed -i 's/2018/2021/' Cargo.toml

    attempt to build and run. you'll observe an error:

        $ cargo run

        > error: failed to parse manifest at `/home/user/foo/Cargo.toml`
        > Caused by:
        >   feature `edition2021` is required
        >   consider adding `cargo-features = ["edition2021"]` to the manifest

    specify the 2021-edition as a cargo-feature, as suggested by cargo.
    and try building and running again. it'll work fine:

        $ (echo 'cargo-features = ["edition2021"]' && cat Cargo.toml) | \
          sponge Cargo.toml
        $ cargo run

        > [...]
        > Hello world!

    but now, let's add a package as dependency - a package which uses
    edition2021. and then, try to build and run:

        $ echo 'axum = "0.5.4"' >> Cargo.toml
        $ cargo run

        > error: failed to download `axum-core v0.2.6`
        > Caused by:
        >   unable to get packages from source
        > Caused by:
        >   failed to parse manifest at
        >   `/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/axum-core-0.2.6/Cargo.toml`
        > Caused by:
        >   feature `edition2021` is required
        >   consider adding `cargo-features = ["edition2021"]` to the manifest

TLDR: you can't build projects which depend on packages which depend on
edition2021.

> Also, rust-cargo does not have the cargo binary (but a cargo library!),
> you may be looking for the 'cargo' output of the 'rust' package
> instead.
>
> Greetings,
> Maxime.
Tobias Geerinckx-Rice July 2, 2022, 11:27 a.m. UTC | #5
Hi, 

λ cargo new foo
     Created binary (application) `foo` package
λ cd foo
λ cargo run
λ sed -i 's/2018/2021/' Cargo.toml
λ cargo run
   Compiling foo v0.1.0 (/home/nckx/c/foo)
    Finished dev [unoptimized + debuginfo] target(s) in 1.11s
     Running `target/debug/foo`
Hello, world!
λ echo 'axum = "0.5.4"' >> Cargo.toml
λ cargo run
[...]
Downloaded httpdate v1.0.2
   Compiling foo v0.1.0 (/home/nckx/c/foo)
    Finished dev [unoptimized + debuginfo] target(s) in 54.46s
     Running `target/debug/foo`
Hello, world!

Did you read the entirety of Maxime's reply?  How are you controlling your environment?

Kind regards,

T G-R

Sent on the go.  Excuse or enjoy my brevity.
Tobias Geerinckx-Rice July 2, 2022, 11:35 a.m. UTC | #6
Could you be using a recent rust with an older rust:cargo installed in an 'underlying' profile (e.g., your system profile), for example?

Kind regards,

T G-R

Sent on the go.  Excuse or enjoy my brevity.
Mekeor Melire July 6, 2022, 2:06 p.m. UTC | #7
thank you both. and sorry for falsly bumping the ticket!

i think i was missing the rust:cargo package/output. i solved my issue
with the following steps, but i'm not sure which steps were essential:

$ rm -rf ~/.cargo
$ guix package -r rust rust-cargo
$ unset RUSTC_BOOTSTRAP
$ guix package -i rust:out rust:cargo

kind regards
mekeor



2022-07-02 / 11:35 / me@tobias.gr:

> Could you be using a recent rust with an older rust:cargo installed in
> an 'underlying' profile (e.g., your system profile), for example?
>
> Kind regards,
> T G-R
diff mbox series

Patch

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 90c95b6368..5bfb545389 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -9763,10 +9763,10 @@  (define-public rust-caps-0.3
         ("rust-error-chain" ,rust-error-chain-0.12)
         ("rust-libc" ,rust-libc-0.2))))))
 
-(define-public rust-cargo-0.53
+(define-public rust-cargo-0.60
   (package
     (name "rust-cargo")
-    (version "0.53.0")
+    (version "0.60.0")
     (source
      (origin
        (method url-fetch)
@@ -9775,7 +9775,7 @@  (define-public rust-cargo-0.53
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "12ns9v4dd8vnvsaqgd897h2zc19w00i5ii3slda653zbhfzm6zna"))))
+         "0xws4y7h4mmq8flnzsgf6fph2hx3rjgypyll4wzp15035ymly6dw"))))
     (build-system cargo-build-system)
     (arguments
      `(;; The test suite is disabled as the internal 'cargo-test-macro' and
@@ -9786,6 +9786,7 @@  (define-public rust-cargo-0.53
         ("rust-atty" ,rust-atty-0.2)
         ("rust-bytesize" ,rust-bytesize-1)
         ("rust-cargo-platform" ,rust-cargo-platform-0.1)
+        ("rust-cargo-util" ,rust-cargo-util-0.1)
         ("rust-clap" ,rust-clap-2)
         ("rust-core-foundation" ,rust-core-foundation-0.9)
         ("rust-crates-io" ,rust-crates-io-0.33)
@@ -9793,7 +9794,7 @@  (define-public rust-cargo-0.53
         ("rust-crypto-hash" ,rust-crypto-hash-0.3)
         ("rust-curl" ,rust-curl-0.4)
         ("rust-curl-sys" ,rust-curl-sys-0.4)
-        ("rust-env-logger" ,rust-env-logger-0.8)
+        ("rust-env-logger" ,rust-env-logger-0.9)
         ("rust-filetime" ,rust-filetime-0.2)
         ("rust-flate2" ,rust-flate2-1)
         ("rust-flate2" ,rust-flate2-1)
@@ -9815,22 +9816,23 @@  (define-public rust-cargo-0.53
         ("rust-memchr" ,rust-memchr-2)
         ("rust-miow" ,rust-miow-0.3)
         ("rust-num-cpus" ,rust-num-cpus-1)
-        ("rust-opener" ,rust-opener-0.4)
+        ("rust-opener" ,rust-opener-0.5)
         ("rust-openssl" ,rust-openssl-0.10)
+        ("rust-os-info" ,rust-os-info-3)
         ("rust-percent-encoding" ,rust-percent-encoding-2)
         ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)
         ("rust-rand" ,rust-rand-0.8)
         ("rust-rustc-workspace-hack" ,rust-rustc-workspace-hack-1)
-        ("rust-rustfix" ,rust-rustfix-0.5)
+        ("rust-rustfix" ,rust-rustfix-0.6)
         ("rust-same-file" ,rust-same-file-1)
         ("rust-semver" ,rust-semver-0.10)
         ("rust-serde" ,rust-serde-1)
         ("rust-serde-ignored" ,rust-serde-ignored-0.1)
         ("rust-serde-json" ,rust-serde-json-1)
         ("rust-shell-escape" ,rust-shell-escape-0.1)
+        ("rust-socket2" ,rust-socket2-0.4)
         ("rust-strip-ansi-escapes" ,rust-strip-ansi-escapes-0.1)
         ("rust-tar" ,rust-tar-0.4)
-        ("rust-tar" ,rust-tar-0.4)
         ("rust-tempfile" ,rust-tempfile-3)
         ("rust-termcolor" ,rust-termcolor-1)
         ("rust-toml" ,rust-toml-0.5)
@@ -10094,7 +10096,7 @@  (define-public rust-cargo-lock-7
 (define-public rust-cargo-platform-0.1
   (package
     (name "rust-cargo-platform")
-    (version "0.1.1")
+    (version "0.1.2")
     (source
      (origin
        (method url-fetch)
@@ -10103,7 +10105,7 @@  (define-public rust-cargo-platform-0.1
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1mzi60pf0z83qkzqp7jwd61xnqz2b5ydsj7rnnikbgyicd5989h2"))))
+         "09zsf76b9yr02jh17xq925xp1w824w2bwvb78fd0gpx5m1fq5nyb"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -10114,6 +10116,25 @@  (define-public rust-cargo-platform-0.1
 supported by Cargo.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cargo-util-0.1
+  (package
+    (name "rust-cargo-util")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cargo-util" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1sz0gzcyp9ycb4zwj69qs9gd8kn9hv9nh2dq42c59x5xccqph755"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/rust-lang/cargo")
+    (synopsis "Utils for Cargo")
+    (description "Miscellaneous support code used by Cargo.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-cargon-0.0
   (package
     (name "rust-cargon")
@@ -13801,7 +13822,7 @@  (define-public rust-crates-index-0.5
 (define-public rust-crates-io-0.33
   (package
     (name "rust-crates-io")
-    (version "0.33.0")
+    (version "0.33.1")
     (source
      (origin
        (method url-fetch)
@@ -13810,7 +13831,7 @@  (define-public rust-crates-io-0.33
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "147mggf85fz77vsrzsvsxxwid4f4fg30zwfyirx7sl1k7y33hw91"))))
+         "0nmpzr697a6v12ljwpmjrhqpmkf784nsm8m1g6jwadmkq96p3mxj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -15585,14 +15606,14 @@  (define-public rust-cty-0.2
 (define-public rust-curl-0.4
   (package
     (name "rust-curl")
-    (version "0.4.34")
+    (version "0.4.43")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "curl" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0vkm6fyizf8m9yxpv3n5pm9ag3bwlyqa6nz2ga8qkzm5y4m1cs72"))))
+        (base32 "07v5s3qafyl9gnnlzbddgg5fzy41gncy00ahbbv46nr0xyp5bn1p"))))
     (build-system cargo-build-system)
     (arguments
      `(#:tests? #false                  ;require internet access
@@ -15622,7 +15643,7 @@  (define-public rust-curl-0.4
 (define-public rust-curl-sys-0.4
   (package
     (name "rust-curl-sys")
-    (version "0.4.39+curl-7.74.0")
+    (version "0.4.53+curl-7.82.0")
     (source
       (origin
         (method url-fetch)
@@ -15630,7 +15651,7 @@  (define-public rust-curl-sys-0.4
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0x7qhq7c3b1vmp3740yiigzm09qvkzpdf578jjrs0s3v3s3cxa07"))
+          "0lh398vd34c55afyw5csbxqmnp7caxgpgci3y89c60lmb9d914l0"))
         (modules '((guix build utils)))
         (snippet
          '(begin (delete-file-recursively "curl") #t))))
@@ -30137,7 +30158,7 @@  (define-public rust-jni-sys-0.3
 (define-public rust-jobserver-0.1
   (package
     (name "rust-jobserver")
-    (version "0.1.22")
+    (version "0.1.24")
     (source
      (origin
        (method url-fetch)
@@ -30146,7 +30167,7 @@  (define-public rust-jobserver-0.1
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1zg7p4khibisbvd8b1lqvvni6lr00g49d4bq2zj6m76bs7jmlbwp"))))
+         "1yn1vxbbqv7dqir6qbfcj8h8ddjf89m5mhvm36h13xx7k5raf9dg"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -39195,10 +39216,10 @@  (define-public rust-open-1
        (("rust-pathdiff" ,rust-pathdiff-0.2)
         ("rust-winapi" ,rust-winapi-0.3))))))
 
-(define-public rust-opener-0.4
+(define-public rust-opener-0.5
   (package
     (name "rust-opener")
-    (version "0.4.1")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
@@ -39207,7 +39228,7 @@  (define-public rust-opener-0.4
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1bpknqvhqkalhmq8n2m97apc0r3y194ppybl1qxay34xr83p848k"))))
+         "0lkrn4fv1h4m8gmp7ll6x7vjvb6kls2ngwa5cgsh2ix5fb6yp8sf"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -39569,14 +39590,14 @@  (define-public rust-ordermap-0.3
 (define-public rust-os-info-3
   (package
     (name "rust-os-info")
-    (version "3.0.6")
+    (version "3.0.7")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "os_info" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1pbcf2in8i9w6zjzk6jmrd89gm5h7qpyqi3hvkl0axpzp1m57lmk"))))
+        (base32 "09x2sm4pgcpk14hakj4iq0zkglx1bwxlq3a5mbwc737dpwh11jba"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -51059,6 +51080,40 @@  (define-public rust-rustdoc-stripper-0.1
      "This package provides a tool to manipulate rustdoc comments.")
     (license license:asl2.0)))
 
+(define-public rust-rustfix-0.6
+  (package
+    (name "rust-rustfix")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustfix" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0apkjxv3z70vhnyz2kpwsivvndk6qk7kkp0rf7sg8pk7q1gy02vg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1))
+       #:cargo-development-inputs
+       (("rust-difference" ,rust-difference-2)
+        ("rust-duct" ,rust-duct-0.13)
+        ("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-proptest" ,rust-proptest-0.9)
+        ("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/rust-lang/rustfix")
+    (synopsis "Automatically apply the suggestions made by rustc")
+    (description
+     "Automatically apply the suggestions made by rustc.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustfix-0.5
   (package
     (name "rust-rustfix")
@@ -60554,7 +60609,7 @@  (define-public rust-tap-1
 (define-public rust-tar-0.4
   (package
     (name "rust-tar")
-    (version "0.4.26")
+    (version "0.4.36")
     (source
       (origin
         (method url-fetch)
@@ -60562,7 +60617,7 @@  (define-public rust-tar-0.4
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1lr6v3cpkfxd2lk5ll2jd8wr1xdskwj35smnh5sfb8xvzzxnn6dk"))))
+          "0iz40bd47xr69dsbckd6rv5ry2nqb2dp3z850q41pvpnmk6xk441"))))
     (build-system cargo-build-system)
     (arguments
      `(#:tests? #f      ; Test tarballs not included in crate.