2020-12-16 23:19:25 +00:00
|
|
|
#!/bin/bash
|
|
|
|
set -ex
|
|
|
|
|
2021-01-12 12:04:13 +00:00
|
|
|
QEMU_CMD="${1:-qemu-system-x86_64}" # or 'chroot'
|
|
|
|
QEMU_RAM="${2:-8G}"
|
2021-01-09 08:19:16 +00:00
|
|
|
|
2020-12-17 00:25:36 +00:00
|
|
|
pushd sysa
|
|
|
|
|
|
|
|
# SYSTEM A
|
|
|
|
|
2021-01-12 06:27:03 +00:00
|
|
|
# Setup tmp
|
2020-12-16 23:19:25 +00:00
|
|
|
mkdir -p tmp/
|
|
|
|
sudo mount -t tmpfs -o size=8G tmpfs tmp
|
|
|
|
|
|
|
|
# base: mescc-tools-seed
|
2020-12-23 06:02:57 +00:00
|
|
|
# copy in all the mescc-tools-seed stuff
|
2020-12-16 23:19:25 +00:00
|
|
|
cp -r mescc-tools-seed/x86/* tmp
|
2021-01-10 05:02:38 +00:00
|
|
|
cp -r mescc-tools-seed/{M2-Planet,mes-m2} tmp/
|
|
|
|
cp -r mescc-tools-patched tmp/mescc-tools
|
2020-12-23 06:02:57 +00:00
|
|
|
# and the kaem seed
|
2020-12-17 00:25:36 +00:00
|
|
|
cp ../bootstrap-seeds/POSIX/x86/kaem-optional-seed tmp/init
|
|
|
|
cp ../bootstrap-seeds/POSIX/x86/kaem-optional-seed tmp/
|
|
|
|
cp -r ../bootstrap-seeds tmp/
|
2020-12-23 06:02:57 +00:00
|
|
|
# replace the init kaem with our own custom one
|
|
|
|
mv tmp/kaem.run tmp/mescc-tools-seed.kaem.run
|
|
|
|
cp base.kaem.run tmp/kaem.run
|
|
|
|
# create directories needed
|
2021-01-13 10:37:07 +00:00
|
|
|
mkdir -p tmp/bin
|
2020-12-16 23:19:25 +00:00
|
|
|
|
2021-01-09 08:19:16 +00:00
|
|
|
# after mescc-tools-seed we get into our own directory because
|
2020-12-23 06:02:57 +00:00
|
|
|
# the mescc-tools-seed one is hella messy
|
2021-01-13 10:37:07 +00:00
|
|
|
mkdir -p tmp/after/bin
|
|
|
|
mkdir -p tmp/after/{lib,include}
|
|
|
|
mkdir -p tmp/after/lib/{tcc,linux}
|
2021-01-09 08:19:16 +00:00
|
|
|
ln -s . tmp/after/lib/x86-mes
|
|
|
|
ln -s . tmp/after/lib/linux/x86-mes
|
2021-01-13 10:37:07 +00:00
|
|
|
mkdir -p tmp/after/include/{mes,gnu,linux,sys,mach}
|
|
|
|
mkdir -p tmp/after/include/linux/{x86,x86_64}
|
2021-01-14 10:45:36 +00:00
|
|
|
mkdir -p tmp/tmp
|
2020-12-23 06:02:57 +00:00
|
|
|
cp after.kaem tmp/
|
|
|
|
cp after.kaem.run tmp/after/kaem.run
|
|
|
|
|
2021-01-14 10:45:36 +00:00
|
|
|
# Copy in all of the patches
|
|
|
|
cp -r patches tmp/after/
|
|
|
|
|
2020-12-25 07:40:14 +00:00
|
|
|
# mescc-tools-extra
|
|
|
|
cp -r mescc-tools-extra tmp/after/
|
|
|
|
|
2020-12-16 23:19:25 +00:00
|
|
|
# blynn-compiler
|
2020-12-23 06:02:57 +00:00
|
|
|
pushd tmp/after
|
|
|
|
git clone ../../blynn-compiler-oriansj blynn-compiler
|
|
|
|
cp ../../blynn-compiler.kaem blynn-compiler/go.kaem
|
2021-01-13 10:37:07 +00:00
|
|
|
mkdir -p blynn-compiler/{bin,generated}
|
2020-12-16 23:19:25 +00:00
|
|
|
popd
|
|
|
|
|
2020-12-25 07:40:14 +00:00
|
|
|
# mes
|
2021-01-04 21:30:53 +00:00
|
|
|
cp -r mes tmp/after/
|
2021-01-09 08:19:16 +00:00
|
|
|
cp -r mes tmp/after/tcc-mes
|
2021-01-04 21:30:53 +00:00
|
|
|
ln -s lib/x86-mes tmp/after/mes/x86-mes
|
|
|
|
cp -r nyacc tmp/after/
|
2020-12-25 07:40:14 +00:00
|
|
|
cp mes.kaem tmp/after/
|
2021-01-04 21:30:53 +00:00
|
|
|
cp mes-files/mescc.scm tmp/after/bin/
|
|
|
|
cp mes-files/config.h tmp/after/mes/include/mes/
|
2021-01-09 08:19:16 +00:00
|
|
|
cp mes-files/config.h tmp/after/tcc-mes/include/mes/
|
2021-01-13 10:38:34 +00:00
|
|
|
mkdir -p tmp/after/mes/{bin,m2}
|
2020-12-25 07:40:14 +00:00
|
|
|
|
2021-01-10 23:40:25 +00:00
|
|
|
# tcc
|
2021-01-09 08:19:16 +00:00
|
|
|
cp tcc.kaem tmp/after/
|
2021-01-11 06:47:13 +00:00
|
|
|
cp -r tcc-0.9.26 tmp/after/
|
2021-01-10 23:40:25 +00:00
|
|
|
cp -r tcc-0.9.27 tmp/after/
|
2021-01-11 06:47:13 +00:00
|
|
|
pushd tmp/after/tcc-0.9.26
|
2021-01-09 08:19:16 +00:00
|
|
|
ln -s ../mes/module .
|
|
|
|
ln -s ../mes/mes .
|
|
|
|
ln -s /after/lib x86-mes
|
|
|
|
ln -s /after/lib/linux .
|
|
|
|
popd
|
|
|
|
|
2021-01-10 21:22:30 +00:00
|
|
|
mkdir -p ../sources
|
|
|
|
|
2021-01-11 17:57:12 +00:00
|
|
|
# sed 4.0.7
|
2021-01-14 10:45:36 +00:00
|
|
|
cp sed-4.0.7.kaem tmp/after/
|
|
|
|
cp -r sed-4.0.7 tmp/after/
|
|
|
|
|
|
|
|
# tcc patched
|
|
|
|
cp tcc-patched.kaem tmp/after/
|
2021-01-10 21:22:30 +00:00
|
|
|
|
2021-01-11 20:43:42 +00:00
|
|
|
# tar 1.12
|
|
|
|
url=https://ftp.gnu.org/gnu/tar/tar-1.12.tar.gz
|
|
|
|
pushd ../sources
|
|
|
|
wget --continue "$url"
|
|
|
|
popd
|
|
|
|
cp "$(basename $url .tar.gz).kaem" tmp/after
|
|
|
|
tar -C tmp/after -xf "../sources/$(basename $url)"
|
|
|
|
|
2021-01-11 22:34:37 +00:00
|
|
|
get_file() {
|
|
|
|
url=$1
|
|
|
|
pushd ../sources
|
|
|
|
wget --continue "$url"
|
|
|
|
popd
|
|
|
|
ext="${url##*.}"
|
|
|
|
if [ "$ext" = "tar" ]; then
|
2021-01-13 10:37:07 +00:00
|
|
|
bname=$(basename "$url" ".tar")
|
2021-01-11 22:34:37 +00:00
|
|
|
else
|
|
|
|
bname=$(basename "$url" ".tar.${ext}")
|
|
|
|
fi
|
2021-01-13 10:37:07 +00:00
|
|
|
if [ -f "${bname}."* ]; then
|
|
|
|
cp "${bname}."* tmp/after
|
2021-01-12 21:18:59 +00:00
|
|
|
fi
|
2021-01-11 22:34:37 +00:00
|
|
|
cp "../sources/$(basename "$url")" tmp/after
|
|
|
|
}
|
|
|
|
|
2021-01-12 06:27:03 +00:00
|
|
|
# gzip 1.2.4
|
2021-01-11 22:34:37 +00:00
|
|
|
get_file https://ftp.gnu.org/gnu/gzip/gzip-1.2.4.tar
|
2021-01-12 06:27:03 +00:00
|
|
|
|
|
|
|
# diffutils 2.7
|
2021-01-11 22:34:37 +00:00
|
|
|
get_file https://ftp.gnu.org/gnu/diffutils/diffutils-2.7.tar.gz
|
2021-01-11 20:52:52 +00:00
|
|
|
|
2021-01-13 10:51:31 +00:00
|
|
|
# patch 2.5.9
|
|
|
|
get_file https://ftp.gnu.org/pub/gnu/patch/patch-2.5.9.tar.gz
|
|
|
|
|
2021-01-14 10:45:36 +00:00
|
|
|
# patched tcc
|
|
|
|
cp tcc-patched.kaem tmp/after/
|
|
|
|
|
2021-01-14 10:47:08 +00:00
|
|
|
# make 3.80
|
|
|
|
get_file https://ftp.gnu.org/gnu/make/make-3.80.tar.gz
|
|
|
|
|
2020-12-16 23:19:25 +00:00
|
|
|
# General cleanup
|
|
|
|
find tmp -name .git -exec rm -rf \;
|
|
|
|
|
|
|
|
# initramfs
|
2021-01-12 06:27:03 +00:00
|
|
|
cd tmp
|
2020-12-16 23:19:25 +00:00
|
|
|
find . | cpio -H newc -o | gzip > initramfs.igz
|
2020-12-17 00:20:22 +00:00
|
|
|
|
|
|
|
# Run
|
2021-01-12 12:04:13 +00:00
|
|
|
if [ "${QEMU_CMD}" = 'chroot' ]; then
|
|
|
|
sudo PATH="/after/bin:${PATH}" chroot . /init
|
|
|
|
else
|
|
|
|
${QEMU_CMD} -enable-kvm \
|
|
|
|
-m "${QEMU_RAM:-8G}" \
|
|
|
|
-nographic \
|
|
|
|
-no-reboot \
|
|
|
|
-kernel ../../kernel -initrd initramfs.igz -append console=ttyS0
|
|
|
|
fi
|
2020-12-16 23:19:25 +00:00
|
|
|
|
2020-12-25 07:40:14 +00:00
|
|
|
cd ../..
|
2020-12-17 00:25:36 +00:00
|
|
|
|
2020-12-25 07:40:14 +00:00
|
|
|
# Cleanup
|
|
|
|
sudo umount sysa/tmp
|