gnu: sbcl-trivial-clipboard: Update to 20200904.
[jackhill/guix/guix.git] / gnu / packages / mes.scm
index 0a58635..9ffbe33 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017, 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -21,6 +21,9 @@
 (define-module (gnu packages mes)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages bootstrap)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graphviz)
@@ -140,18 +143,96 @@ Guile.")
 (define-public mes
   (package
     (inherit mes-0.19)
-    (version "0.21")
+    (version "0.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mes/"
                                   "mes-" version ".tar.gz"))
-              (patches (search-patches "mes-remove-store-name.patch"))
               (sha256
                (base32
-                "104qxngxyl7pql8vqrnli3wfyx0ayfaqg8gjfhmk4qzrafs46slm"))))
+                "0p1jsrrmcbc0zrvbvnjbb6iyxr0in71km293q8qj6gnar6bw09av"))))
     (propagated-inputs
      `(("mescc-tools" ,mescc-tools)
-       ("nyacc" ,nyacc)))))
+       ("nyacc" ,nyacc)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("lib")))
+           (search-path-specification
+            (variable "MES_PREFIX")
+            (separator #f)
+            (files '("")))))))
+
+(define-public mes-rb5
+  ;; This is the Reproducible-Builds summit 5's Mes, also built on Debian
+  ;; GNU/Linux and NixOS to produce the same, bit-for-bit identical result.
+  (package
+    (inherit mes)
+    (name "mes-rb5")
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs
+     `(("bash" ,bash)
+       ("coreutils" ,coreutils)
+       ("grep" ,grep)
+       ("guile" ,guile-2.2)
+       ("gzip" ,gzip)
+       ("libc" ,glibc)
+       ("locales" ,glibc-utf8-locales)
+       ("make" ,gnu-make)
+       ("mes" ,mes)
+       ("mescc-tools" ,mescc-tools)
+       ("nyacc" ,nyacc)
+       ("sed" ,sed)
+       ("tar" ,tar)))
+    (supported-systems '("i686-linux"))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:strip-binaries? #f    ; binutil's strip b0rkes MesCC/M1/hex2 binaries
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 popen)
+                  (ice-9 rdelim))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'setenv
+           (lambda _
+             (setenv "AR" "mesar")
+             (setenv "CC" "mescc")
+             (setenv "GUILD" "true")
+             (setenv "SCHEME" "mes")
+             (setenv "LC_ALL" "en_US.UTF-8")
+             #t))
+         (replace 'configure
+           (lambda _
+             (let ((out (assoc-ref %outputs "out")))
+               (invoke "sh" "configure.sh"
+                       (string-append "--prefix=" out)
+                       "--host=i686-unkown-linux-gnu"
+                       "--with-courage"))))
+         (replace 'build
+           (lambda _
+             (invoke "sh" "bootstrap.sh")))
+         (replace 'check
+           (lambda _
+             (copy-file "bin/mes-mescc" "bin/mes-mescc-0.21")
+             (system* "sed" "-i" "s/0\\.22/0\\.21/" "bin/mes-mescc-0.21")
+             (let ((sha256sum
+                    (read-delimited
+                     " "
+                     (open-pipe* OPEN_READ "sha256sum" "bin/mes-mescc-0.21"))))
+               (unless
+                   (equal?
+                    sha256sum
+                    "9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb")
+                 (throw 'error "mes checksum failure"))
+               #t)))
+         (replace 'install
+           (lambda _
+             (invoke "sh" "install.sh"))))))))
 
 (define-public mescc-tools-0.5.2
   ;; Mescc-tools used for bootstrap.
@@ -215,7 +296,7 @@ get_machine.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/oriansj/m2-planet.git")
+                      (url "https://github.com/oriansj/m2-planet")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -234,7 +315,7 @@ get_machine.")
       (description
        "M2-Planet, the PLAtform NEutral Transpiler, when combined with
 mescc-tools, compiles a subset of the C language into working binaries with
-introspective steps inbetween.  It is self-hosting and for bootstrapping it
+introspective steps in between.  It is self-hosting and for bootstrapping it
 also has an implementation in the M1 macro assembly language.  M2-Planet is
 built as Phase-5 of the full source bootstrapping process and is capable of
 building GNU Mes.")