[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
23/60: gnu: tcc-boot: Update to 0.9.27.1139-8cd21e9.
From: |
guix-commits |
Subject: |
23/60: gnu: tcc-boot: Update to 0.9.27.1139-8cd21e9. |
Date: |
Sun, 24 Nov 2024 02:50:12 -0500 (EST) |
efraim pushed a commit to branch wip-riscv-bootstrap
in repository guix.
commit 73c2dc9d5b08613e8269a4f93372ef6b96f45865
Author: Ekaitz Zarraga <ekaitz@elenq.tech>
AuthorDate: Tue Oct 1 23:04:17 2024 +0300
gnu: tcc-boot: Update to 0.9.27.1139-8cd21e9.
* gnu/packages/commencement.scm (tcc-boot0)
[native-inputs]: Remove mes-boot.
[arguments]: Adjust the 'scripted-patch phase for changes in the code.
Adjust the 'configure phase to create a minimal config.h to enable
building. Adjust the compile flags passed in the 'build phase. Add the
'build-libtcc1.a and 'rebuild-libraries phases. Replace the 'install
phase with a manual install phase.
Co-authored-by: Efraim Flashner <efraim@flashner.co.il>
Change-Id: I81f4105a8f925943cd49e842dd8ae32f2eba45e0
---
gnu/packages/commencement.scm | 174 ++++++++++++++++++++++--------------------
1 file changed, 92 insertions(+), 82 deletions(-)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index afd5330f91..2522b4e8e3 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -708,23 +708,30 @@ MesCC-Tools), and finally M2-Planet.")
,@(%boot-gash-inputs)))
(define tcc-boot
- ;; The final tcc.
+ (let ((commit "8cd21e91ccee3baf15ad2f8cba9cbc4b618695a0")
+ (revision "1139")
+ (mes-system
+ (cond ((target-x86-32?) "x86")
+ ((target-x86-64?) "x86_64")
+ ((target-aarch64?) "aarch64")
+ ((target-riscv64?) "riscv64")
+ (#t ""))))
(package
(inherit tcc-boot0)
(name "tcc-boot")
- (version "0.9.27")
+ (version (string-append "0.9.27" "." revision "-" (string-take commit 7)))
(source (origin
(method url-fetch)
- (uri (string-append "mirror://savannah/tinycc/tcc-"
- version ".tar.bz2"))
+ (uri (string-append "https://repo.or.cz/tinycc.git/snapshot/";
+ commit ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "177bdhwzrnqgyrdv1dwvpd04fcxj68s5pm1dzwny6359ziway8yy"))))
+ "1nrv5ggcsczkw2vib4551c89rwzylf669z178yzm5agnm479cy8j"))))
(build-system gnu-build-system)
(inputs '())
(propagated-inputs '())
- (native-inputs `(("mes" ,mes-boot)
- ,@(%boot-tcc0-inputs)))
+ (native-inputs (%boot-tcc0-inputs))
(arguments
`(#:implicit-inputs? #f
#:guile ,%bootstrap-guile
@@ -735,103 +742,106 @@ MesCC-Tools), and finally M2-Planet.")
(add-after 'unpack 'scripted-patch
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "libtcc.c"
- (("s->alacarte_link = 1;" all)
- (string-append all "
- s->static_link = 1;")))))
+ (("s->nocommon = 1;" all)
+ (string-append all "\ns->static_link = 1;")))))
+ ;; Gash doesn't play well with passing flags to the configure script.
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref %outputs "out"))
- (tcc (assoc-ref %build-inputs "tcc"))
- (libc (assoc-ref %build-inputs "libc"))
- (interpreter "/mes/loader"))
- (invoke "sh" "configure"
- (string-append "--cc=tcc")
- (string-append
- "--cpu=" (car (string-split
- ,(commencement-build-target) #\-)))
- (string-append "--prefix=" out)
- (string-append "--elfinterp=" interpreter)
- (string-append "--crtprefix=" tcc "/lib")
- (string-append "--sysincludepaths=" tcc "/include")
- (string-append "--libpaths=" tcc "/lib")))))
+ (call-with-output-file
+ "config.h"
+ (lambda (port)
+ (display "#define TCC_VERSION \"0.9.28rc\" " port)))))
+
(replace 'build
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref %outputs "out"))
- (tcc (assoc-ref %build-inputs "tcc"))
- (libc (assoc-ref %build-inputs "libc"))
- (interpreter "/mes/loader"))
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (tcc (assoc-ref inputs "tcc"))
+ (libc (assoc-ref inputs "libc"))
+ (interpreter "/mes/loader"))
(invoke
"tcc"
"-vvv"
- "-D" "BOOTSTRAP=1"
"-D" "ONE_SOURCE=1"
"-D" "CONFIG_TCC_STATIC=1"
"-D" "CONFIG_USE_LIBGCC=1"
+ "-D" "CONFIG_TCC_SEMLOCK=0"
"-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"")
"-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out
"/lib:{B}/lib:.\"")
- "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out
"/lib:{B}/lib:.\"")
"-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"")
- "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc
"/lib:{B}/lib:.\"")
+ "-D" (string-append "CONFIG_TCC_LIBPATHS=\""
+ tcc "/lib:"
+ out "/lib:"
+ "{B}/lib:.\"")
"-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\""
- tcc "/include" ":/include:{B}/include\"")
+ tcc "/include:"
+ out "/include:"
+ "{B}/include\"")
"-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"")
"-o" "tcc"
"tcc.c"))))
+ (add-after 'build 'build-libtcc1.a
+ (lambda _
+ (invoke "./tcc"
+ "-g" "-vvv"
+ "-I" "include"
+ "-c" "-o" "libtcc1.o" "lib/libtcc1.c")
+ (cond
+ (,(or (target-aarch64?)
+ (target-riscv64?))
+ (invoke "./tcc"
+ "-g" "-vvv"
+ "-I" "include"
+ "-c" "-o" "lib-arm64.o" "lib/lib-arm64.c")
+ (invoke "./tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o"
"lib-arm64.o"))
+ (else
+ (invoke "./tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o")))))
+ (add-after 'build-libtcc1.a 'rebuild-libraries
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((tcc (assoc-ref inputs "tcc"))
+ (flags (list "-I" (string-append tcc "/include")
+ "-I" (string-append tcc "/include/linux/"
,mes-system)
+ "-I" "include")))
+ (apply invoke "./tcc" "-g" "-vvv"
+ "-c" "-o" "libc.o"
+ (string-append tcc "/share/libc.c")
+ flags)
+ (invoke "./tcc" "-ar" "rc" "libc.a" "libc.o")
+ (apply invoke "./tcc" "-g" "-vvv"
+ "-c" "-o" "libgetopt.o"
+ (string-append tcc "/share/libgetopt.c")
+ flags)
+ (invoke "./tcc" "-ar" "rc" "libgetopt.a" "libgetopt.o")
+ (apply invoke "./tcc" "-g" "-vvv"
+ "-c" "-o" "crt1.o"
+ (string-append tcc "/share/crt1.c")
+ flags)
+ (copy-file (string-append tcc "/lib/crti.o") "crti.o")
+ (copy-file (string-append tcc "/lib/crtn.o") "crtn.o"))))
(replace 'check
(lambda _
;; FIXME: add sensible check target (without depending on make)
;; ./check.sh ?
(= 1 (status:exit-val (system* "./tcc" "--help")))))
(replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref %outputs "out"))
- (mes (assoc-ref %build-inputs "mes"))
- (tcc (assoc-ref %build-inputs "tcc"))
- (interpreter "/mes/loader")
- (cppflags
- (list
- "-D" "BOOTSTRAP=1"
- "-D" "ONE_SOURCE=1"
- "-D" "CONFIG_TCCBOOT=1"
- "-D" "CONFIG_TCC_STATIC=1"
- "-D" "CONFIG_USE_LIBGCC=1"
- "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"")
- "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out
"/lib:{B}/lib:.\"")
- "-D" (string-append "CONFIG_TCC_ELFINTERP=\""
interpreter "\"")
- "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc
"/lib:{B}/lib:{B}/lib/tcc:.\"")
- "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\""
- tcc "/include"
":/include:{B}/include\"")
- "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"")
- "-D" (string-append
"TCC_LIBTCC1_MES=\"libtcc1-mes.a\""))))
- (and
- (mkdir-p (string-append out "/bin"))
- (copy-file "tcc" (string-append out "/bin/tcc"))
- (mkdir-p (string-append out "/lib/tcc"))
- (copy-recursively (string-append tcc "/include")
- (string-append out "/include"))
- (copy-recursively (string-append tcc "/lib")
- (string-append out "/lib"))
- (invoke "./tcc" "-c" "-o" "libtcc1.o" "lib/libtcc1.c")
- (invoke "./tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o")
- (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a"))
- (delete-file (string-append out "/lib/tcc/libtcc1.a"))
- (copy-file "libtcc1.a"
- (string-append out "/lib/tcc/libtcc1.a"))
-
- (delete-file (string-append out "/lib/libc.a"))
- (apply invoke "./tcc" "-c" "-o" "libc.o"
- "-I" (string-append tcc "/include")
- "-I" (string-append
- tcc "/include/linux/"
- ,(match
- (car (string-split
- (commencement-build-target) #\-))
- ("i686" "x86")
- (x x)))
- (string-append mes "/lib/libc+gnu.c")
- cppflags)
- (invoke "./tcc" "-ar" "rc" "libc.a" "libc.o")
- (copy-file "libc.a" (string-append out "/lib/libc.a")))))))))))
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ (tcc (assoc-ref inputs "tcc")))
+ (mkdir-p (string-append out "/share"))
+ (install-file "tcc" bin)
+ (copy-recursively "include"
+ (string-append out "/include"))
+ (install-file "libtcc1.a" (string-append lib "/tcc"))
+ (for-each (lambda (file)
+ (install-file file lib))
+ '("libtcc1.a" "libc.a" "libgetopt.a"
+ "crt1.o" "crti.o" "crtn.o"))
+ ;; Install from previous tcc.
+ (copy-recursively (string-append tcc "/include")
+ (string-append out "/include"))
+ (copy-recursively (string-append tcc "/share")
+ (string-append out "/share")))))))))))
(define patch-mesboot
;; The initial patch.
- 26/60: gnu: Add tcc-musl., (continued)
- 26/60: gnu: Add tcc-musl., guix-commits, 2024/11/24
- 24/60: gnu: Add musl-boot0., guix-commits, 2024/11/24
- 01/60: gnu: mes-boot: Update to 0.26.1., guix-commits, 2024/11/24
- 07/60: gnu: mes-boot: Use commencement-build-target., guix-commits, 2024/11/24
- 08/60: gnu: gzip-mesboot: Allow building on all systems., guix-commits, 2024/11/24
- 09/60: gnu: gnu-make-mesboot0: Update to 3.82., guix-commits, 2024/11/24
- 13/60: gnu: glibc-mesboot0: Use commencement-build-target., guix-commits, 2024/11/24
- 03/60: gnu: mes-boot: Update to 0.27., guix-commits, 2024/11/24
- 19/60: gnu: mes-boot: Enable support for armhf-linux and aarch64-linux., guix-commits, 2024/11/24
- 17/60: gnu: glibc-headers-mesboot: Use commencement-build-target., guix-commits, 2024/11/24
- 23/60: gnu: tcc-boot: Update to 0.9.27.1139-8cd21e9.,
guix-commits <=
- 29/60: gnu: Add %boot-tcc-musl-inputs., guix-commits, 2024/11/24
- 28/60: gnu: Add binutils-muslboot0., guix-commits, 2024/11/24
- 11/60: gnu: binutils-mesboot0: Use commencement-build-target., guix-commits, 2024/11/24
- 20/60: gnu: gcc-mesboot1-wrapper: Correctly target more systems., guix-commits, 2024/11/24
- 06/60: gnu: Add commencement-build-target., guix-commits, 2024/11/24
- 27/60: gnu: Add oksh-muslboot0., guix-commits, 2024/11/24
- 12/60: gnu: gcc-core-mesboot0: Use commencement-build-target., guix-commits, 2024/11/24
- 14/60: gnu: gcc-mesboot0: Use commencement-build-target., guix-commits, 2024/11/24
- 15/60: gnu: binutils-mesboot1: Use commencement-build-target., guix-commits, 2024/11/24
- 18/60: gnu: gcc-mesboot: Use commencement-build-target., guix-commits, 2024/11/24