From 40f40ea850f117c608e57d842848978c6cfb95a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Fri, 11 Jun 2021 22:39:50 +0100 Subject: [PATCH] Switch to using mes/nyacc tar packages. --- .gitmodules | 12 ------ SHA256SUMS.sources | 2 + sysa.py | 57 +++++--------------------- sysa/after.kaem | 71 ++++++++++++++++++--------------- sysa/mes/checksums | 2 +- sysa/mes/mes.kaem | 32 +++++++++++---- sysa/mes/src/mes | 1 - sysa/mes/src/nyacc | 1 - sysa/stage0-posix/src | 2 +- sysa/tcc-0.9.26/tcc-0.9.26.kaem | 1 + 10 files changed, 77 insertions(+), 104 deletions(-) delete mode 160000 sysa/mes/src/mes delete mode 160000 sysa/mes/src/nyacc diff --git a/.gitmodules b/.gitmodules index 2696e67..c1f23b8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,21 +6,9 @@ [submodule "sysa/mescc-tools-seed/src/mescc-tools-seed"] path = sysa/stage0-posix/src url = https://github.com/oriansj/mescc-tools-seed/ -[submodule "sysa/mes/src/mes"] - path = sysa/mes/src/mes - url = https://gitlab.com/janneke/mes.git -[submodule "sysa/mes/src/nyacc"] - path = sysa/mes/src/nyacc - url = https://git.savannah.gnu.org/git/nyacc.git [submodule "sysa/tcc-0.9.26/src/tcc-0.9.26"] path = sysa/tcc-0.9.26/src/tcc-0.9.26 url = https://gitlab.com/janneke/tinycc -[submodule "sysa/tcc-0.9.27/src/tcc-0.9.27"] - path = sysa/tcc-0.9.27/src/tcc-0.9.27 - url = git://repo.or.cz/tinycc.git [submodule "sysa/tcc-0.9.26/src/mes-libc"] path = sysa/tcc-0.9.26/src/mes-libc url = https://gitlab.com/janneke/mes -[submodule "sysa/tcc-0.9.27/src/mes-libc"] - path = sysa/tcc-0.9.27/src/mes-libc - url = https://gitlab.com/janneke/mes diff --git a/SHA256SUMS.sources b/SHA256SUMS.sources index a85f912..374d556 100644 --- a/SHA256SUMS.sources +++ b/SHA256SUMS.sources @@ -58,10 +58,12 @@ c4e63399b12f5858d11c44cea8e92f21cd564f8548e488dadc84046b424c80fc libtool-2.2.4. 64b30b41fde2ebf669e6af489883fb1df6a06ac30555a96cfa3c39ecce7267dd make-3.80.tar.gz e40b8f018c1da64edd1cc9a6fce5fa63b2e707e404e20cad91fbae337c98a5b7 make-4.2.1.tar.gz 7a140e43565181bb54bf416117ea0efff057922ed284db5fc98b3740a7f3d956 mes-0.23.tar.gz +f02cfe291e49fe44bc8712bf15536654fc643c0a02b3598237fb646884d9eb37 mes.tar.gz 17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459 mpc-1.2.1.tar.gz 0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f mpfr-4.1.0.tar.xz 1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3 musl-1.1.24.tar.gz 9b969322012d796dc23dda27a35866034fa67d8fb67e0e2c45c913c3d43219dd musl-1.2.2.tar.gz +f36e4fb7dd524dc3f4b354d3d5313f69e7ce5a6ae93711e8cf6d51eaa8d2b318 nyacc-1.00.2.tar.gz ecb5c6469d732bcf01d6ec1afe9e64f1668caba5bfdb103c28d7f537ba3cdb8a patch-2.5.9.tar.gz ac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd patch-2.7.6.tar.xz 1ae43c8d2983404b9eec61c96e3ffa27e7b07e08215c95c015a4ab0095373ef3 perl-5.000.tar.gz diff --git a/sysa.py b/sysa.py index fb0ef17..5adefb4 100755 --- a/sysa.py +++ b/sysa.py @@ -167,10 +167,6 @@ class SysA: mescc_tools_extra_dir = os.path.join(stage0_posix_base_dir, 'mescc-tools-extra') copytree(mescc_tools_extra_dir, self.tmp_dir) - # At the moment not useful for bootstrap but easier to keep it - mes_m2_dir = os.path.join(stage0_posix_base_dir, 'mes-m2') - copytree(mes_m2_dir, self.tmp_dir) - # bootstrap seeds bootstrap_seeds_dir = os.path.join(self.sysa_dir, 'stage0-posix', 'src', 'bootstrap-seeds') copytree(bootstrap_seeds_dir, self.tmp_dir) @@ -185,6 +181,10 @@ class SysA: # create directories needed os.mkdir(os.path.join(self.tmp_dir, 'bin')) + # stage0-posix checksums + shutil.copy2(os.path.join(stage0_posix_base_dir, self.arch + '.answers'), + os.path.join(self.tmp_dir, self.arch + '.answers')) + def after(self): """ Prepare sources in /after directory. @@ -192,11 +192,8 @@ class SysA: the stage0-posix one is hella messy. """ - self.create_after_dirs() self.create_configuration_file() - self.stage0_posix_checksum() self.deploy_extra_files() - self.mes() self.tcc_0_9_26() self.get_packages() @@ -205,43 +202,11 @@ class SysA: Creates bootstrap.cfg file which would contain options used to customize bootstrap. """ + os.mkdir(self.after_dir) config_path = os.path.join(self.after_dir, "bootstrap.cfg") with open(config_path, "w") as config: config.write("FORCE_TIMESTAMPS=" + str(self.force_timestamps)) - def create_after_dirs(self): - """ - Create some empty directories for early bootstrap - This list can be eventually reduced if we include a small - mkdir implementation written for M2-Planet. - """ - bin_dir = os.path.join(self.after_dir, 'bin') - lib_dir = os.path.join(self.after_dir, 'lib') - include_dir = os.path.join(self.after_dir, 'include') - - os.mkdir(self.after_dir) - os.mkdir(bin_dir) - os.mkdir(lib_dir) - os.mkdir(include_dir) - os.mkdir(os.path.join(lib_dir, self.arch+'-mes')) - os.mkdir(os.path.join(lib_dir, 'tcc')) - os.mkdir(os.path.join(lib_dir, 'linux')) - os.mkdir(os.path.join(lib_dir, 'linux', self.arch+'-mes')) - os.mkdir(os.path.join(include_dir, 'mes')) - os.mkdir(os.path.join(include_dir, 'gnu')) - os.mkdir(os.path.join(include_dir, 'linux')) - os.mkdir(os.path.join(include_dir, 'linux', self.arch)) - os.mkdir(os.path.join(include_dir, 'sys')) - os.mkdir(os.path.join(include_dir, 'mach')) - - # Needed for patch to work, although can be fixed with TMPDIR - os.mkdir(os.path.join(self.tmp_dir, 'tmp')) - - def stage0_posix_checksum(self): - """Early checksum files""" - shutil.copy2(os.path.join(self.sysa_dir, 'stage0-posix', 'checksums'), - os.path.join(self.after_dir, 'stage0-posix-checksums')) - def deploy_extra_files(self): """Deploy misc files""" extra_files = ['helpers.sh', 'run.sh', 'run2.sh'] @@ -250,13 +215,6 @@ class SysA: shutil.copy2(os.path.join(self.git_dir, 'SHA256SUMS.sources'), self.after_dir) - def mes(self): - """GNU Mes""" - copytree(os.path.join(self.sysa_dir, 'mes'), self.after_dir) - mes_dir = os.path.join(self.after_dir, 'mes', 'src', 'mes') - os.mkdir(os.path.join(mes_dir, 'bin')) - os.mkdir(os.path.join(mes_dir, 'm2')) - def tcc_0_9_26(self): """TinyCC 0.9.26 (patched by janneke)""" copytree(os.path.join(self.sysa_dir, 'tcc-0.9.26'), self.after_dir) @@ -265,6 +223,11 @@ class SysA: def get_packages(self): """Prepare remaining sources""" + # mes-0.22 snapshot with m2 fixes + self.get_file(["https://github.com/oriansj/mes-m2/archive/a7522f26ee020dc498219d0122ea1b7d345bcdd5.tar.gz", + "https://download.savannah.gnu.org/releases/nyacc/nyacc-1.00.2.tar.gz"], + output=["mes.tar.gz", "nyacc-1.00.2.tar.gz"]) + # gzip 1.2.4 self.get_file("https://mirrors.kernel.org/gnu/gzip/gzip-1.2.4.tar", mkbuild=True) diff --git a/sysa/after.kaem b/sysa/after.kaem index 4a59227..e16f23a 100755 --- a/sysa/after.kaem +++ b/sysa/after.kaem @@ -8,57 +8,62 @@ set -ex -PATH=/after/bin:/bin +PATH=/bin # Set commonly used variables prefix=/after bindir=${prefix}/bin libdir=${prefix}/lib incdir=${prefix}/include -MES_PREFIX=${prefix}/mes/src/mes -GUILE_LOAD_PATH=${prefix}/mes/src/nyacc/module:${prefix}/mes/src/mes/mes/module:${prefix}/mes/src/mes/module +NYACC_PKG=nyacc-1.00.2 +MES_PKG=mes +MES_PREFIX=${prefix}/${MES_PKG}/src/mes-m2-a7522f26ee020dc498219d0122ea1b7d345bcdd5 +GUILE_LOAD_PATH=${MES_PREFIX}/mes/module:${MES_PREFIX}/module:${prefix}/${MES_PKG}/src/${NYACC_PKG}/module cd ${prefix} +mkdir ${bindir} + # Remove remaining dependencies on / (root of /after) -cp ../bin/blood-elf bin/blood-elf -cp ../bin/catm bin/catm -cp ../bin/chmod bin/chmod -cp ../bin/get_machine bin/get_machine -cp ../bin/hex2 bin/hex2 -cp ../bin/kaem bin/kaem -cp ../bin/M1 bin/M1 -cp ../bin/M2-Planet bin/M2-Planet -cp ../bin/mes-m2 bin/mes-m2 -cp ../bin/sha256sum bin/sha256sum -cp ../bin/ungz bin/ungz -cp ../bin/untar bin/untar +cp /bin/blood-elf bin/blood-elf +cp /bin/catm bin/catm +cp /bin/chmod bin/chmod +cp /bin/get_machine bin/get_machine +cp /bin/hex2 bin/hex2 +cp /bin/kaem bin/kaem +cp /bin/M1 bin/M1 +cp /bin/M2-Planet bin/M2-Planet +cp /bin/mkdir bin/mkdir +cp /bin/sha256sum bin/sha256sum +cp /bin/ungz bin/ungz +cp /bin/untar bin/untar -/bin/cp /bin/cp /after/bin/cp +cp /bin/cp /after/bin/cp -/bin/chmod 755 bin/blood-elf -/bin/chmod 755 bin/catm -/bin/chmod 755 bin/chmod -/bin/chmod 755 bin/cp -/bin/chmod 755 bin/get_machine -/bin/chmod 755 bin/hex2 -/bin/chmod 755 bin/kaem -/bin/chmod 755 bin/M1 -/bin/chmod 755 bin/M2-Planet -/bin/chmod 755 bin/mes-m2 -/bin/chmod 755 bin/sha256sum -/bin/chmod 755 bin/ungz -/bin/chmod 755 bin/untar - -sha256sum -c stage0-posix-checksums +chmod 755 bin/blood-elf +chmod 755 bin/catm +chmod 755 bin/chmod +chmod 755 bin/cp +chmod 755 bin/get_machine +chmod 755 bin/hex2 +chmod 755 bin/kaem +chmod 755 bin/M1 +chmod 755 bin/M2-Planet +chmod 755 bin/mkdir +chmod 755 bin/sha256sum +chmod 755 bin/ungz +chmod 755 bin/untar PATH=/after/bin +# Needed for patch to work +mkdir /tmp + # mes -pkg="mes" +pkg=${MES_PKG} cd ${pkg} kaem --file ${pkg}.kaem -cd .. +cd ${prefix} # tcc 0.9.26 pkg="tcc-0.9.26" diff --git a/sysa/mes/checksums b/sysa/mes/checksums index a3a9675..bc825dc 100644 --- a/sysa/mes/checksums +++ b/sysa/mes/checksums @@ -1,4 +1,4 @@ -d2e38ce7eab153cb2a019de92d12f1afc81f3ca0d4e068597fdab472250c7408 /after/bin/mes-m2 +e835fdb1cd8c7852e8c879f1efdea6f7392bdd04938f5a01a6199ab2730fac4b /after/bin/mes-m2 b91c81e543b878ead4cc975df75e3d211f7bd2dcdd4c90e42df99d44311ce71e /after/bin/mescc.scm 90811dafd33ad56b8e4b0adcc04263f9329b9047b7cc337abe8151a75017172c /after/lib/x86-mes/crt1.s e065af5f73d40b20029e9ba23143660f99c6abacb82d1b4c8f2067a4e395d553 /after/lib/x86-mes/crt1.o diff --git a/sysa/mes/mes.kaem b/sysa/mes/mes.kaem index 9eaa03b..fb5b653 100755 --- a/sysa/mes/mes.kaem +++ b/sysa/mes/mes.kaem @@ -12,18 +12,31 @@ MES_ARENA=20000000 MES_MAX_ARENA=20000000 MES_STACK=6000000 MES=${bindir}/mes-m2 -libdir=${prefix}/mes/src/mes/lib +libdir=${MES_PREFIX}/lib cp files/mescc.scm ${bindir}/ chmod 755 ${bindir}/mescc.scm -cp files/config.h src/mes/include/mes +# Unpack +cd src +ungz ${NYACC_PKG}.tar.gz +untar ${NYACC_PKG}.tar +ungz ${MES_PKG}.tar.gz +untar ${MES_PKG}.tar -cd src/mes +cp ../files/config.h ${MES_PREFIX}/include/mes -# Bootstrap Mes using M2-Planet -kaem --verbose --file kaem.run -chmod 755 ${MES} +cd ${MES_PREFIX} + +# These files are symlinked in the repo +cp mes/module/srfi/srfi-9-struct.mes mes/module/srfi/srfi-9.mes +cp mes/module/srfi/srfi-9/gnu-struct.mes mes/module/srfi/srfi-9/gnu.mes + +# Build mes-m2 +mkdir bin m2 +kaem -v -f kaem.run +cp bin/mes-m2 ${bindir}/mes-m2 +chmod 755 ${bindir}/mes-m2 # Build Mes C library using mes-m2 bootstrapped Mes @@ -184,6 +197,10 @@ ${MES} --no-auto-compile -e main ${bindir}/mescc.scm -- -c -D HAVE_CONFIG_H=1 -I catm ${libdir}/x86-mes/libc+tcc.a ${libdir}/x86-mes/libc.a islower.o isupper.o tolower.o toupper.o abtod.o dtoab.o search-path.o execvp.o fclose.o fdopen.o ferror.o fflush.o fopen.o fprintf.o fread.o fseek.o ftell.o fwrite.o printf.o remove.o snprintf.o sprintf.o sscanf.o vfprintf.o vprintf.o vsnprintf.o vsprintf.o vsscanf.o calloc.o qsort.o strtod.o strtof.o strtol.o strtold.o strtoll.o strtoul.o strtoull.o memmem.o strcat.o strchr.o strlwr.o strncpy.o strrchr.o strstr.o strupr.o sigaction.o ldexp.o mprotect.o localtime.o sigemptyset.o setjmp.o close.o rmdir.o stat.o catm ${libdir}/x86-mes/libc+tcc.s ${libdir}/x86-mes/libc.s islower.s isupper.s tolower.s toupper.s abtod.s dtoab.s search-path.s execvp.s fclose.s fdopen.s ferror.s fflush.s fopen.s fprintf.s fread.s fseek.s ftell.s fwrite.s printf.s remove.s snprintf.s sprintf.s sscanf.s vfprintf.s vprintf.s vsnprintf.s vsprintf.s vsscanf.s calloc.s qsort.s strtod.s strtof.s strtol.s strtold.s strtoll.s strtoul.s strtoull.s memmem.s strcat.s strchr.s strlwr.s strncpy.s strrchr.s strstr.s strupr.s sigaction.s ldexp.s mprotect.s localtime.s sigemptyset.s setjmp.s close.s rmdir.s stat.s +# Make directories +mkdir ${prefix}/lib/linux ${incdir}/mes ${incdir}/sys ${incdir}/linux +mkdir ${prefix}/lib/x86-mes ${prefix}/lib/linux/x86-mes ${incdir}/linux/x86 + # Install libraries cp ${libdir}/x86-mes/libc.a ${prefix}/lib/x86-mes/ cp ${libdir}/x86-mes/libc+tcc.a ${prefix}/lib/x86-mes/ @@ -264,7 +281,6 @@ cp include/sys/ucontext.h ${incdir}/sys/ucontext.h cp include/sys/user.h ${incdir}/sys/user.h cp include/sys/wait.h ${incdir}/sys/wait.h -cd ../.. - # Checksums +cd ${prefix}/${MES_PKG} sha256sum -c checksums diff --git a/sysa/mes/src/mes b/sysa/mes/src/mes deleted file mode 160000 index 2ab4c5c..0000000 --- a/sysa/mes/src/mes +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2ab4c5c676cb66088b0fb8de03b40b01f07bd4e0 diff --git a/sysa/mes/src/nyacc b/sysa/mes/src/nyacc deleted file mode 160000 index 06a0985..0000000 --- a/sysa/mes/src/nyacc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 06a0985332cfbc76e759da50d228d5aa01b4f6a9 diff --git a/sysa/stage0-posix/src b/sysa/stage0-posix/src index 880e609..15a783e 160000 --- a/sysa/stage0-posix/src +++ b/sysa/stage0-posix/src @@ -1 +1 @@ -Subproject commit 880e60906b01bec7024d04250f41d9b6da4fa114 +Subproject commit 15a783e18f0f04a1195133f1ae9a3e799ef78ebf diff --git a/sysa/tcc-0.9.26/tcc-0.9.26.kaem b/sysa/tcc-0.9.26/tcc-0.9.26.kaem index f26f83c..7fd4d9a 100755 --- a/sysa/tcc-0.9.26/tcc-0.9.26.kaem +++ b/sysa/tcc-0.9.26/tcc-0.9.26.kaem @@ -76,6 +76,7 @@ mes-tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o unified-libc-3. mes-tcc -ar cr ${libdir}/libc.a unified-libc-1.o unified-libc-2.o unified-libc-3.o # libtcc1.a +mkdir ${libdir}/tcc mes-tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 lib/libtcc1.c mes-tcc -ar cr ${libdir}/tcc/libtcc1.a libtcc1.o