summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorJan Nieuwenhuizen <janneke@gnu.org>2019-12-07 15:20:50 +0100
committerJan Nieuwenhuizen <janneke@gnu.org>2019-12-07 19:30:36 +0100
commit4e23d65056fff3953404693a83f090cb54e02600 (patch)
treea43d10211e0f1c27ac6b6ecc58accdcc64a5dac1 /gnu
parent8c0dcf3e89e0eb2a6094263efdbc5eaec0e8e9e8 (diff)
downloadguix-4e23d65056fff3953404693a83f090cb54e02600.tar.gz
gnu: Add mes-rb5.
This

    guix build --system=i686-linux mes-dcc

creates the Reproducible-Builds summit 5's GNU Mes build with sha266sum

    9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb

that was also built for Debian GNU/Linux and NixOS, with a bit-for-bit
identical result.

* gnu/packages/mes.scm (mes-ddc): New variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/mes.scm78
1 files changed, 77 insertions, 1 deletions
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 0a5863582a..5d85c5ff51 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -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)
@@ -151,7 +154,80 @@ Guile.")
                 "104qxngxyl7pql8vqrnli3wfyx0ayfaqg8gjfhmk4qzrafs46slm"))))
     (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")))))))
+
+(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)
+       ("libc" ,glibc)
+       ("locales" ,glibc-utf8-locales)
+       ("make" ,gnu-make)
+       ("mes" ,mes)
+       ("mescc-tools" ,mescc-tools)
+       ("nyacc" ,nyacc)
+       ("sed" ,sed)
+       ("tar" ,tar)
+       ("xz" ,xz)))
+    (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 _
+             (let ((sha256sum
+                    (read-delimited
+                     " "
+                     (open-pipe* OPEN_READ "sha256sum" "src/mes"))))
+               (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.