20d92bec90
* PORTING (Setup environment): Use nyacc 1.00.2. Prefer git-minimal over git to avoid dependencies on subversion and graphic libraries. Add riscv64-linux example.
85 lines
3.3 KiB
Org Mode
85 lines
3.3 KiB
Org Mode
#+COMMENT: -*- org -*-
|
|
#+TITLE: Porting GNU Mes
|
|
|
|
* Porting GNU Mes to ARM
|
|
|
|
The ARM port can be found in wip-arm on savannah.
|
|
|
|
For development, we use Guix's qemu-binfmt-service-type.
|
|
|
|
** Guix Setup, see [[info:guix#Virtualization%20Services][Virtualization Services]].
|
|
|
|
Add something like
|
|
#+BEGIN_SRC scheme
|
|
(service qemu-binfmt-service-type
|
|
(qemu-binfmt-configuration
|
|
(platforms (lookup-qemu-platforms "arm"))
|
|
(guix-support? #t)))
|
|
#+END_SRC
|
|
to your config.scm and run guix system reconfigure.
|
|
|
|
** Setup environment
|
|
|
|
For example (note: ARM is no longer a 'port', see HACKING)
|
|
#+BEGIN_SRC bash
|
|
guix shell --system=armhf-linux --pure bash coreutils diffutils findutils gawk gcc-toolchain grep git-minimal guile gzip help2man make mescc-tools nyacc@1.00.2 openssh-sans-x pkg-config sed tar texinfo
|
|
guix shell --system=aarch64-linux --pure bash coreutils diffutils findutils gawk gcc-toolchain grep git-minimal guile gzip help2man m2-planet make mescc-tools nyacc@1.00.2 openssh-sans-x pkg-config sed tar texinfo
|
|
guix shell --system=riscv64-linux --pure bash coreutils diffutils findutils gawk gcc-toolchain grep git-minimal guile gzip help2man m2-planet make mescc-tools nyacc@1.00.2 openssh-sans-x pkg-config sed tar texinfo
|
|
#+END_SRC
|
|
|
|
** Try it
|
|
#+BEGIN_SRC bash
|
|
CC=gnu-triplet-gcc ./configure --with-courage --with-system-libc
|
|
./simple.sh
|
|
#+END_SRC
|
|
|
|
some failures are expected.
|
|
|
|
** Build it
|
|
#+BEGIN_SRC bash
|
|
./configure --with-courage --with-system-libc
|
|
make MES=guile
|
|
make check
|
|
#+END_SRC
|
|
|
|
expect many failures. Non-system-libc, i.e. using the Mes C Library is currently WIP.
|
|
|
|
* Porting GNU Mes to x86_64
|
|
|
|
The x86_64 port is almost done, only a few bugs remain. The Guix
|
|
bootstrap for x86_64 uses x86 mes and that is not expected to change.
|
|
|
|
* Porting GNU Mes to GNU/Hurd
|
|
|
|
The Hurd port can be found in wip-hurd on savannah. For development, we
|
|
use a Debian GNU/Hurd vm.
|
|
|
|
* Porting GNU Mes to FreeBSD
|
|
The FreeBSD port can be found in wip-freebsd on savannah.
|
|
|
|
* Porting the Reduced Binary Seed bootstrap to NixOS
|
|
The NixOS port of the Reduced Binary Seed bootstrap lives on the
|
|
mes-bootstrap branch in https://github.com/xwvvvvwx/nixpkgs
|
|
|
|
* Porting the Reduced Binary Seed bootstrap to Debian GNU/Linux
|
|
To port the Reduced Binary Seed bootstrap to a traditional distribution
|
|
such as Debian, two things need to happen: the bootstrap must be ported
|
|
and the distribution build process needs to change to start from a only
|
|
binary seed.
|
|
|
|
The porting aspect is probably easiest: we start by packaging GNU Mes as
|
|
a regular package. Having Mes built as a regular package, we can then
|
|
build a bootstrap Mes. This bootstrap Mes can be used to build tinycc,
|
|
and so on.
|
|
|
|
Once we have shown that the Debian base system can be bootstrapped from
|
|
a Reduced Binary seed, thus significantly reducing the Trusted Computing
|
|
Base (TCB), strategic decisions about the build process can start.
|
|
|
|
* Legalese
|
|
Copyright © 2019,2022,2023 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
|
|
|
|
Copying and distribution of this file, with or without modification,
|
|
are permitted in any medium without royalty provided the copyright
|
|
notice and this notice are preserved.
|