about summary refs log tree commit diff
path: root/pkgs/os-specific/linux/minimal-bootstrap
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-05-14 19:27:15 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-05-14 19:27:15 -0400
commit23f849f49d982d7251773a6319af81259b20e06b (patch)
treec2b237f49b6d3aac8700cbb105db23009ec116dd /pkgs/os-specific/linux/minimal-bootstrap
parent5a78c28a10a9d39485511a8f33a163c8d156a9d5 (diff)
downloadnixlib-23f849f49d982d7251773a6319af81259b20e06b.tar
nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.gz
nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.bz2
nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.lz
nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.xz
nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.zst
nixlib-23f849f49d982d7251773a6319af81259b20e06b.zip
minimal-boostrap.mes: Separate compiler and libs
This matches tinycc, and what is generally done in Nixpkgs.
Diffstat (limited to 'pkgs/os-specific/linux/minimal-bootstrap')
-rw-r--r--pkgs/os-specific/linux/minimal-bootstrap/default.nix2
-rw-r--r--pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix4
-rw-r--r--pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix101
-rw-r--r--pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix2
-rw-r--r--pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix6
5 files changed, 63 insertions, 52 deletions
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/default.nix
index 4a5c9b380588..5907cdb4cda8 100644
--- a/pkgs/os-specific/linux/minimal-bootstrap/default.nix
+++ b/pkgs/os-specific/linux/minimal-bootstrap/default.nix
@@ -30,7 +30,7 @@ lib.makeScope
     inherit (callPackage ./utils.nix { }) fetchurl derivationWithMeta writeTextFile writeText;
 
     test = kaem.runCommand "minimal-bootstrap-test" {} ''
-      echo ${mes.tests.get-version}
+      echo ${mes.compiler.tests.get-version}
       echo ${tinycc-mes.compiler.tests.chain}
       mkdir ''${out}
     '';
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix
index d9649bb85a24..46cd06e53b28 100644
--- a/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix
+++ b/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix
@@ -20,8 +20,8 @@ kaem.runCommand "${pname}-${version}" {
   };
 } ''
   mkdir -p ''${out}/bin
-  ${mes}/bin/mes --no-auto-compile -e main ${mes}/bin/mescc.scm -- \
-    -L ${mes}/lib \
+  ${mes.compiler}/bin/mes --no-auto-compile -e main ${mes.srcPost.bin}/bin/mescc.scm -- \
+    -L ${mes.libs}/lib \
     -lc+tcc \
     -o ''${out}/bin/ln \
     ${src}
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix
index 9add682eb66c..494e2133bd5a 100644
--- a/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix
+++ b/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix
@@ -170,59 +170,70 @@ let
   libc = mkLib "libc" libc_SOURCES;
   libc_tcc = mkLib "libc+tcc" libc_tcc_SOURCES;
 
-in kaem.runCommand "${pname}-${version}" {
-  inherit pname version;
+  # Recompile Mes and Mes C library using mes-m2 bootstrapped Mes
+  libs = kaem.runCommand "${pname}-m2-libs-${version}" {
+    inherit pname version;
 
-  passthru = { inherit src srcPost srcPrefix nyacc; };
-  passthru.tests.get-version = result: kaem.runCommand "${pname}-get-version-${version}" {} ''
-    ${result}/bin/mes --version
-    mkdir ''${out}
-  '';
+    passthru.tests.get-version = result: kaem.runCommand "${pname}-get-version-${version}" {} ''
+      ${result}/bin/mes --version
+      mkdir ''${out}
+    '';
 
-  inherit meta;
-}
-''
-  LIBDIR=''${out}/lib
-  BINDIR=''${out}/bin
+    inherit meta;
+  }
+  ''
+    LIBDIR=''${out}/lib
+    mkdir -p ''${out} ''${LIBDIR}
 
-  mkdir -p ''${out} ''${LIBDIR} ''${BINDIR}
+    mkdir -p ''${LIBDIR}/x86-mes
 
-  cp ${srcPost.bin}/bin/mescc.scm ''${BINDIR}/mescc.scm
-  cp ${srcPost.bin}/bin/mes-m2 ''${BINDIR}/mes-m2
-  chmod 555 ''${BINDIR}/mes-m2
+    # crt1.o
+    cp ${crt1}/crt1.o ''${LIBDIR}/x86-mes
+    cp ${crt1}/crt1.s ''${LIBDIR}/x86-mes
 
-  # Recompile Mes and Mes C library using mes-m2 bootstrapped Mes
-  mkdir -p ''${LIBDIR}/x86-mes
+    # libc-mini.a
+    cp ${libc-mini}/lib/libc-mini.a ''${LIBDIR}/x86-mes
+    cp ${libc-mini}/lib/libc-mini.s ''${LIBDIR}/x86-mes
 
