[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/176: gnu: Add tcc-boot.
From: |
Jan Nieuwenhuizen |
Subject: |
05/176: gnu: Add tcc-boot. |
Date: |
Fri, 31 Aug 2018 11:20:00 -0400 (EDT) |
janneke pushed a commit to branch wip-bootstrap
in repository guix.
commit 089b670997d701aec31f97cfcccfd141923eb4bb
Author: Jan Nieuwenhuizen <address@hidden>
Date: Tue Nov 21 21:31:57 2017 +0100
gnu: Add tcc-boot.
* gnu/packages/mes.scm (tcc-boot): New variable.
---
gnu/packages/mes.scm | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 119 insertions(+)
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 7752d2e..18c3e22 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -27,6 +27,7 @@
#:use-module (gnu packages gcc)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages guile)
+ #:use-module (gnu packages make-bootstrap)
#:use-module (gnu packages man)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
@@ -327,6 +328,124 @@ extensive examples, including parsers for the Javascript
and C99 languages.")
(home-page "https://savannah.nongnu.org/projects/nyacc")
(license (list gpl3+ lgpl3+)))))
+(define-public tcc-boot
+ (let ((version "0.9.26")
+ (revision "0")
+ (commit "98e8de69fa18d5cd76948855dbc3d8853df33c28"))
+ (package
+ (name "tcc-boot")
+ (version (string-append version "-" revision "." (string-take commit 7)))
+ (synopsis "Tiny and fast C compiler")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://gitlab.com/janneke/tinycc"
+
+ "/repository/archive.tar.gz?ref="
+ commit))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "07vczmgz1d0sfr6xy211748cdqfmyzqb9wkg752ahfayy4cpcywb"))))
+ (build-system trivial-build-system)
+ (supported-systems '("i686-linux" "x86_64-linux"))
+ (native-inputs
+ `(("static-bash" ,@(assoc-ref %bootstrap-inputs "bash"))
+ ("bash" ,(search-bootstrap-binary "bash" (%current-system)))
+ ("guile" ,(origin (method url-fetch)
+ (uri ((@@ (gnu packages package-management)
boot-guile-uri) "x86_64"))
+ (sha256
+ (base32
+
"1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3"))))
+ ;; guile-2.0.9 does not have srfi-43; cherry-pick
+ ("srfi-43" ,(origin
+ (method url-fetch)
+ (uri
"http://git.savannah.gnu.org/cgit/guile.git/plain/module/srfi/srfi-43.scm?h=stable-2.0")
+ (file-name "srfi-43.scm")
+ (sha256
+ (base32
+
"0rnkppwdkxbzkgp9s9ccmby9f7p3ijxjlmvj0pzqxwmrmpy7jwmb"))))
+ ("tar" ,(search-bootstrap-binary "tar" (%current-system)))
+ ("xz" ,(search-bootstrap-binary "xz" (%current-system)))
+ ("mes" ,mes-boot)
+ ("mescc-tools" ,mescc-tools-boot)
+ ("nyacc-source" ,(package-source nyacc-boot))
+ ("tinycc-seed"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append "https://gitlab.com/janneke/tinycc-seed"
+ "/repository/archive.tar.gz?ref="
+ "ba22f1f123af5ec11fbd1ef99508e961e5fdb521"))
+ (file-name (string-append name "-seed" "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0l276qwda166lm27w0yv37wisdgxx2giv8b5lsbynyf3ax7045mf"))))))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((bash (assoc-ref %build-inputs "static-bash"))
+ (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"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (source (assoc-ref %build-inputs "source"))
+ (nyacc-source (assoc-ref %build-inputs "nyacc-source"))
+ (tinycc-seed (assoc-ref %build-inputs "tinycc-seed"))
+ (out (assoc-ref %outputs "out"))
+ (out/bin (string-append out "/bin"))
+ (interpreter "interpreter")
+ (dir (getcwd)))
+ (setenv "PATH" (string-append bash "/bin:"
+ mes "/bin:"
+ "../guile/bin:"
+ mescc-tools "/bin:"
+ tar "/bin:"
+ xz "/bin"))
+ (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+ (mkdir-p "source")
+ (system* "tar" "--strip=1" "-C" "source" "-xvf" source)
+ (mkdir-p "guile")
+ (system* "tar" "-C" "guile" "-xvf" guile)
+ (mkdir-p "nyacc-source")
+ (system* "tar" "--strip=1" "-C" "nyacc-source" "-xvf"
nyacc-source)
+ (mkdir-p "tinycc-seed")
+ (system* "tar" "--strip=1" "-C" "tinycc-seed" "-xvf" tinycc-seed)
+ (mkdir-p "srfi")
+ (system* "cp" srfi-43 "srfi/srfi-43.scm")
+ (chdir "source")
+ (zero? (system (string-append
+"set -ex;"
+
+;; configure
+"export PREFIX=" out ";"
+"export MESCC=" mes "/bin/mescc.scm;"
+"export GUILE_AUTO_COMPILE=1;"
+"export GUILE_LOAD_COMPILED_PATH=" dir "/guile/lib/guile/2.0/ccache;"
+"export GUILE_LOAD_PATH=" dir
+ ":" dir "/guile/share/guile/2.0/"
+ ":" dir "/nyacc-source/module"
+ ":" mes "/share/mes/guile;"
+
+"sh configure --prefix=$PREFIX --elfinterp=interpreter --crtprefix=.
--tccdir=.;"
+
+;; build
+"sh build.sh;"
+
+;; check: 26/65 tests fail
+"sh check.sh || true;"
+
+;; install
+"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+))))
+
;;;
(define-public nyacc
- branch wip-bootstrap created (now 9350f74), Jan Nieuwenhuizen, 2018/08/31
- 04/176: gnu: Add nyacc-boot., Jan Nieuwenhuizen, 2018/08/31
- 08/176: gnu: Add gcc-boot. WIP, Jan Nieuwenhuizen, 2018/08/31
- 11/176: tcc-boot: bump tinycc-seed: GNU Gcc support: Add ferror., Jan Nieuwenhuizen, 2018/08/31
- 01/176: gnu: Add stage0-boot., Jan Nieuwenhuizen, 2018/08/31
- 03/176: gnu: Add mes-boot., Jan Nieuwenhuizen, 2018/08/31
- 10/176: bump: mes-tools: add ferror for [m4] configure, Jan Nieuwenhuizen, 2018/08/31
- 09/176: bump tcc-boot: add sysinclude path for [m4] configure., Jan Nieuwenhuizen, 2018/08/31
- 02/176: gnu: Add mescc-tools-boot., Jan Nieuwenhuizen, 2018/08/31
- 05/176: gnu: Add tcc-boot.,
Jan Nieuwenhuizen <=
- 07/176: Revert "use %bootstrap-guile -- still guile-2.2 in bag-with-origins :-(", Jan Nieuwenhuizen, 2018/08/31
- 06/176: use %bootstrap-guile -- still guile-2.2 in bag-with-origins :-(, Jan Nieuwenhuizen, 2018/08/31
- 22/176: gnu: Update mescc-tools-boot: bootstrap from .M1 sources: remove MORTAL SIN., Jan Nieuwenhuizen, 2018/08/31
- 15/176: gnu: tcc-boot: Use bootstrap Guile and simplify., Jan Nieuwenhuizen, 2018/08/31
- 19/176: gnu: mes-boot: Use bootstrap Guile and simplify., Jan Nieuwenhuizen, 2018/08/31
- 21/176: gnu: Update mes-boot: Mescc-tools support: char foo[BAR] = {'a', 'b', 'c'}., Jan Nieuwenhuizen, 2018/08/31
- 34/176: gnu: Update tcc-boot: qsort., Jan Nieuwenhuizen, 2018/08/31
- 31/176: gnu: Update tcc-boot: mescc char cast truncate bug., Jan Nieuwenhuizen, 2018/08/31
- 20/176: gnu: mes-boot: Update mes-boot, mes-seed: Mescc-tools support., Jan Nieuwenhuizen, 2018/08/31
- 26/176: gnu: Update mescc-tools-boot, mes-boot, tcc-boot., Jan Nieuwenhuizen, 2018/08/31