gnu: rustc: Retain binutils.

* gnu/packages/rust.scm (rustc)[arguments]: Retain binutils. Add
  wrap-rustc phase.

Problem reported by Ben Woodcroft <donttrustben@gmail.com>.
This commit is contained in:
David Craven 2017-01-09 12:31:31 +01:00
parent 834458f6ff
commit 5d18d776d2
No known key found for this signature in database
GPG Key ID: C5E051C79C0BECDB
1 changed files with 12 additions and 2 deletions

View File

@ -241,6 +241,7 @@ rustc-bootstrap and cargo-bootstrap packages.")
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(gcc (assoc-ref inputs "gcc")) (gcc (assoc-ref inputs "gcc"))
(binutils (assoc-ref inputs "binutils"))
(python (assoc-ref inputs "python-2")) (python (assoc-ref inputs "python-2"))
(rustc (assoc-ref inputs "rustc-bootstrap")) (rustc (assoc-ref inputs "rustc-bootstrap"))
(llvm (assoc-ref inputs "llvm")) (llvm (assoc-ref inputs "llvm"))
@ -250,7 +251,7 @@ rustc-bootstrap and cargo-bootstrap packages.")
(string-append "--datadir=" out "/share") (string-append "--datadir=" out "/share")
(string-append "--infodir=" out "/share/info") (string-append "--infodir=" out "/share/info")
(string-append "--default-linker=" gcc "/bin/gcc") (string-append "--default-linker=" gcc "/bin/gcc")
(string-append "--default-ar=" gcc "/bin/ar") (string-append "--default-ar=" binutils "/bin/ar")
(string-append "--python=" python "/bin/python2") (string-append "--python=" python "/bin/python2")
(string-append "--local-rust-root=" rustc) (string-append "--local-rust-root=" rustc)
(string-append "--llvm-root=" llvm) (string-append "--llvm-root=" llvm)
@ -261,7 +262,16 @@ rustc-bootstrap and cargo-bootstrap packages.")
;;"--enable-rustbuild" ;;"--enable-rustbuild"
"--disable-manage-submodules"))) "--disable-manage-submodules")))
;; Rust uses a custom configure script (no autoconf). ;; Rust uses a custom configure script (no autoconf).
(zero? (apply system* "./configure" flags)))))))) (zero? (apply system* "./configure" flags)))))
(add-after 'install 'wrap-rustc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc"))
(ld-wrapper (assoc-ref inputs "ld-wrapper")))
;; Let gcc find ld and libc startup files.
(wrap-program (string-append out "/bin/rustc")
`("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
`("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))))))))
(synopsis "Compiler for the Rust progamming language") (synopsis "Compiler for the Rust progamming language")
(description "Rust is a systems programming language that provides memory (description "Rust is a systems programming language that provides memory
safety and thread safety guarantees.") safety and thread safety guarantees.")