summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan (janneke) Nieuwenhuizen <janneke@gnu.org>2021-12-15 12:10:06 +0100
committerJan (janneke) Nieuwenhuizen <janneke@gnu.org>2022-10-18 22:59:58 +0200
commit2c6136b6e3914323fcab1368d7dc2e3a035c1473 (patch)
treec7b7bbca0568565f648f9e17c585ec74ec62e38b
parent579e3712b0d7341804d76cc212c9edc28f64817c (diff)
gnu: commencement: bootstrap-mes-rewired: Support ARM.
* gnu/packages/commencement.scm (%bootstrap-mes-rewired)[version]: Remove. [arguments]: Use map fixup and numbered_arch override for x86 bootstrap only, which bootstrap binary is fixed at mes-0.19. [supported-systems]: Add armhf-linux, aarch64-linux.
-rw-r--r--gnu/packages/commencement.scm36
1 files changed, 22 insertions, 14 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 5222d9e88a..4d7222c2af 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -283,7 +283,6 @@ pure Scheme to Tar and decompression in one easy step.")
(package
(inherit mes)
(name "bootstrap-mes-rewired")
- (version "0.19")
(source #f)
(native-inputs `(("mes" ,%bootstrap-mes)
("gash" ,gash-boot)))
@@ -291,6 +290,8 @@ pure Scheme to Tar and decompression in one easy step.")
(propagated-inputs '())
(outputs '("out"))
(build-system trivial-build-system)
+ (supported-systems '("armhf-linux" "aarch64-linux"
+ "i686-linux" "x86_64-linux"))
(arguments
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
@@ -327,7 +328,9 @@ pure Scheme to Tar and decompression in one easy step.")
;; Cannot easily rewire "mes" because it
;; contains NUL characters; would require
;; remove-store-references alike trick
- (filter (negate (cut string-suffix? "/mes" <>))
+ (filter (negate (compose
+ (cute member <> '("mes" "mes-gcc"))
+ basename))
(find-files bin)))
(rewire (string-append module "/mes/boot-0.scm"))
@@ -347,18 +350,22 @@ export MES MES_PREFIX
MES_ARENA=${MES_REWIRED_ARENA-10000000}
MES_MAX_ARENA=${MES_REWIRED_ARENA-10000000}
-MES_STACK=${MES_REWIRED_STACK-1000000}
+MES_STACK=${MES_REWIRED_STACK-2000000}
export MES_ARENA MES_MAX_ARENA MES_STACK
$MES -e '(mescc)' module/mescc.scm -- \"$@\"
"))))
(chmod mescc #o555)
- (with-directory-excursion module
- (chmod "mes/base.mes" #o644)
- (copy-file "mes/base.mes" "mes/base.mes.orig")
- (let ((base.mes (open-file "mes/base.mes" "a")))
- (display "
+ (when (member ,(%current-system)
+ '("i686-linux" "x86_64-linux"))
+ ;; The x86 bootstrap uses a %bootstrap-mes v0.19
+ ;; which needs some additional fixups.
+ (with-directory-excursion module
+ (chmod "mes/base.mes" #o644)
+ (copy-file "mes/base.mes" "mes/base.mes.orig")
+ (let ((base.mes (open-file "mes/base.mes" "a")))
+ (display "
;; A fixed map, from Mes 0.21, required to bootstrap Mes 0.21
(define (map f h . t)
(if (or (null? h)
@@ -371,20 +378,21 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
(cons (f (car h) (caar t) (caadr t)) (map f (cdr h) (cdar t) (cdadr t)))
(error 'unsupported (cons* 'map-4: f h t))b )))))
" base.mes)
- (close base.mes))
+ (close base.mes))
- (chmod "mes/guile.mes" #o644)
- (copy-file "mes/guile.mes" "mes/guile.mes.orig")
- (let ((guile.mes (open-file "mes/guile.mes" "a")))
- (display "
+ (chmod "mes/guile.mes" #o644)
+ (copy-file "mes/guile.mes" "mes/guile.mes.orig")
+ (let ((guile.mes (open-file "mes/guile.mes" "a")))
+ (display "
;; After booting guile.scm; use Mes 0.21; especially: MesCC 0.21
(let* ((self (car (command-line)))
(prefix (dirname (dirname self))))
(set! %moduledir (string-append prefix \"/mes/module/\"))
+ ;; For MesCC-Tools v0.5.2
(setenv \"%numbered_arch\" \"true\"))
" guile.mes)
- (close guile.mes)))
+ (close guile.mes))))
#t))))))
(define mes-boot