From f0682a6388c5f96dde979cacad3339916168c790 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Mon, 23 Oct 2023 22:38:50 +0800 Subject: [PATCH] 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 --- gnu/packages/zig.scm | 181 +++++++++++++++++++++---------------------- 1 file changed, 89 insertions(+), 92 deletions(-) diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm index bc3e1c019a..08ee650d8b 100644 --- a/gnu/packages/zig.scm +++ b/gnu/packages/zig.scm @@ -30,10 +30,10 @@ #: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 @@ (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 @@ toolchain. Among other features it provides (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 @@ toolchain. Among other features it provides (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")))) - #$@(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 'check) - (add-after 'install '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', - - "-Dskip-stage2-tests" - ;; Non-native tests try to link and execute non-native - ;; binaries. - "-Dskip-non-native"))))))))) + (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?) + `((delete 'adjust-tests)) + '()) + (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") + "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")))))))) + (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)