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

Reply via email to