aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2024-01-25 09:45:42 -0500
committerLudovic Courtès <ludo@gnu.org>2024-08-31 10:44:46 +0200
commitf719373583ee56bf7541fc4d5cdffeb15f1ae8c0 (patch)
tree16b1a2c61b579bfca140bbdf5364c60653be6166 /gnu
parente5ee9403af7d340545810d052659179b527fa6ce (diff)
downloadguix-f719373583ee56bf7541fc4d5cdffeb15f1ae8c0.tar.gz
guix-f719373583ee56bf7541fc4d5cdffeb15f1ae8c0.zip
gnu: make-rust-sysroot/implementation: Use gexps.
* gnu/packages/rust.scm (make-rust-sysroot/implementation): Use gexps. Change-Id: Ie35ca201c2a55f00023dad02a0d1121b6f298812
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/rust.scm227
1 files changed, 113 insertions, 114 deletions
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 7cf1498ba0..cb58a4b4b3 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1351,84 +1351,84 @@ exec -a \"$0\" \"~a\" \"$@\""
(outputs '("out"))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
- ((#:tests? _ #f) #f) ; This package for cross-building.
+ ((#:tests? _ #f) #f) ; This package for cross-building.
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'unbundle-xz
- (lambda _
- (delete-file-recursively "vendor/lzma-sys/xz-5.2")
- ;; Remove the option of using the static library.
- ;; This is necessary for building the sysroot.
- (substitute* "vendor/lzma-sys/build.rs"
- (("!want_static && ") ""))))
- ,@(if (target-mingw? target)
- `((add-after 'set-env 'patch-for-mingw
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "LIBRARY_PATH"
- (string-join
- (delete
- (string-append
- (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
- (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
- "/lib")
- (string-split (getenv "LIBRARY_PATH") #\:))
- ":"))
- (setenv "CPLUS_INCLUDE_PATH"
- (string-join
- (delete
- (string-append
- (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
- (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
- "/include")
- (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
- ":"))
- ;; When building a rust-sysroot this crate is only used for
- ;; the rust-installer.
- (substitute* "vendor/num_cpus/src/linux.rs"
- (("\\.ceil\\(\\)") ""))
- ;; gcc doesn't recognize this flag.
- (substitute*
- "compiler/rustc_target/src/spec/base/windows_gnullvm.rs"
- ((", \"--unwindlib=none\"") "")))))
- `())
- (replace 'set-env
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "SHELL" (which "sh"))
- (setenv "CONFIG_SHELL" (which "sh"))
- (setenv "CC" (which "gcc"))
- ;; The Guix LLVM package installs only shared libraries.
- (setenv "LLVM_LINK_SHARED" "1")
+ #~(modify-phases #$phases
+ (add-after 'unpack 'unbundle-xz
+ (lambda _
+ (delete-file-recursively "vendor/lzma-sys/xz-5.2")
+ ;; Remove the option of using the static library.
+ ;; This is necessary for building the sysroot.
+ (substitute* "vendor/lzma-sys/build.rs"
+ (("!want_static && ") ""))))
+ #$@(if (target-mingw? target)
+ `((add-after 'set-env 'patch-for-mingw
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "LIBRARY_PATH"
+ (string-join
+ (delete
+ (string-append
+ (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
+ (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
+ "/lib")
+ (string-split (getenv "LIBRARY_PATH") #\:))
+ ":"))
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-join
+ (delete
+ (string-append
+ (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
+ (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
+ "/include")
+ (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
+ ":"))
+ ;; When building a rust-sysroot this crate is only used for
+ ;; the rust-installer.
+ (substitute* "vendor/num_cpus/src/linux.rs"
+ (("\\.ceil\\(\\)") ""))
+ ;; gcc doesn't recognize this flag.
+ (substitute*
+ "compiler/rustc_target/src/spec/base/windows_gnullvm.rs"
+ ((", \"--unwindlib=none\"") "")))))
+ `())
+ (replace 'set-env
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "SHELL" (which "sh"))
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (setenv "CC" (which "gcc"))
+ ;; The Guix LLVM package installs only shared libraries.
+ (setenv "LLVM_LINK_SHARED" "1")
- (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
- (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
- (when (assoc-ref inputs (string-append "glibc-cross-" ,target))
- (setenv "LIBRARY_PATH"
- (string-join
+ (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+ (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
+ (when (assoc-ref inputs (string-append "glibc-cross-" #$target))
+ (setenv "LIBRARY_PATH"
+ (string-join
(delete
- (string-append
- (assoc-ref inputs
- (string-append "glibc-cross-" ,target))
- "/lib")
- (string-split (getenv "LIBRARY_PATH") #\:))
+ (string-append
+ (assoc-ref inputs
+ (string-append "glibc-cross-" #$target))
+ "/lib")
+ (string-split (getenv "LIBRARY_PATH") #\:))
":"))
- (setenv "CPLUS_INCLUDE_PATH"
- (string-join
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-join
(delete
- (string-append
- (assoc-ref inputs
- (string-append "glibc-cross-" ,target))
- "/include")
- (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
+ (string-append
+ (assoc-ref inputs
+ (string-append "glibc-cross-" #$target))
+ "/include")
+ (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
":")))))
- (replace 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (target-cc
- (search-input-file
- inputs (string-append "/bin/" ,(cc-for-target target)))))
- (call-with-output-file "config.toml"
- (lambda (port)
- (display (string-append "
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (target-cc
+ (search-input-file
+ inputs (string-append "/bin/" #$(cc-for-target target)))))
+ (call-with-output-file "config.toml"
+ (lambda (port)
+ (display (string-append "
[llvm]
[build]
cargo = \"" (search-input-file inputs "/bin/cargo") "\"
@@ -1437,7 +1437,7 @@ docs = false
python = \"" (which "python") "\"
vendor = true
submodules = false
-target = [\"" ,(platform-rust-target (lookup-platform-by-target target)) "\"]
+target = [\"" #$(platform-rust-target (lookup-platform-by-target target)) "\"]
[install]
prefix = \"" out "\"
sysconfdir = \"etc\"
@@ -1446,65 +1446,64 @@ debug = false
jemalloc = false
default-linker = \"" target-cc "\"
channel = \"stable\"
-[target." ,(platform-rust-target (lookup-platform-by-system (%current-system))) "]
+[target." #$(platform-rust-target (lookup-platform-by-system (%current-system))) "]
# These are all native tools
llvm-config = \"" (search-input-file inputs "/bin/llvm-config") "\"
linker = \"" (which "gcc") "\"
cc = \"" (which "gcc") "\"
cxx = \"" (which "g++") "\"
ar = \"" (which "ar") "\"
-[target." ,(platform-rust-target (lookup-platform-by-target target)) "]
+[target." #$(platform-rust-target (lookup-platform-by-target target)) "]
llvm-config = \"" (search-input-file inputs "/bin/llvm-config") "\"
linker = \"" target-cc "\"
cc = \"" target-cc "\"
-cxx = \"" (search-input-file inputs (string-append "/bin/" ,(cxx-for-target target))) "\"
-ar = \"" (search-input-file inputs (string-append "/bin/" ,(ar-for-target target))) "\"
+cxx = \"" (search-input-file inputs (string-append "/bin/" #$(cxx-for-target target))) "\"
+ar = \"" (search-input-file inputs (string-append "/bin/" #$(ar-for-target target))) "\"
[dist]
") port))))))
- (replace 'build
- ;; Phase overridden to build the necessary directories.
- (lambda* (#:key parallel-build? #:allow-other-keys)
- (let ((job-spec (string-append
- "-j" (if parallel-build?
- (number->string (parallel-job-count))
- "1"))))
- ;; This works for us with the --sysroot flag
- ;; and then we can build ONLY library/std
- (invoke "./x.py" job-spec "build" "library/std"))))
- (replace 'install
- (lambda _
- (invoke "./x.py" "install" "library/std")))
- (delete 'install-rust-src)
- (delete 'wrap-rust-analyzer)
- (delete 'wrap-rustc)))))
+ (replace 'build
+ ;; Phase overridden to build the necessary directories.
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (let ((job-spec (string-append
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))))
+ ;; This works for us with the --sysroot flag
+ ;; and then we can build ONLY library/std
+ (invoke "./x.py" job-spec "build" "library/std"))))
+ (replace 'install
+ (lambda _
+ (invoke "./x.py" "install" "library/std")))
+ (delete 'install-rust-src)
+ (delete 'wrap-rust-analyzer)
+ (delete 'wrap-rustc)))))
(inputs
(modify-inputs (package-inputs base-rust)
- (prepend xz))) ; for lzma-sys
+ (prepend xz))) ; for lzma-sys
(propagated-inputs
(if (target-mingw? target)
- (modify-inputs (package-propagated-inputs base-rust)
- (prepend
- (if (string=? "i686-w64-mingw32" target)
- mingw-w64-i686-winpthreads
- mingw-w64-x86_64-winpthreads)))
- (package-propagated-inputs base-rust)))
+ (modify-inputs (package-propagated-inputs base-rust)
+ (prepend
+ (if (string=? "i686-w64-mingw32" target)
+ mingw-w64-i686-winpthreads
+ mingw-w64-x86_64-winpthreads)))
+ (package-propagated-inputs base-rust)))
(native-inputs
(if (target-mingw? target)
- (modify-inputs (package-native-inputs base-rust)
- (prepend (cross-gcc target
- #:libc (cross-libc target))
- (cross-binutils target)
- (if (string=? "i686-w64-mingw32" target)
- mingw-w64-i686-winpthreads
- mingw-w64-x86_64-winpthreads)))
- (modify-inputs (package-native-inputs base-rust)
- (prepend (cross-gcc target
- #:libc (cross-libc target))
- (cross-libc target)
- (cross-binutils target)))))
+ (modify-inputs (package-native-inputs base-rust)
+ (prepend (cross-gcc target
+ #:libc (cross-libc target))
+ (cross-binutils target)
+ (if (string=? "i686-w64-mingw32" target)
+ mingw-w64-i686-winpthreads
+ mingw-w64-x86_64-winpthreads)))
+ (modify-inputs (package-native-inputs base-rust)
+ (prepend (cross-gcc target
+ #:libc (cross-libc target))
+ (cross-libc target)
+ (cross-binutils target)))))
(properties
- `((hidden? . #t)
- ,(package-properties base-rust))))))
+ `((hidden? . #t) ,(package-properties base-rust))))))
(define-public rust-analyzer
(package