mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: zig-0.10: Inherit from zig-0.9.
* gnu/packages/zig.scm (zig-0.9): Expand definition. (zig-0.10): Inherit from zig-0.9. Change-Id: I36c273ac3f08982f598fa934571c1b83437cb977
This commit is contained in:
parent
1680e3c77f
commit
f0682a6388
1 changed files with 89 additions and 92 deletions
|
@ -30,10 +30,10 @@ (define-module (gnu packages zig)
|
|||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages llvm))
|
||||
|
||||
(define-public zig-0.10
|
||||
(define-public zig-0.9
|
||||
(package
|
||||
(name "zig")
|
||||
(version "0.10.1")
|
||||
(version "0.9.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -42,57 +42,66 @@ (define-public zig-0.10
|
|||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1sh5xjsksl52i4cfv1qj36sz5h0ln7cq4pdhgs3960mk8a90im7b"))
|
||||
(patches (search-patches "zig-do-not-link-against-librt.patch"))))
|
||||
(base32 "0nfvgg23sw50ksy0z0ml6lkdsvmd0278mq29m23dbb2jsirkhry7"))
|
||||
(patches (search-patches "zig-0.9-riscv-support.patch"
|
||||
"zig-use-system-paths.patch"
|
||||
"zig-do-not-link-against-librt.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs
|
||||
(list clang-15 ; Clang propagates llvm.
|
||||
lld-15
|
||||
zlib
|
||||
(list zstd "lib")))
|
||||
;; Zig compiles fine with GCC, but also needs native LLVM libraries.
|
||||
(native-inputs
|
||||
(list llvm-15))
|
||||
(arguments
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(list #$@(if (%current-target-system)
|
||||
(list (string-append "-DZIG_TARGET_TRIPLE="
|
||||
(%current-target-system)))
|
||||
'())
|
||||
"-DZIG_TARGET_MCPU=baseline"
|
||||
"-DZIG_SHARED_LLVM=ON"
|
||||
(string-append "-DZIG_LIB_DIR=" #$output "/lib/zig"))
|
||||
#:validate-runpath? #f ;TODO: zig binary can't find ld-linux.
|
||||
#:out-of-source? #f ;for tests
|
||||
'()))
|
||||
#:out-of-source? #f ; for tests
|
||||
;; There are too many unclear test failures.
|
||||
#:tests? (not (or (target-riscv64?)
|
||||
(%current-target-system)))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-env-variables
|
||||
#$@(if (target-riscv64?)
|
||||
;; It is unclear why all these tests fail to build.
|
||||
`((add-after 'unpack 'adjust-tests
|
||||
(lambda _
|
||||
(substitute* "build.zig"
|
||||
((".*addRuntimeSafetyTests.*") "")
|
||||
((".*addRunTranslatedCTests.*") ""))
|
||||
(substitute* "test/standalone.zig"
|
||||
;; These tests fail to build on riscv64-linux.
|
||||
;; They both contain 'exe.linkSystemLibrary("c");'
|
||||
((".*shared_library.*") "")
|
||||
((".*mix_o_files.*") "")
|
||||
;; ld.lld: error: undefined symbol: __tls_get_addr
|
||||
;; Is this symbol x86 only in glibc?
|
||||
((".*link_static_lib_as_system_lib.*") "")))))
|
||||
'())
|
||||
(add-after 'configure 'set-cache-dir
|
||||
(lambda _
|
||||
;; Set CC, since the stage 2 zig relies on it to find the libc
|
||||
;; installation, and otherwise silently links against its own.
|
||||
(setenv "CC" #$(cc-for-target))
|
||||
;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
|
||||
(setenv "ZIG_GLOBAL_CACHE_DIR"
|
||||
(string-append (getcwd) "/zig-cache"))))
|
||||
(add-after 'patch-source-shebangs 'patch-more-shebangs
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Zig uses information about /usr/bin/env to determine the
|
||||
;; version of glibc and other data.
|
||||
(substitute* "lib/std/zig/system/NativeTargetInfo.zig"
|
||||
(("/usr/bin/env") (search-input-file inputs "/bin/env")))))
|
||||
(delete 'check)
|
||||
(add-after 'install 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke (string-append #$output "/bin/zig")
|
||||
"build" "test"
|
||||
;; We're not testing the compiler bootstrap chain.
|
||||
"-Dskip-stage1"
|
||||
;; Testing the standard library takes >7.5GB RAM, and
|
||||
;; will fail if it is OOM-killed. The 'test-toolchain'
|
||||
;; target skips standard library and doc tests.
|
||||
"build" "test-toolchain"
|
||||
;; Stage 2 is experimental, not what we run with `zig',
|
||||
|
||||
"-Dskip-stage2-tests"
|
||||
;; Non-native tests try to link and execute non-native
|
||||
;; binaries.
|
||||
"-Dskip-non-native")))))))
|
||||
(inputs
|
||||
(list clang-13 ;Clang propagates llvm.
|
||||
lld-13))
|
||||
;; Zig compiles fine with GCC, but also needs native LLVM libraries.
|
||||
(native-inputs
|
||||
(list llvm-13))
|
||||
(native-search-paths
|
||||
(list
|
||||
(search-path-specification
|
||||
|
@ -123,11 +132,11 @@ (define-public zig-0.10
|
|||
(properties `((max-silent-time . 9600)))
|
||||
(license license:expat)))
|
||||
|
||||
(define-public zig-0.9
|
||||
(define-public zig-0.10
|
||||
(package
|
||||
(inherit zig-0.10)
|
||||
(inherit zig-0.9)
|
||||
(name "zig")
|
||||
(version "0.9.1")
|
||||
(version "0.10.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -136,64 +145,52 @@ (define-public zig-0.9
|
|||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0nfvgg23sw50ksy0z0ml6lkdsvmd0278mq29m23dbb2jsirkhry7"))
|
||||
(patches (search-patches "zig-0.9-riscv-support.patch"
|
||||
"zig-use-system-paths.patch"
|
||||
"zig-do-not-link-against-librt.patch"))))
|
||||
(inputs
|
||||
(list clang-13 ; Clang propagates llvm.
|
||||
lld-13))
|
||||
;; Zig compiles fine with GCC, but also needs native LLVM libraries.
|
||||
(native-inputs
|
||||
(list llvm-13))
|
||||
(base32 "1sh5xjsksl52i4cfv1qj36sz5h0ln7cq4pdhgs3960mk8a90im7b"))
|
||||
(patches (search-patches "zig-do-not-link-against-librt.patch"))))
|
||||
(arguments
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(list #$@(if (%current-target-system)
|
||||
(list (string-append "-DZIG_TARGET_TRIPLE="
|
||||
(%current-target-system)))
|
||||
'()))
|
||||
#:out-of-source? #f ; for tests
|
||||
;; There are too many unclear test failures.
|
||||
#:tests? (not (or (target-riscv64?)
|
||||
(%current-target-system)))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'configure 'set-cache-dir
|
||||
(lambda _
|
||||
;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
|
||||
(setenv "ZIG_GLOBAL_CACHE_DIR"
|
||||
(string-append (getcwd) "/zig-cache"))))
|
||||
(substitute-keyword-arguments (package-arguments zig-0.9)
|
||||
((#:configure-flags flags ''())
|
||||
#~(cons* "-DZIG_TARGET_MCPU=baseline"
|
||||
"-DZIG_SHARED_LLVM=ON"
|
||||
(string-append "-DZIG_LIB_DIR=" #$output "/lib/zig")
|
||||
#$flags))
|
||||
;; TODO: zig binary can't find ld-linux.
|
||||
((#:validate-runpath? _ #t) #f)
|
||||
((#:tests? _ #t) #t)
|
||||
((#:phases phases '%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
#$@(if (target-riscv64?)
|
||||
;; It is unclear why all these tests fail to build.
|
||||
`((add-after 'unpack 'adjust-tests
|
||||
(lambda _
|
||||
(substitute* "build.zig"
|
||||
((".*addRuntimeSafetyTests.*") "")
|
||||
((".*addRunTranslatedCTests.*") ""))
|
||||
(substitute* "test/standalone.zig"
|
||||
;; These tests fail to build on riscv64-linux.
|
||||
;; They both contain 'exe.linkSystemLibrary("c");'
|
||||
((".*shared_library.*") "")
|
||||
((".*mix_o_files.*") "")
|
||||
;; ld.lld: error: undefined symbol: __tls_get_addr
|
||||
;; Is this symbol x86 only in glibc?
|
||||
((".*link_static_lib_as_system_lib.*") "")))))
|
||||
`((delete 'adjust-tests))
|
||||
'())
|
||||
(delete 'check)
|
||||
(add-after 'install 'check
|
||||
(add-after 'unpack 'set-CC
|
||||
(lambda _
|
||||
;; Set CC, since the stage 2 zig relies on it to find the libc
|
||||
;; installation, and otherwise silently links against its own.
|
||||
(setenv "CC" #$(cc-for-target))))
|
||||
(add-after 'patch-source-shebangs 'patch-more-shebangs
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Zig uses information about /usr/bin/env to determine the
|
||||
;; version of glibc and other data.
|
||||
(substitute* "lib/std/zig/system/NativeTargetInfo.zig"
|
||||
(("/usr/bin/env") (search-input-file inputs "/bin/env")))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke (string-append #$output "/bin/zig")
|
||||
;; Testing the standard library takes >7.5GB RAM, and
|
||||
;; will fail if it is OOM-killed. The 'test-toolchain'
|
||||
;; target skips standard library and doc tests.
|
||||
"build" "test-toolchain"
|
||||
;; Stage 2 is experimental, not what we run with `zig',
|
||||
|
||||
"build" "test"
|
||||
;; We're not testing the compiler bootstrap chain.
|
||||
"-Dskip-stage1"
|
||||
"-Dskip-stage2-tests"
|
||||
;; Non-native tests try to link and execute non-native
|
||||
;; binaries.
|
||||
"-Dskip-non-native")))))))))
|
||||
"-Dskip-non-native"))))))))
|
||||
(inputs
|
||||
(modify-inputs (package-inputs zig-0.9)
|
||||
(prepend zlib `(,zstd "lib"))
|
||||
(replace "clang" clang-15)
|
||||
(replace "lld" lld-15)))
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs zig-0.9)
|
||||
(replace "llvm" llvm-15)))))
|
||||
|
||||
(define-public zig zig-0.10)
|
||||
|
|
Loading…
Reference in a new issue