[PATCH 0/4] Finish rust bootstrapping.

  • Done
  • quality assurance status badge
Details
2 participants
  • Danny Milosavljevic
  • Ludovic Courtès
Owner
unassigned
Submitted by
Danny Milosavljevic
Severity
normal

Debbugs page

Danny Milosavljevic wrote 6 years ago
(address . guix-patches@gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20180924144747.22338-1-dannym@scratchpost.org
Danny Milosavljevic (4):
gnu: rust: Hide "ar" entry from rust@1.21.0.
gnu: rust@1.23.0: Bootstrap by rust@1.22.0.
gnu: rust@1.23.0: Use rust-bootstrapped-package.
gnu: rust: Remove binary bootstrapper.

gnu/packages/rust.scm | 142 +++++++++---------------------------------
1 file changed, 30 insertions(+), 112 deletions(-)
Danny Milosavljevic wrote 6 years ago
[PATCH 2/4] gnu: rust@1.23.0: Bootstrap by rust@1.22.0.
(address . 32822@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20180924150134.26799-2-dannym@scratchpost.org
* gnu/packages/rust.scm (rust-1.23)[inherit]: Inherit from rust-1.22.
[native-inputs]: Replace rust-bootstrap by rust-1.22.
[arguments]: Inherit from rust-1.22. Delete "remove-ar" phase.
---
gnu/packages/rust.scm | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index a1ad6534e..2e51c4a5b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -657,7 +657,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(define-public rust-1.23
(package
- (inherit rust-1.20)
+ (inherit rust-1.22)
(name "rust")
(version "1.23.0")
(source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
@@ -669,15 +669,16 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
("git" ,git)
("procps" ,procps) ; For the tests
("python-2" ,python-2)
- ("rustc-bootstrap" ,rust-bootstrap)
- ("cargo-bootstrap" ,rust-bootstrap "cargo")
+ ("rustc-bootstrap" ,rust-1.22)
+ ("cargo-bootstrap" ,rust-1.22 "cargo")
("pkg-config" ,pkg-config) ; For "cargo"
("which" ,which)))
(arguments
- (substitute-keyword-arguments (package-arguments rust-1.20)
+ (substitute-keyword-arguments (package-arguments rust-1.22)
((#:phases phases)
`(modify-phases ,phases
(delete 'configure-archiver)
+ (delete 'remove-ar)
(add-after 'unpack 'dont-build-native
(lambda _
;; XXX: Revisit this when we use gcc 6.
Danny Milosavljevic wrote 6 years ago
[PATCH 1/4] gnu: rust: Hide "ar" entry from rust@1.21.0.
(address . 32822@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20180924150134.26799-1-dannym@scratchpost.org
* gnu/packages/rust.scm (rust-1.21)[arguments]<#:phases>[remove-ar]: New
phase.
---
gnu/packages/rust.scm | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

Toggle diff (27 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 40633854a..a1ad6534e 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -636,8 +636,20 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
#t))))))))))
(define-public rust-1.21
- (rust-bootstrapped-package rust-1.20 "1.21.0"
- "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))
+ (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0"
+ "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp")))
+ (package
+ (inherit base-rust)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'configure 'remove-ar
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Remove because toml complains about "unknown field".
+ (substitute* "config.toml"
+ (("^ar =.*") "\n"))
+ #t)))))))))
(define-public rust-1.22
(rust-bootstrapped-package rust-1.21 "1.22.1"
Danny Milosavljevic wrote 6 years ago
[PATCH 3/4] gnu: rust@1.23.0: Use rust-bootstrapped-package.
(address . 32822@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20180924150134.26799-3-dannym@scratchpost.org
* gnu/packages/rust.scm (rust-1.23): Use rust-bootstrapped-package.
---
gnu/packages/rust.scm | 45 +++++++++++++++----------------------------
1 file changed, 16 insertions(+), 29 deletions(-)

Toggle diff (56 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 2e51c4a5b..37c30c14e 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -656,35 +656,22 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
"1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
(define-public rust-1.23
- (package
- (inherit rust-1.22)
- (name "rust")
- (version "1.23.0")
- (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
- (native-inputs
- `(("bison" ,bison) ; For the tests
- ("cmake" ,cmake)
- ("flex" ,flex) ; For the tests
- ("gdb" ,gdb) ; For the tests
- ("git" ,git)
- ("procps" ,procps) ; For the tests
- ("python-2" ,python-2)
- ("rustc-bootstrap" ,rust-1.22)
- ("cargo-bootstrap" ,rust-1.22 "cargo")
- ("pkg-config" ,pkg-config) ; For "cargo"
- ("which" ,which)))
- (arguments
- (substitute-keyword-arguments (package-arguments rust-1.22)
- ((#:phases phases)
- `(modify-phases ,phases
- (delete 'configure-archiver)
- (delete 'remove-ar)
- (add-after 'unpack 'dont-build-native
- (lambda _
- ;; XXX: Revisit this when we use gcc 6.
- (substitute* "src/binaryen/CMakeLists.txt"
- (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") ""))
- #t))))))))
+ (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0"
+ "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l")))
+ (package
+ (inherit base-rust)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (delete 'configure-archiver)
+ (delete 'remove-ar)
+ (add-after 'unpack 'dont-build-native
+ (lambda _
+ ;; XXX: Revisit this when we use gcc 6.
+ (substitute* "src/binaryen/CMakeLists.txt"
+ (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") ""))
+ #t)))))))))
(define-public rust-1.24
(let ((base-rust
Danny Milosavljevic wrote 6 years ago
[PATCH 4/4] gnu: rust: Remove binary bootstrapper.
(address . 32822@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20180924150134.26799-4-dannym@scratchpost.org
* gnu/packages/rust.scm (rust-bootstrap): Delete variable.
---
gnu/packages/rust.scm | 82 -------------------------------------------
1 file changed, 82 deletions(-)

Toggle diff (93 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 37c30c14e..e30e8a61a 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -69,88 +69,6 @@
("mips64el-linux" "mips64el-unknown-linux-gnuabi64")
(_ (nix-system->gnu-triplet system))))
-(define rust-bootstrap
- (package
- (name "rust-bootstrap")
- (version "1.22.1")
- (source #f)
- (build-system gnu-build-system)
- (native-inputs
- `(("patchelf" ,patchelf)))
- (inputs
- `(("gcc" ,(canonical-package gcc))
- ("gcc:lib" ,(canonical-package gcc) "lib")
- ("zlib" ,zlib)
- ("source"
- ,(origin
- (method url-fetch)
- (uri (string-append
- "https://static.rust-lang.org/dist/"
- "rust-" version "-" (nix-system->gnu-triplet-for-rust)
- ".tar.gz"))
- (sha256
- (base32
- (match (nix-system->gnu-triplet-for-rust)
- ("i686-unknown-linux-gnu"
- "15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr")
- ("x86_64-unknown-linux-gnu"
- "1yll78x6b3abnvgjf2b66gvp6mmcb9y9jdiqcwhmgc0z0i0fix4c")
- ("armv7-unknown-linux-gnueabihf"
- "138a8l528kzp5wyk1mgjaxs304ac5ms8vlpq0ggjaznm6bn2j7a5")
- ("aarch64-unknown-linux-gnu"
- "0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8")
- ("mips64el-unknown-linux-gnuabi64"
- "07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2")
- (_ ""))))))))
- (outputs '("out" "cargo"))
- (arguments
- `(#:tests? #f
- #:strip-binaries? #f
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (cargo-out (assoc-ref outputs "cargo"))
- (gcc:lib (assoc-ref inputs "gcc:lib"))
- (libc (assoc-ref inputs "libc"))
- (zlib (assoc-ref inputs "zlib"))
- (ld-so (string-append libc ,(glibc-dynamic-linker)))
- (rpath (string-append out "/lib:" zlib "/lib:"
- libc "/lib:" gcc:lib "/lib"))
- (cargo-rpath (string-append cargo-out "/lib:" libc "/lib:"
- gcc:lib "/lib"))
- (rustc (string-append out "/bin/rustc"))
- (rustdoc (string-append out "/bin/rustdoc"))
- (cargo (string-append cargo-out "/bin/cargo"))
- (gcc (assoc-ref inputs "gcc")))
- ;; Install rustc/rustdoc.
- (invoke "bash" "install.sh"
- (string-append "--prefix=" out)
- (string-append "--components=rustc,"
- "rust-std-"
- ,(nix-system->gnu-triplet-for-rust)))
- ;; Install cargo.
- (invoke "bash" "install.sh"
- (string-append "--prefix=" cargo-out)
- (string-append "--components=cargo"))
- (for-each (lambda (file)
- (invoke "patchelf" "--set-rpath" rpath file))
- (cons* rustc rustdoc (find-files out "\\.so$")))
- (invoke "patchelf" "--set-rpath" cargo-rpath cargo)
- (for-each (lambda (file)
- (invoke "patchelf" "--set-interpreter" ld-so file))
- (list rustc rustdoc cargo))
- #t))))))
- (home-page "https://www.rust-lang.org")
- (synopsis "Prebuilt rust compiler and cargo package manager")
- (description "This package provides a pre-built @command{rustc} compiler
-and a pre-built @command{cargo} package manager, which can
-in turn be used to build the final Rust.")
- (license license:asl2.0)))
-
(define* (rust-source version hash #:key (patches '()))
(origin
Ludovic Courtès wrote 6 years ago
Re: [bug#32822] [PATCH 0/4] Finish rust bootstrapping.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 32822@debbugs.gnu.org)
87y3bqsn2q.fsf@gnu.org
Hi Danny,

Danny Milosavljevic <dannym@scratchpost.org> skribis:

Toggle quote (6 lines)
> Danny Milosavljevic (4):
> gnu: rust: Hide "ar" entry from rust@1.21.0.
> gnu: rust@1.23.0: Bootstrap by rust@1.22.0.
> gnu: rust@1.23.0: Use rust-bootstrapped-package.
> gnu: rust: Remove binary bootstrapper.

Do I get it right that mrustc is capable enough to build Rust 1.19, and
from there on we have the full chain?

That sounds really exciting! And worth a blog post :-), if only to
share with those who care about building from source: #bootstrappable,
Debian, and other reproducible build people.

FWIW the patches LGTM. I suppose you could push them to wip-rust, then
we let hydra and berlin build it, and once it’s built (could be 36h
later?) we merge into master.

WDYT?

Thank you!

Ludo’.
Danny Milosavljevic wrote 6 years ago
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 32822@debbugs.gnu.org)
20180925100149.0e481122@scratchpost.org
Hi Ludo,

On Mon, 24 Sep 2018 21:38:21 +0200
ludo@gnu.org (Ludovic Courtès) wrote:

Toggle quote (11 lines)
> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>
> > Danny Milosavljevic (4):
> > gnu: rust: Hide "ar" entry from rust@1.21.0.
> > gnu: rust@1.23.0: Bootstrap by rust@1.22.0.
> > gnu: rust@1.23.0: Use rust-bootstrapped-package.
> > gnu: rust: Remove binary bootstrapper.
>
> Do I get it right that mrustc is capable enough to build Rust 1.19, and
> from there on we have the full chain?

Yes (except for MIPS, where mrustc doesn't have the target settings in
upstreeam - but I do, but untested).

Toggle quote (4 lines)
> That sounds really exciting! And worth a blog post :-), if only to
> share with those who care about building from source: #bootstrappable,
> Debian, and other reproducible build people.

Sure. Should I just E-Mail the text or how do I get it into the blog?

Toggle quote (4 lines)
> FWIW the patches LGTM. I suppose you could push them to wip-rust, then
> we let hydra and berlin build it, and once it’s built (could be 36h
> later?) we merge into master.

Okay. I've pushed them to wip-rust. How do we make hydra and berlin build it?
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAlup620ACgkQ5xo1VCww
uqXBCwgAh9HPvLqrhh4k8hTlXlUSyR24GDpmJTmZGdY014P/YPzH3PvUoLGkg/zg
Ch1oknGNXHh6J7CbhMH/b/NvWUMnGgM1q9GwirPQeGwyHO0X+Kfsd9sk/BdNTt50
tb4KFWJ+B1ZciFIxakBXfJ0qPUopKUH8r476thmlSclL7QNAxM3VQbOkiMPIWjPV
UDEdryA38i3Dj9is+1C4b1IUx2j45luiFBH0jyKMaMT+EY3mhCZ4zXoF0xzYI1ud
BrOxU+z3Prl0e6jBVIngT9TCjvC2jpSsiefIIlTGJm6l/f8YgfB+llQIwobLFzEJ
nVN8dk3cLLN1eFigICJzyDpVyLdXcA==
=k4KX
-----END PGP SIGNATURE-----


Ludovic Courtès wrote 6 years ago
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 32822@debbugs.gnu.org)
87h8id4mrk.fsf@gnu.org
Hello,

Danny Milosavljevic <dannym@scratchpost.org> skribis:

Toggle quote (17 lines)
> On Mon, 24 Sep 2018 21:38:21 +0200
> ludo@gnu.org (Ludovic Courtès) wrote:
>
>> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>>
>> > Danny Milosavljevic (4):
>> > gnu: rust: Hide "ar" entry from rust@1.21.0.
>> > gnu: rust@1.23.0: Bootstrap by rust@1.22.0.
>> > gnu: rust@1.23.0: Use rust-bootstrapped-package.
>> > gnu: rust: Remove binary bootstrapper.
>>
>> Do I get it right that mrustc is capable enough to build Rust 1.19, and
>> from there on we have the full chain?
>
> Yes (except for MIPS, where mrustc doesn't have the target settings in
> upstreeam - but I do, but untested).

Woohoo! Impressive.

Toggle quote (6 lines)
>> That sounds really exciting! And worth a blog post :-), if only to
>> share with those who care about building from source: #bootstrappable,
>> Debian, and other reproducible build people.
>
> Sure. Should I just E-Mail the text or how do I get it into the blog?

You can send a .md file or a patch against guix-artwork.git (under
website/posts) to guix-blog@gnu.org for feedback (though currently it’s
just Jelle, Ricardo, and myself IIRC.) And then you can push to
guix-artwork.git and I can do the CVS dance to put it on-line.

Toggle quote (6 lines)
>> FWIW the patches LGTM. I suppose you could push them to wip-rust, then
>> we let hydra and berlin build it, and once it’s built (could be 36h
>> later?) we merge into master.
>
> Okay. I've pushed them to wip-rust. How do we make hydra and berlin build it?

If I didn’t make any mistake it should show up at:


Thanks for all the work!

Ludo’.
Danny Milosavljevic wrote 6 years ago
(no subject)
(address . control@debbugs.gnu.org)
20190210221557.43523693@scratchpost.org
close 32822
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAlxglI0ACgkQ5xo1VCww
uqW0kQf+IhRfBl8YFraeAhF3tmZn/cycvWzFNkRQOkbcHjin4eMHHeYowZrUxwRs
OACery7zL8IAlTiZVE6f0UwWX6CKyrkHEuRLZqlfpSBVcJOaxEHwJsD/LHHh/eS6
GQqIQOsFQQ3PiCtWFL2ehwffMTuvxPliHfJVkRjP89V8OGTcK27GksfrFHyjTfiY
xP7dqCbEL+ALu/Pk/k4FDnoCY8A5uqEKKBWBcyo3gizv7DknbBSO3zvRaInUOdr8
GM1AvGIQqojwzaAxpkh03alRzK5Xtf0w4nHEo51funQ83//NHDvTBnBCJg4FLRS9
P3P0Y9r8d+kKK3D4BNjn/+mNI/bnCw==
=8b1B
-----END PGP SIGNATURE-----


?
Your comment

This issue is archived.

To comment on this conversation send an email to 32822@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 32822
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help