[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
136/211: gnu: tcc-boot0: Use gnu-build-system.
From: |
Jan Nieuwenhuizen |
Subject: |
136/211: gnu: tcc-boot0: Use gnu-build-system. |
Date: |
Sat, 8 Sep 2018 11:09:43 -0400 (EDT) |
janneke pushed a commit to branch wip-bootstrap
in repository guix.
commit 7f4bca3f646d2d67beec6d0f07c623700f68fa19
Author: Jan Nieuwenhuizen <address@hidden>
Date: Thu Aug 23 20:38:29 2018 +0200
gnu: tcc-boot0: Use gnu-build-system.
* gnu/packages/mes.scm (tcc-boot0): Use gnu-build-system.
---
gnu/packages/mes.scm | 193 ++++++++++++++++++++++++++-------------------------
1 file changed, 98 insertions(+), 95 deletions(-)
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 5ca693b..c357d47 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -360,7 +360,7 @@ extensive examples, including parsers for the Javascript
and C99 languages.")
(sha256
(base32
"0jkv9shhn5s4zqsvnjwwp2np2wg5v8ypsj5s4hb8yr1cjqqv2z9s"))))
- (build-system trivial-build-system)
+ (build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux"))
(native-inputs
`(("coreutils" , %bootstrap-coreutils&co)
@@ -374,106 +374,109 @@ extensive examples, including parsers for the
Javascript and C99 languages.")
("srfi-43" ,%srfi-43)) ; guile-2.0.9 lacks srfi-43;
cherry-pick
'())))
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
- (mes (assoc-ref %build-inputs "mes"))
- (guile (assoc-ref %build-inputs "guile"))
- (srfi-43 (assoc-ref %build-inputs "srfi-43"))
- (mescc-tools (assoc-ref %build-inputs "mescc-tools"))
- (source (assoc-ref %build-inputs "source"))
- (nyacc-source (assoc-ref %build-inputs "nyacc-source"))
- (mes-seed (assoc-ref %build-inputs "mes-seed"))
- (tinycc-seed (assoc-ref %build-inputs "tinycc-seed"))
- (out (assoc-ref %outputs "out"))
- (libc (assoc-ref %build-inputs "libc"))
- (interpreter (if libc
- (string-append libc
,(glibc-dynamic-linker))
- (string-append mes "/lib/mes-loader")))
- (dir (getcwd)))
- ;; unpack
- (setenv "PATH" (string-append
- coreutils "/bin"
- ":" mes "/bin"
- (if guile (string-append ":" guile "/bin")
- "")
- ":" mescc-tools "/bin"))
- (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
- (mkdir-p "source")
- (system* "tar" "--strip=1" "-C" "source" "-xvf" source)
- (mkdir-p "nyacc-source")
- (system* "tar" "--strip=1" "-C" "nyacc-source" "-xvf"
nyacc-source)
- (mkdir-p "mes-seed")
- (system* "tar" "--strip=1" "-C" "mes-seed" "-xvf" mes-seed)
- (mkdir-p "tinycc-seed")
- (system* "tar" "--strip=1" "-C" "tinycc-seed" "-xvf" tinycc-seed)
- (when srfi-43
- (mkdir-p "srfi")
- (system* "cp" srfi-43 "srfi/srfi-43.scm"))
- (chdir "source")
-
- ;; configure
- (setenv "PREFIX" out)
- (setenv "MESCC" (string-append mes "/bin/mescc"))
- (symlink (string-append mes "/share/mes") "mes")
- (setenv "MES_PREFIX" "mes")
- (setenv "OBJDUMP" "true")
- (setenv "ONE_SOURCE" "1")
- (setenv "PREPROCESS" "1")
- (setenv "MES_DEBUG" "1")
- (setenv "MES_ARENA" "70000000")
- (setenv "MES_MAX_ARENA" "70000000")
-
- (if ,%fake-bootstrap?
- (begin ; Cheat using Guile+Nyacc+MesCC; ~30 times faster
- (setenv "MES" "guile")
- (setenv "GUILE_AUTO_COMPILE" "1")
- (setenv "GUILE_LOAD_COMPILED_PATH"
- (string-append guile "/lib/guile/2.0/ccache"))
- (setenv "GUILE_LOAD_PATH"
- (string-append dir
- ":" guile "/share/guile/2.0/"
- ":" dir "/nyacc-source/module"
- ":" mes "/share/mes/guile"))
-
- ;; give auto-compile a home -- massive speed-up
- (mkdir-p "/tmp/home")
- (setenv "HOME" "/tmp/home"))
-
- (begin ; True bootstrap build with Mes+Nyacc+MesCC
- (setenv "MES" "mes")
- (setenv "GUILE_LOAD_PATH" "nyacc")
- (symlink (string-append "../nyacc-source/module")
"nyacc")))
+ `(#:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-seeds
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
+ (srfi-43 (assoc-ref %build-inputs "srfi-43"))
+ (nyacc-source (assoc-ref %build-inputs "nyacc-source"))
+ (mes-seed (assoc-ref %build-inputs "mes-seed"))
+ (tinycc-seed (assoc-ref %build-inputs "tinycc-seed")))
+ (setenv "PATH" (string-append
+ coreutils "/bin"))
+ (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+ (with-directory-excursion ".."
+ (and
+ (mkdir-p "nyacc-source")
+ (zero? (system* "tar" "--strip=1" "-C" "nyacc-source"
+ "-xvf" nyacc-source))
+ (mkdir-p "mes-seed")
+ (zero? (system* "tar" "--strip=1" "-C" "mes-seed"
+ "-xvf" mes-seed))
+ (mkdir-p "tinycc-seed")
+ (zero? (system* "tar" "--strip=1" "-C" "tinycc-seed"
+ "-xvf" tinycc-seed))
+ (or (not srfi-43)
+ (and (mkdir-p "srfi")
+ (zero? (system* "cp" srfi-43
"srfi/srfi-43.scm")))))))))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref %outputs "out"))
+ (dir (with-directory-excursion ".." (getcwd)))
+ (coreutils (assoc-ref %build-inputs "coreutils"))
+ (guile (assoc-ref %build-inputs "guile"))
+ (mes (assoc-ref %build-inputs "mes"))
+ (mescc-tools (assoc-ref %build-inputs "mescc-tools"))
+ (libc (assoc-ref %build-inputs "libc"))
+ (interpreter (if libc
+ (string-append libc
,(glibc-dynamic-linker))
+ (string-append mes
"/lib/mes-loader"))))
+ (setenv "PATH" (string-append
+ coreutils "/bin"
+ ":" mes "/bin"
+ (if guile (string-append ":" guile "/bin")
+ "")
+ ":" mescc-tools "/bin"))
- (and
- (zero? (system* "sh" "configure"
- "--prefix=$PREFIX"
- (string-append "--elfinterp=" interpreter)
- "--crtprefix=."
- "--tccdir=."))
+ (setenv "PREFIX" out)
+ (setenv "MESCC" (string-append mes "/bin/mescc"))
+ (symlink (string-append mes "/share/mes") "mes")
+ (setenv "MES_PREFIX" "mes")
+ (setenv "OBJDUMP" "true")
+ (setenv "ONE_SOURCE" "1")
+ (setenv "PREPROCESS" "1")
+ (setenv "MES_DEBUG" "1")
+ (setenv "MES_ARENA" "70000000")
+ (setenv "MES_MAX_ARENA" "70000000")
- ;; build
- ;; (setenv "BUILD_DEBUG" "1")
- (zero? (system* "sh" "build.sh"))
+ (if ,%fake-bootstrap?
+ (begin ; Cheat using Guile+Nyacc+MesCC; ~30 times
faster
+ (setenv "MES" "guile")
+ (setenv "GUILE_AUTO_COMPILE" "1")
+ (setenv "GUILE_LOAD_COMPILED_PATH"
+ (string-append guile "/lib/guile/2.0/ccache"))
+ (setenv "GUILE_LOAD_PATH"
+ (string-append dir
+ ":" guile "/share/guile/2.0/"
+ ":" dir "/nyacc-source/module"
+ ":" mes "/share/mes/guile"))
- ;; check
- (setenv "DIFF" "diff.scm")
- ;; fail fast tests
- ;;(zero? (system* "sh" "test.sh"
"mes/scaffold/tests/30-strlen"))
- ;;(zero? (system* "sh" "-x" "test.sh"
"mes/scaffold/tinycc/00_assignment"))
- (setenv "TCC" "./tcc")
- (zero? (system* "sh" "check.sh"))
+ ;; give auto-compile a home -- massive speed-up
+ (mkdir-p "/tmp/home")
+ (setenv "HOME" "/tmp/home"))
- ;; install
- (zero? (system* "sh" "install.sh")))))))
- (description
- "TCC, also referred to as \"TinyCC\", is a small and fast C compiler
+ (begin ; True bootstrap build with
Mes+Nyacc+MesCC
+ (setenv "MES" "mes")
+ (setenv "GUILE_LOAD_PATH" "nyacc")
+ (symlink (string-append "../nyacc-source/module")
"nyacc")))
+ (and
+ (zero? (system* "sh" "configure"
+ "--prefix=$PREFIX"
+ (string-append "--elfinterp=" interpreter)
+ "--crtprefix=."
+ "--tccdir=."))))))
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "sh" "build.sh"))))
+ (replace 'check
+ (lambda* (#:key outputs #:allow-other-keys)
+ (setenv "DIFF" "diff.scm")
+ ;; fail fast tests
+ ;;(zero? (system* "sh" "test.sh"
"mes/scaffold/tests/30-strlen"))
+ ;;(zero? (system* "sh" "-x" "test.sh"
"mes/scaffold/tinycc/00_assignment"))
+ (setenv "TCC" "./tcc")
+ (zero? (system* "sh" "check.sh"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "sh" "install.sh")))))))
+ (description
+ "TCC, also referred to as \"TinyCC\", is a small and fast C compiler
written in C. It supports ANSI C with GNU and extensions and most of the C99
standard.")
- (home-page "http://www.tinycc.org/")
- (license lgpl2.1+)))))
+ (home-page "http://www.tinycc.org/")
+ (license lgpl2.1+)))))
(define-public tcc-boot
(package-with-bootstrap-guile
- 90/211: gnu: glibc-boot: Install all headers. WIP plus more, (continued)
- 90/211: gnu: glibc-boot: Install all headers. WIP plus more, Jan Nieuwenhuizen, 2018/09/08
- 154/211: Revert "gnu: Add %bootstrap-diffutils.", Jan Nieuwenhuizen, 2018/09/08
- 146/211: gnu: %mes-seed: Update for mes 0.17.1., Jan Nieuwenhuizen, 2018/09/08
- 134/211: gnu: mescc-tools-boot: Use gnu-build-system., Jan Nieuwenhuizen, 2018/09/08
- 158/211: gnu: Add make-mesboot0 3.80, Jan Nieuwenhuizen, 2018/09/08
- 115/211: gnu: glibc-mesboot: Package with bootstrap-guile., Jan Nieuwenhuizen, 2018/09/08
- 147/211: gnu: %tinycc-seed: Update for mes 0.17.1., Jan Nieuwenhuizen, 2018/09/08
- 127/211: gnu: binutils-mesboot: Revise dependencies., Jan Nieuwenhuizen, 2018/09/08
- 105/211: gnu: binutils-mesboot: Rename from binutils-boot., Jan Nieuwenhuizen, 2018/09/08
- 116/211: gnu: gcc-mesboot0: Package with bootstrap-guile., Jan Nieuwenhuizen, 2018/09/08
- 136/211: gnu: tcc-boot0: Use gnu-build-system.,
Jan Nieuwenhuizen <=
- 108/211: gnu: Add gcc-mesboot 4.7.4. WIP, Jan Nieuwenhuizen, 2018/09/08
- 111/211: gnu: m4-mesboot: Package with boostrap-guile., Jan Nieuwenhuizen, 2018/09/08
- 139/211: gnu: Add %bootstrap-make., Jan Nieuwenhuizen, 2018/09/08
- 114/211: gnu: gcc-core-mesboot: Package with bootstrap-guile., Jan Nieuwenhuizen, 2018/09/08
- 128/211: gnu: gcc-mesboot: Revise dependencies., Jan Nieuwenhuizen, 2018/09/08
- 77/211: Revert "gnu: gcc-boot: Update to 3.0.", Jan Nieuwenhuizen, 2018/09/08
- 157/211: Revert "gnu: Add %make-static, %make-static-stripped, %make-bootstrap-tarball.", Jan Nieuwenhuizen, 2018/09/08
- 150/211: gnu: Add make-mesboot 3.79., Jan Nieuwenhuizen, 2018/09/08
- 119/211: gnu: %mes-seed: Update for mes 0.16.1., Jan Nieuwenhuizen, 2018/09/08
- 153/211: bootstrap: Remove dependency on %bootstrap-make, %bootstrap-diffutils., Jan Nieuwenhuizen, 2018/09/08