* GNU Mes 0.24.1 released
@ 2022-10-16 8:59 Janneke Nieuwenhuizen
2022-10-19 15:32 ` Ludovic Courtès
0 siblings, 1 reply; 7+ messages in thread
From: Janneke Nieuwenhuizen @ 2022-10-16 8:59 UTC (permalink / raw)
To: info-gnu; +Cc: bug-mes, guix-devel, bootstrappable, rb-general
[-- Attachment #1: Type: text/plain, Size: 4842 bytes --]
We are happy to announce the release of GNU Mes 0.24.1, representing 23
commits over five months by four people.
Mes now supports the stage0-posix and M2-Planet Full Source bootstrap on
Aarch64 for ARM. Because stage0-posix does not support ARM yet, the Mes
ARM bootstrap is currently prototyped on Aarch64.
We are excited that the NlNet Foundation[4] is again sponsoring this
work!
What's next?
Work to prototype this so-called "Full Source Bootstrap" for ARM on
Aarch64 is happening on the wip-aarch64-bootstrap[3] branch. Also, full
Guile compatible module support, and RISC-V support.
Enjoy!
* About
GNU Mes[5] is a Scheme interpreter and C compiler for bootstrapping
the GNU System. Since version 0.22 it has again helped to halve the
size of opaque, uninspectable binary seeds that are currently being
used in the Reduced Binary Seed bootstrap[6] of GNU Guix[7]. The
final goal is to help create a full source bootstrap as part of the
bootstrappable builds[8] effort for UNIX-like operating systems.
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
compiler written in Scheme and these are mutual self-hosting. Mes can
now be bootstrapped from M2-Planet[9] and Mescc-Tools[10].
Mes has a Garbage Collector, a library of loadable Scheme modules--
notably Dominique Boucher's LALR[11], Pre-R6RS portable
syntax-case[12] with R7RS ellipsis, Matt Wette's Nyacc[13] --and test
suite, just enough to support a REPL and a C99 compiler: mescc.
Mes + MesCC + Mes C Library can build a bootstrappable TinyCC[14] that
is self-hosting. Using this tcc and the Mes C library we now have a
Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5,
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[15] --
John McCarthy page 13, GNU Guix's source/binary packaging transparency
and Jeremiah Orians's stage0[16] 357-byte self-hosting hex assembler.
* Download
git clone git://git.savannah.gnu.org/mes.git
Here are the compressed sources and a GPG detached signature[*]:
https://ftp.gnu.org/gnu/mes/mes-0.24.1.tar.gz
https://ftp.gnu.org/gnu/mes/mes-0.24.1.tar.gz.sig
Use a mirror for higher download bandwidth:
https://ftpmirror.gnu.org/mes/mes-0.24.1.tar.gz
https://ftpmirror.gnu.org/mes/mes-0.24.1.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
bceaaaf1cafaa31ccb1ee1247ce2dd651a2f67be mes-0.24.1.tar.gz
35120ceb0676632e58973355b9f86dff9cc717ed65ed2a17ff5272c59f2a0535 mes-0.24.1.tar.gz
[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact. First, be sure to download both the .sig file
and the corresponding tarball. Then, run a command like this:
gpg --verify mes-0.24.1.tar.gz.sig
If that command fails because you don't have the required public key,
or that public key has expired, try the following commands to update
or refresh it, and then rerun the 'gpg --verify' command.
gpg --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
* Get informed, get involved
See https://bootstrappable.org
Join #bootstrappable on irc.libera.chat
* NEWS
* Changes in 0.24.1 since 0.24
** Build
*** Support M2-Planet bootstrap for ARM.
** MesCC
*** The Mes C Library now supports bootstrapping ARM.
** Noteworthy bug fixes
*** The definition of S_ISUID was fixed.
*** Unsigned modulo has been fixed for ARM.
*** A bug with abtol has been fixed.
*** Workarounds for building with gcc-12.2.0 have been added.
* Links
[0] https://github.com/oriansj/stage0-posix
[1] https://github.com/oriansj/bootstrap-seeds
[2] https://archive.fosdem.org/2021/schedule/event/gnumes/
[3] https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-aarch64-bootstrap
[4] https://nlnet.nl/project/GNUMes-ARM_RISC-V
[5] https://www.gnu.org/software/mes
[6] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
[7] https://www.gnu.org/software/guix
[8] https://bootstrappable.org
[9] https://github.com/oriansj/m2-planet
[10] https://savannah.nongnu.org/projects/mescc-tools
[11] https://github.com/schemeway/lalr-scm
[12] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
[13] https://www.nongnu.org/nyacc
[14] https://gitlab.com/janneke/tinycc
[15] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
[16] https://savannah.nongnu.org/projects/stage0
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: GNU Mes 0.24.1 released
2022-10-16 8:59 GNU Mes 0.24.1 released Janneke Nieuwenhuizen
@ 2022-10-19 15:32 ` Ludovic Courtès
2022-10-19 19:41 ` Janneke Nieuwenhuizen
0 siblings, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2022-10-19 15:32 UTC (permalink / raw)
To: Janneke Nieuwenhuizen; +Cc: guix-devel
Howdy,
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
> We are happy to announce the release of GNU Mes 0.24.1, representing 23
> commits over five months by four people.
>
> Mes now supports the stage0-posix and M2-Planet Full Source bootstrap on
> Aarch64 for ARM. Because stage0-posix does not support ARM yet, the Mes
> ARM bootstrap is currently prototyped on Aarch64.
This is exciting news! Looking forward to having full-source
bootstrapped AArch64… and it looks like there’s already activity on a
‘wip-’ branch. 👍
Cheers,
Ludo’.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: GNU Mes 0.24.1 released
2022-10-19 15:32 ` Ludovic Courtès
@ 2022-10-19 19:41 ` Janneke Nieuwenhuizen
2022-10-19 19:57 ` Efraim Flashner
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Janneke Nieuwenhuizen @ 2022-10-19 19:41 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel, Danny Milosavljevic
Ludovic Courtès writes:
Hey!
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
> This is exciting news! Looking forward to having full-source
> bootstrapped AArch64… and it looks like there’s already activity on a
> ‘wip-’ branch.
Yes, it is! The ARM bootstrap story is still a bit flakey, as
stage0-posix does not support ARM. So, ARM would need
%bootstrap-mescc-tools and %bootstrap-mes binary seeds...meh.
However, aarch64-linux now bootstraps from 526 bytes all the way until
gcc-core-mesboot 2,95.3. Very nice!
We're still stuck at building a full gcc+glibc combo;
glibc-mesboot-2.2.5 builds, but possibly not correctly; as the full
gcc-mesboot0 (2.95.3) build fails at configure time: gcc-core-mesboot0 +
glibc-mesboot0
?: 0 [execle "./gencheck" # "./gencheck"]
ERROR: In procedure execle: Exec format error
Not sure what to do here. We could somehow try to debug/bisect this.
We could try to use a newer glibc; glibc-2.2.5 happened during the
OABI/EABI switch and is heavily patched. Or, we could try to remove
glibc-2.2.5/gcc-2.95.3 altogether and aim for a direct tcc => gcc-4.6.4.
We need to go that way anyway for RISCV.
Greetings,
Janneke
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: GNU Mes 0.24.1 released
2022-10-19 19:41 ` Janneke Nieuwenhuizen
@ 2022-10-19 19:57 ` Efraim Flashner
2022-10-20 14:11 ` Jan Nieuwenhuizen
2022-10-20 13:13 ` Ludovic Courtès
2022-10-22 18:02 ` Efraim Flashner
2 siblings, 1 reply; 7+ messages in thread
From: Efraim Flashner @ 2022-10-19 19:57 UTC (permalink / raw)
To: Janneke Nieuwenhuizen
Cc: Ludovic Courtès, guix-devel, Danny Milosavljevic
[-- Attachment #1: Type: text/plain, Size: 3030 bytes --]
On Wed, Oct 19, 2022 at 09:41:20PM +0200, Janneke Nieuwenhuizen wrote:
> Ludovic Courtès writes:
>
> Hey!
>
> > Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
> >
> > This is exciting news! Looking forward to having full-source
> > bootstrapped AArch64… and it looks like there’s already activity on a
> > ‘wip-’ branch.
>
> Yes, it is! The ARM bootstrap story is still a bit flakey, as
> stage0-posix does not support ARM. So, ARM would need
> %bootstrap-mescc-tools and %bootstrap-mes binary seeds...meh.
>
> However, aarch64-linux now bootstraps from 526 bytes all the way until
> gcc-core-mesboot 2,95.3. Very nice!
>
> We're still stuck at building a full gcc+glibc combo;
> glibc-mesboot-2.2.5 builds, but possibly not correctly; as the full
> gcc-mesboot0 (2.95.3) build fails at configure time: gcc-core-mesboot0 +
> glibc-mesboot0
>
> ?: 0 [execle "./gencheck" # "./gencheck"]
> ERROR: In procedure execle: Exec format error
>
> Not sure what to do here. We could somehow try to debug/bisect this.
> We could try to use a newer glibc; glibc-2.2.5 happened during the
> OABI/EABI switch and is heavily patched. Or, we could try to remove
> glibc-2.2.5/gcc-2.95.3 altogether and aim for a direct tcc => gcc-4.6.4.
> We need to go that way anyway for RISCV.
Which hardware are you building on? On my pine64 I'm getting stuck at
tcc-0.9.26-1134-g80114c4d
On commit 519f4c8c9a0b191e9a447116685393c2fed4cd3b
starting phase `build'
CC tccpp.c
->type--: not a <type>: (typename "BufferedFile")
->type--: not a <type>: (typename "BufferedFile")
CC tccgen.c
CC tccelf.c
unexpected size:8
rank--: not a pointer: #<<type> type: signed size: 1 description: #f>
rank--: not a pointer: #<<type> type: signed size: 1 description: #f>
CC tccrun.c
CC arm-gen.c
unexpected size:8
CC arm-link.c
CC arm-asm.c
CC tccasm.c
CC libtcc.c
CC tcc.c
CCLD mes-tcc
mkdir -p /gnu/store/d3kcgm0z3yyc7bplaacr7g0j8gk36h5j-tcc-boot0-0.9.26-1134-g80114c4d/lib/tcc
rm -f crt1.o;
cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/crt1.c .
crt1.c:149: warning: implicit declaration of function 'main'
rm -f crti.o;
cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/crti.c .
rm -f crtn.o;
cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/crtn.c .
rm -f libc.a
cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/libc+gnu.c libc.c
error: in phase 'build': uncaught exception:
srfi-34 #<condition &invoke-error [program: "sh" arguments: ("bootstrap.sh") exit-status: 1 term-signal: #f stop-signal: #f] 10f6100>
phase `build' failed after 21994.9 seconds
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: GNU Mes 0.24.1 released
2022-10-19 19:41 ` Janneke Nieuwenhuizen
2022-10-19 19:57 ` Efraim Flashner
@ 2022-10-20 13:13 ` Ludovic Courtès
2022-10-22 18:02 ` Efraim Flashner
2 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2022-10-20 13:13 UTC (permalink / raw)
To: Janneke Nieuwenhuizen; +Cc: guix-devel, Danny Milosavljevic
Hi,
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>>
>> This is exciting news! Looking forward to having full-source
>> bootstrapped AArch64… and it looks like there’s already activity on a
>> ‘wip-’ branch.
>
> Yes, it is! The ARM bootstrap story is still a bit flakey, as
> stage0-posix does not support ARM. So, ARM would need
> %bootstrap-mescc-tools and %bootstrap-mes binary seeds...meh.
By “ARM”, you mean the 32-bit ARMv7 ISA, which armhf-linux targets,
right? (AArch64, aka. ARMv8, is also “ARM”. :-))
> However, aarch64-linux now bootstraps from 526 bytes all the way until
> gcc-core-mesboot 2,95.3. Very nice!
Impressive!
> We're still stuck at building a full gcc+glibc combo;
> glibc-mesboot-2.2.5 builds, but possibly not correctly; as the full
> gcc-mesboot0 (2.95.3) build fails at configure time: gcc-core-mesboot0 +
> glibc-mesboot0
>
> ?: 0 [execle "./gencheck" # "./gencheck"]
> ERROR: In procedure execle: Exec format error
>
> Not sure what to do here. We could somehow try to debug/bisect this.
> We could try to use a newer glibc; glibc-2.2.5 happened during the
> OABI/EABI switch and is heavily patched.
This issue is on aarch64-linux? What does “file gencheck” say?
> Or, we could try to remove glibc-2.2.5/gcc-2.95.3 altogether and aim
> for a direct tcc => gcc-4.6.4. We need to go that way anyway for
> RISCV.
That sounds like the best approach longer-term, but possibly more work
than figuring out the issue above?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: GNU Mes 0.24.1 released
2022-10-19 19:57 ` Efraim Flashner
@ 2022-10-20 14:11 ` Jan Nieuwenhuizen
0 siblings, 0 replies; 7+ messages in thread
From: Jan Nieuwenhuizen @ 2022-10-20 14:11 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel, Danny Milosavljevic
Efraim Flashner writes:
Hi Efraim,
> On Wed, Oct 19, 2022 at 09:41:20PM +0200, Janneke Nieuwenhuizen wrote:
>
> Which hardware are you building on? On my pine64 I'm getting stuck at
> tcc-0.9.26-1134-g80114c4d
> On commit 519f4c8c9a0b191e9a447116685393c2fed4cd3b
>
> starting phase `build'
> CCLD mes-tcc
> mkdir -p /gnu/store/d3kcgm0z3yyc7bplaacr7g0j8gk36h5j-tcc-boot0-0.9.26-1134-g80114c4d/lib/tcc
> rm -f crt1.o;
> cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/crt1.c .
> crt1.c:149: warning: implicit declaration of function 'main'
> rm -f crti.o;
> cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/crti.c .
> rm -f crtn.o;
> cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/crtn.c .
> rm -f libc.a
> cp -f /gnu/store/nli76zd955d9xksy01qrfzlizq4c28kd-mes-boot-0.24.1//lib/libc+gnu.c libc.c
> error: in phase 'build': uncaught exception:
> srfi-34 #<condition &invoke-error [program: "sh" arguments: ("bootstrap.sh") exit-status: 1 term-signal: #f stop-signal: #f] 10f6100>
> phase `build' failed after 21994.9 seconds
Oops. Not sure what happened on my side, but yeah this error reproduces
for me. I've pushed an updated tcc-boot0 to wip-aarch64-bootstrap.
Greetings,
Janneke
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://lilypond.org
Freelance IT https://JoyOfSource.com | Avatar® https://AvatarAcademy.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: GNU Mes 0.24.1 released
2022-10-19 19:41 ` Janneke Nieuwenhuizen
2022-10-19 19:57 ` Efraim Flashner
2022-10-20 13:13 ` Ludovic Courtès
@ 2022-10-22 18:02 ` Efraim Flashner
2 siblings, 0 replies; 7+ messages in thread
From: Efraim Flashner @ 2022-10-22 18:02 UTC (permalink / raw)
To: Janneke Nieuwenhuizen
Cc: Ludovic Courtès, guix-devel, Danny Milosavljevic
[-- Attachment #1: Type: text/plain, Size: 2149 bytes --]
On Wed, Oct 19, 2022 at 09:41:20PM +0200, Janneke Nieuwenhuizen wrote:
> Ludovic Courtès writes:
>
> Hey!
>
> > Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
> >
> > This is exciting news! Looking forward to having full-source
> > bootstrapped AArch64… and it looks like there’s already activity on a
> > ‘wip-’ branch.
>
> Yes, it is! The ARM bootstrap story is still a bit flakey, as
> stage0-posix does not support ARM. So, ARM would need
> %bootstrap-mescc-tools and %bootstrap-mes binary seeds...meh.
>
> However, aarch64-linux now bootstraps from 526 bytes all the way until
> gcc-core-mesboot 2,95.3. Very nice!
>
> We're still stuck at building a full gcc+glibc combo;
> glibc-mesboot-2.2.5 builds, but possibly not correctly; as the full
> gcc-mesboot0 (2.95.3) build fails at configure time: gcc-core-mesboot0 +
> glibc-mesboot0
>
> ?: 0 [execle "./gencheck" # "./gencheck"]
> ERROR: In procedure execle: Exec format error
>
> Not sure what to do here. We could somehow try to debug/bisect this.
> We could try to use a newer glibc; glibc-2.2.5 happened during the
> OABI/EABI switch and is heavily patched. Or, we could try to remove
> glibc-2.2.5/gcc-2.95.3 altogether and aim for a direct tcc => gcc-4.6.4.
> We need to go that way anyway for RISCV.
I noticed that when offloading from my x86_64 box to my aarch64 machine
target gets (%current-system) from the originating system, not from the
system doing the building. I'm testing moving the '(let ((triplet ...'
code down from the top of the definition to inside the arguments. I
didn't see a difference with 'guix build -d' for x86_64 from x86_64, but
the derivation did change with the planned offload to an aarch64
machine.
I looked into gcc-2.95 more than I wanted to last week with GHC-4.08,
would it help if we specified we wanted armv4 or armv4t or strongswan
instead of "generic"?
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-10-24 1:34 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-16 8:59 GNU Mes 0.24.1 released Janneke Nieuwenhuizen
2022-10-19 15:32 ` Ludovic Courtès
2022-10-19 19:41 ` Janneke Nieuwenhuizen
2022-10-19 19:57 ` Efraim Flashner
2022-10-20 14:11 ` Jan Nieuwenhuizen
2022-10-20 13:13 ` Ludovic Courtès
2022-10-22 18:02 ` Efraim Flashner
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.