X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/81a4ca08f7716c730c75ebb2911cf0f5f57dfd3c..3af44aa49c8ed3dfd335cdfa132c0c2c9476e7b4:/gnu/packages/mes.scm diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm index 3174c0c115..9ffbe33ab7 100644 --- a/gnu/packages/mes.scm +++ b/gnu/packages/mes.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019 Jan Nieuwenhuizen +;;; Copyright © 2017, 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2017, 2018 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; @@ -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) @@ -134,23 +137,102 @@ bootstrap to Guix and aims to help create full source bootstrapping for GNU/Linux distributions. It consists of a mutual self-hosting Scheme interpreter in C and a Nyacc-based C compiler in Scheme and is compatible with Guile.") - (home-page "https://gnu.org/software/mes") + (home-page "https://www.gnu.org/software/mes/") (license gpl3+))) (define-public mes (package (inherit mes-0.19) - (version "0.20") + (version "0.22") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mes/" "mes-" version ".tar.gz")) (sha256 (base32 - "04pajp8v31na34ls4730ig5f6miiplhdvkmsb9ls1b8bbmw2vb4n")))) + "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. @@ -204,3 +286,38 @@ get_machine.") ((#:make-flags _) `(list (string-append "PREFIX=" (assoc-ref %outputs "out")) "CC=gcc")))))) + +(define-public m2-planet + (let ((commit "b87ddb0051b168ea45f8d49a610dcd069263336a") + (revision "2")) + (package + (name "m2-planet") + (version (string-append "1.4.0-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/oriansj/m2-planet") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yyc0fcbbxi9jqa1n76x0rwspdrwmc8g09jlmsw9c35nflrhmz8q")))) + (native-inputs + `(("mescc-tools" ,mescc-tools))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f + #:phases (modify-phases %standard-phases + (delete 'bootstrap) + (delete 'configure)))) + (synopsis "The PLAtform NEutral Transpiler") + (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 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.") + (home-page "https://github.com/oriansj/m2-planet") + (license gpl3+))))