-  # crt1.o
-  cp ${crt1}/crt1.o ''${LIBDIR}/x86-mes
-  cp ${crt1}/crt1.s ''${LIBDIR}/x86-mes
+    # libmescc.a
+    cp ${libmescc}/lib/libmescc.a ''${LIBDIR}/x86-mes
+    cp ${libmescc}/lib/libmescc.s ''${LIBDIR}/x86-mes
 
-  # libc-mini.a
-  cp ${libc-mini}/lib/libc-mini.a ''${LIBDIR}/x86-mes
-  cp ${libc-mini}/lib/libc-mini.s ''${LIBDIR}/x86-mes
+    # libc.a
+    cp ${libc}/lib/libc.a ''${LIBDIR}/x86-mes
+    cp ${libc}/lib/libc.s ''${LIBDIR}/x86-mes
 
-  # libmescc.a
-  cp ${libmescc}/lib/libmescc.a ''${LIBDIR}/x86-mes
-  cp ${libmescc}/lib/libmescc.s ''${LIBDIR}/x86-mes
+    # libc+tcc.a
+    cp ${libc_tcc}/lib/libc+tcc.a ''${LIBDIR}/x86-mes
+    cp ${libc_tcc}/lib/libc+tcc.s ''${LIBDIR}/x86-mes
+  '';
 
-  # libc.a
-  cp ${libc}/lib/libc.a ''${LIBDIR}/x86-mes
-  cp ${libc}/lib/libc.s ''${LIBDIR}/x86-mes
+  # Build mes itself
+  compiler = kaem.runCommand "${pname}-${version}" {
+    inherit pname version;
 
-  # libc+tcc.a
-  cp ${libc_tcc}/lib/libc+tcc.a ''${LIBDIR}/x86-mes
-  cp ${libc_tcc}/lib/libc+tcc.s ''${LIBDIR}/x86-mes
+    passthru.tests.get-version = result: kaem.runCommand "${pname}-get-version-${version}" {} ''
+      ${result}/bin/mes --version
+      mkdir ''${out}
+    '';
 
-  # Build mes itself
-  ''${out}/bin/mes-m2 -e main ''${out}/bin/mescc.scm -- \
-    --base-address 0x08048000 \
-    -L ''${srcPrefix}/lib \
-    -L ''${LIBDIR} \
-    -lc \
-    -lmescc \
-    -nostdlib \
-    -o ''${out}/bin/mes \
-    ''${LIBDIR}/x86-mes/crt1.o \
-    ${lib.concatMapStringsSep " " (getRes ".o") (map compile mes_SOURCES)}
-''
+    inherit meta;
+  }
+  ''
+    mkdir -p ''${out}/bin
+
+    ${srcPost.bin}/bin/mes-m2 -e main ${srcPost.bin}/bin/mescc.scm -- \
+      --base-address 0x08048000 \
+      -L ''${srcPrefix}/lib \
+      -L ${libs}/lib \
+      -lc \
+      -lmescc \
+      -nostdlib \
+      -o ''${out}/bin/mes \
+      ${libs}/lib/x86-mes/crt1.o \
+      ${lib.concatMapStringsSep " " (getRes ".o") (map compile mes_SOURCES)}
+  '';
+in {
+  inherit srcPost srcPrefix nyacc;
+  inherit compiler libs;
+}
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix b/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix
index 94ad272a2762..b21bd744e5fe 100644
--- a/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix
+++ b/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix
@@ -6,7 +6,7 @@
 }:
 let
   pname = "mes-libc";
-  inherit (mes) version;
+  inherit (mes.compiler) version;
 
   sources = (import ./sources.nix).x86.linux.gcc;
   inherit (sources) libtcc1_SOURCES libc_gnu_SOURCES;
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix b/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix
index 86bcf18643c9..1f30b63cbd0e 100644
--- a/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix
+++ b/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix
@@ -49,7 +49,7 @@ let
       '';
     } ''
       catm config.h
-      ${mes}/bin/mes --no-auto-compile -e main ${mes}/bin/mescc.scm -- \
+      ${mes.compiler}/bin/mes --no-auto-compile -e main ${mes.srcPost.bin}/bin/mescc.scm -- \
         -S \
         -o tcc.s \
         -I . \
@@ -73,8 +73,8 @@ let
         -D ONE_SOURCE=1 \
         ${src}/tcc.c
       mkdir -p ''${out}/bin
-      ${mes}/bin/mes --no-auto-compile -e main ${mes}/bin/mescc.scm -- \
-        -L ${mes}/lib \
+      ${mes.compiler}/bin/mes --no-auto-compile -e main ${mes.srcPost.bin}/bin/mescc.scm -- \
+        -L ${mes.libs}/lib \
         -l c+tcc \
         -o ''${out}/bin/tcc \
         tcc.s