guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/192: gnu: Add tcc-boot.


From: Jan Nieuwenhuizen
Subject: 05/192: gnu: Add tcc-boot.
Date: Mon, 3 Sep 2018 16:24:42 -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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]