unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
blob 2726348c594dec5547ca5363155548bf2e10e007 4048 bytes (raw)
name: gnu/packages/rust.scm 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 David Craven <david@craven.ch>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages rust)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bootstrap)
  #:use-module (gnu packages commencement)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages elf)
  #:use-module (gnu packages gcc)
  #:use-module (guix build-system gnu)
  #:use-module (guix download)
  #:use-module (guix packages)
  #:use-module ((guix licenses) #:prefix license:))

(define rust-bootstrap-x86_64-1.12.0
  (origin
    (method url-fetch)
    (uri (string-append
          "https://static.rust-lang.org/dist/"
          "rust-beta-x86_64-unknown-linux-gnu.tar.gz"))
    (sha256
     (base32
      "1is1k93zarvxx0h7b57ga8vr9gj34b36l9la6zkph41x33gfgpvl"))))

(define-public rustc-bootstrap
  (package
    (name "rustc-bootstrap")
    (version "1.12.0")
    (source rust-bootstrap-x86_64-1.12.0)
    (build-system gnu-build-system)
    (native-inputs
     `(("patchelf" ,patchelf)))
    (inputs
     `(("gcc-lib" ,gcc "lib")
       ("gcc-toolchain-6" ,gcc-toolchain-6)
       ("zlib" ,zlib)))
    (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"))
                   (gcc-lib (assoc-ref inputs "gcc-lib"))
                   (toolchain (assoc-ref inputs "gcc-toolchain-6"))
                   (zlib (assoc-ref inputs "zlib"))
                   (platform ,(system->rust-platform (%current-system)))
                   (ld-so (string-append (assoc-ref inputs "libc")
                                         ,(glibc-dynamic-linker))))
               (system* "bash" "install.sh"
                        (string-append "--prefix=" out)
                        (string-append "--components=rustc,"
                                       "rust-std-" platform))
               (for-each
                (lambda (file)
                  (system* "patchelf"
                           "--set-rpath"
                           (string-append out "/lib:" zlib "/lib:"
                                          gcc-lib "/lib:" toolchain "/lib")
                           file))
                (cons* (string-append out "/bin/rustc")
                       (string-append out "/bin/rustdoc")
                       (find-files out "\\.so$")))
               (for-each
                (lambda (file)
                  (system* "patchelf"
                           "--set-interpreter" ld-so
                           file))
                (list (string-append out "/bin/rustc")
                      (string-append out "/bin/rustdoc")))
               ;; Rust requires a gcc toolchain for linking. It
               ;; looks for a compiler named cc in it's path. This
               ;; can probably be configured during the build.
               (symlink (string-append toolchain "/bin/gcc")
                        (string-append out "/bin/cc"))))))))
    (home-page "https://www.rust-lang.org")
    (synopsis "Rustc bootstrap")
    (description "This package prepares the rustc binary for bootstrapping
the rustc package.")
    (license license:asl2.0)))

debug log:

solving 2726348 ...
found 2726348 in https://yhetil.org/guix-devel/20160928151538.11679-5-david@craven.ch/

applying [1/1] https://yhetil.org/guix-devel/20160928151538.11679-5-david@craven.ch/
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
new file mode 100644
index 0000000..2726348

Checking patch gnu/packages/rust.scm...
Applied patch gnu/packages/rust.scm cleanly.

index at:
100644 2726348c594dec5547ca5363155548bf2e10e007	gnu/packages/rust.scm

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).