hako pushed a commit to branch wip-zig-bootstrap
in repository guix.
commit 45419fdc5d7a8a74ed9bea363bed77db6441becb
Author: Hilton Chain <[email protected]>
AuthorDate: Mon Nov 18 08:59:57 2024 +0800
FIXME: DRAFT: gnu: zig: Build reproducibly.
--8<---------------cut here---------------start------------->8---
[100%] Building stage3
/tmp/guix-build-zig-0.13.0.drv-0/source/zig2 build --prefix
/tmp/guix-build-zig-0.13.0.drv-0/source/stage3 --zig-lib-dir
/tmp/guix-build-zig-0.13.0.drv-0/source/lib -Dversion-string=0.13.0
-Dtarget=x86_64-linux-gnu -Dcpu=baseline -Denable-llvm
-Dconfig_h=/tmp/guix-build-zig-0.13.0.drv-0/source/config.h -Dno-langref
-Dstd-docs=false -Doptimize=ReleaseFast
install
+- install zig
+- zig build-exe zig ReleaseFast x86_64-linux-gnu 2 errors
error: ld.lld: undefined symbol: __libc_single_threaded
note: referenced by ErrorHandler.cpp.o:(.text.__tcf_0+0x3D) in archive
/gnu/store/5nhfsjr5kx20jwfj2snx0b7mnp829m71-lld-18.1.8/lib/liblldCommon.a
note: referenced by ErrorHandler.cpp.o:(std::__cxx11::basic_regex<char,
std::__cxx11::regex_traits<char>>::~basic_regex()) in archive
/gnu/store/5nhfsjr5kx20jwfj2snx0b7mnp829m71-lld-18.1.8/lib/liblldCommon.a
note: referenced by
Driver.cpp.o:(std::_Sp_counted_ptr_inplace<std::future<std::pair<std::unique_ptr<llvm::MemoryBuffer,
std::default_delete<llvm::MemoryBuffer>>, std::error_code>>,
std::allocator<std::future<std::pair<std::unique_ptr<llvm::MemoryBuffer,
std::default_delete<llvm::MemoryBuffer>>, std::error_code>>>,
(__gnu_cxx::_Lock_policy)2>::_M_dispose()) in archive
/gnu/store/5nhfsjr5kx20jwfj2snx0b7mnp829m71-lld-18.1.8/lib/liblldCOFF.a
note: referenced 189 more times
error: ld.lld: undefined symbol: __isoc23_strtol
note: referenced by stdlib.h:483
(/gnu/store/zvlp3n8iwa1svxmwv4q22pv1pb1c9pjq-glibc-2.39/include/stdlib.h:483)
note: zig_llvm.cpp.o:(ZigLLVMTargetMachineEmitToFile) in
archive /tmp/guix-build-zig-0.13.0.drv-0/source/zigcpp/libzigcpp.a
--8<---------------cut here---------------end--------------->8---
TODO: Add this to zig-0.10 instead.
* gnu/packages/zig.scm (zig-0.13)[arguments]<#:configure-flags>: Set
ZIG_TARGET_TRIPLE.
* guix/build/zig-build-system.scm: Export zig-target.
* guix/build-system/zig.scm: Export %zig-build-system-modules.
Change-Id: I022b5f099c004c6fb659a75ff1f85e4b88dc0a24
---
gnu/packages/zig.scm | 21 +++++++++++++++++++++
guix/build-system/zig.scm | 3 ++-
guix/build/zig-build-system.scm | 3 ++-
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index c76bdcc256..60a24a24e9 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -22,11 +22,13 @@
(define-module (gnu packages zig)
#:use-module (guix gexp)
#:use-module (guix packages)
+ #:use-module (guix platform)
#:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system zig)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages gcc)
@@ -1480,6 +1482,25 @@ toolchain. Among other features it provides
"zig-0.12-fix-runpath.patch"
"zig-0.12-use-baseline-cpu-by-default.patch"
"zig-0.12-use-system-paths.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments zig-0.12)
+ ((#:imported-modules _ '())
+ (append %cmake-build-system-modules
+ %zig-build-system-modules))
+ ((#:modules _ '())
+ (append '((guix build zig-build-system))
+ '((guix build cmake-build-system)
+ (guix build utils))))
+ ((#:configure-flags flags #~'())
+ #~(cons* "-DZIG_USE_LLVM_CONFIG=ON"
+ (string-append
+ "-DZIG_TARGET_TRIPLE="
+ (zig-target
+ #$(platform-target
+ (lookup-platform-by-target-or-system
+ (or (%current-target-system)
+ (%current-system))))))
+ #$flags))))
(inputs
(modify-inputs (package-inputs zig-0.12)
(replace "clang" clang-18)
diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm
index 32eaff3a51..c08ec9dd9d 100644
--- a/guix/build-system/zig.scm
+++ b/guix/build-system/zig.scm
@@ -28,7 +28,8 @@
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26)
- #:export (zig-build-system))
+ #:export (%zig-build-system-modules
+ zig-build-system))
(define (default-zig)
diff --git a/guix/build/zig-build-system.scm b/guix/build/zig-build-system.scm
index f54c7aba7b..20dd6db99d 100644
--- a/guix/build/zig-build-system.scm
+++ b/guix/build/zig-build-system.scm
@@ -28,7 +28,8 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
- zig-build))
+ zig-build
+ zig-target))
;; Interesting guide here:
;; https://github.com/riverwm/river/blob/master/PACKAGING.md