2020-12-16 23:19:25 +00:00
|
|
|
#!/bin/bash
|
2021-02-08 06:23:31 +00:00
|
|
|
|
|
|
|
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
|
|
|
# SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de>
|
|
|
|
# SPDX-FileCopyrightText: 2020-2021 fosslinux <fosslinux@aussies.space>
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2020-12-16 23:19:25 +00:00
|
|
|
set -ex
|
|
|
|
|
2021-02-15 08:31:17 +00:00
|
|
|
QEMU_CMD="${1:-qemu-system-x86_64}" # or 'chroot' or 'minikernel'
|
2021-01-12 12:04:13 +00:00
|
|
|
QEMU_RAM="${2:-8G}"
|
2021-01-09 08:19:16 +00:00
|
|
|
|
2021-02-07 08:27:02 +00:00
|
|
|
GITDIR="$PWD/$(dirname "$0")"
|
|
|
|
if [ ! -f 'rootfs.sh' ]; then
|
2021-02-15 08:31:17 +00:00
|
|
|
echo 'must be run from base of repo'
|
|
|
|
exit 1
|
2021-02-07 08:27:02 +00:00
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
|
2021-01-20 10:07:47 +00:00
|
|
|
LOGFILE="$PWD/tmp/bootstrap.log"
|
|
|
|
|
2021-02-15 08:31:17 +00:00
|
|
|
_wget() {
|
|
|
|
local url="$1"
|
|
|
|
local dir="${CACHEDIR:-$GITDIR/sources}"
|
|
|
|
local file="${2:-$(basename "${url}")}"
|
|
|
|
mkdir -p "$dir"
|
|
|
|
test -s "$dir/$file" || command wget -O "$dir/$file" "$url"
|
|
|
|
cp -v "$dir/$file" .
|
|
|
|
checksum_do "$dir" "$file"
|
2021-02-07 08:27:02 +00:00
|
|
|
}
|
|
|
|
|
2021-02-15 08:31:17 +00:00
|
|
|
checksum_do() {
|
|
|
|
local dir="$1"
|
|
|
|
local file="$2"
|
|
|
|
local line
|
|
|
|
local store="$GITDIR/SHA256SUMS.sources"
|
|
|
|
|
|
|
|
if line=$(grep "[[:space:]][[:space:]]$file"$ "$store"); then
|
|
|
|
(cd "$dir" && echo "$line" | sha256sum -c)
|
|
|
|
else
|
|
|
|
echo 'Checksum mismatch or not found!'
|
|
|
|
exit 1
|
|
|
|
fi
|
2021-02-07 08:27:02 +00:00
|
|
|
}
|
|
|
|
|
2020-12-16 23:19:25 +00:00
|
|
|
# base: mescc-tools-seed
|
2020-12-23 06:02:57 +00:00
|
|
|
# copy in all the mescc-tools-seed stuff
|
2021-01-20 01:43:40 +00:00
|
|
|
cp -r mescc-tools-seed/src/mescc-tools-seed/x86/* tmp
|
|
|
|
cp -r mescc-tools-seed/src/mescc-tools-seed/{M2-Planet,mes-m2} tmp/
|
|
|
|
cp -r mescc-tools-seed/src/mescc-tools-patched tmp/mescc-tools
|
2020-12-23 06:02:57 +00:00
|
|
|
# and the kaem seed
|
2021-01-20 01:43:40 +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-02-13 06:29:49 +00:00
|
|
|
cp mescc-tools-seed/checksums tmp/after/mescc-tools-seed-checksums
|
2021-03-05 03:20:45 +00:00
|
|
|
cp helpers.sh run.sh run2.sh pre-sha.sha256sums tmp/after/
|
2020-12-23 06:02:57 +00:00
|
|
|
|
2020-12-25 07:40:14 +00:00
|
|
|
# mescc-tools-extra
|
|
|
|
cp -r mescc-tools-extra tmp/after/
|
|
|
|
|
|
|
|
# mes
|
2021-01-04 21:30:53 +00:00
|
|
|
cp -r mes tmp/after/
|
2021-01-20 01:43:40 +00:00
|
|
|
#ln -s lib/x86-mes tmp/after/mes/src/mes/x86-mes
|
|
|
|
mkdir -p tmp/after/mes/src/mes/{bin,m2}
|
|
|
|
|
|
|
|
# tcc 0.9.26
|
2021-01-11 06:47:13 +00:00
|
|
|
cp -r tcc-0.9.26 tmp/after/
|
2021-01-20 01:43:40 +00:00
|
|
|
pushd tmp/after/tcc-0.9.26/src/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-20 01:43:40 +00:00
|
|
|
# tcc 0.9.27
|
|
|
|
cp -r tcc-0.9.27 tmp/after/
|
2021-01-10 21:22:30 +00:00
|
|
|
|
2021-01-11 17:57:12 +00:00
|
|
|
# sed 4.0.7
|
2021-01-14 10:45:36 +00:00
|
|
|
cp -r sed-4.0.7 tmp/after/
|
|
|
|
|
2021-01-11 20:43:42 +00:00
|
|
|
# tar 1.12
|
|
|
|
url=https://ftp.gnu.org/gnu/tar/tar-1.12.tar.gz
|
2021-01-31 10:06:26 +00:00
|
|
|
cp -r tar-1.12 tmp/after
|
|
|
|
mkdir tmp/after/tar-1.12/{src,build}
|
|
|
|
pushd tmp/after/tar-1.12/src
|
2021-01-14 18:57:02 +00:00
|
|
|
if [ ! -f "$(basename $url)" ]; then
|
2021-02-28 15:50:26 +00:00
|
|
|
_wget "$url"
|
2021-01-14 18:57:02 +00:00
|
|
|
fi
|
2021-01-11 20:43:42 +00:00
|
|
|
popd
|
2021-01-31 10:06:26 +00:00
|
|
|
tar -C tmp/after/tar-1.12/src -xf "tmp/after/tar-1.12/src/$(basename $url)" --strip-components=1
|
2021-01-11 20:43:42 +00:00
|
|
|
|
2021-01-11 22:34:37 +00:00
|
|
|
get_file() {
|
|
|
|
url=$1
|
2021-01-31 10:06:26 +00:00
|
|
|
make_build=${2:-0}
|
2021-02-15 08:31:17 +00:00
|
|
|
output_filename=$3
|
2021-01-11 22:34:37 +00:00
|
|
|
ext="${url##*.}"
|
|
|
|
if [ "$ext" = "tar" ]; then
|
2021-02-15 08:31:17 +00:00
|
|
|
bname=$(basename "${output_filename:-${url}}" ".tar")
|
2021-01-11 22:34:37 +00:00
|
|
|
else
|
2021-02-15 08:31:17 +00:00
|
|
|
bname=$(basename "${output_filename:-${url}}" ".tar.${ext}")
|
2021-01-11 22:34:37 +00:00
|
|
|
fi
|
2021-01-20 01:43:40 +00:00
|
|
|
cp -r "${bname}" tmp/after/
|
2021-01-31 10:06:26 +00:00
|
|
|
target="tmp/after/${bname}"
|
|
|
|
mkdir -p "${target}/src"
|
|
|
|
if [ "${make_build}" -ne 0 ]; then
|
|
|
|
mkdir "${target}/build"
|
|
|
|
fi
|
|
|
|
pushd "tmp/after/${bname}/src"
|
|
|
|
if [ ! -f "$(basename "$url")" ]; then
|
2021-02-15 08:31:17 +00:00
|
|
|
_wget "$url" "${output_filename:-${url##*/}}"
|
2021-01-31 10:06:26 +00:00
|
|
|
fi
|
|
|
|
popd
|
2021-01-11 22:34:37 +00:00
|
|
|
}
|
|
|
|
|
2021-01-12 06:27:03 +00:00
|
|
|
# gzip 1.2.4
|
2021-01-31 10:06:26 +00:00
|
|
|
get_file https://ftp.gnu.org/gnu/gzip/gzip-1.2.4.tar 1
|
2021-01-12 06:27:03 +00:00
|
|
|
|
2021-01-13 10:51:31 +00:00
|
|
|
# patch 2.5.9
|
2021-01-31 10:06:26 +00:00
|
|
|
get_file https://ftp.gnu.org/pub/gnu/patch/patch-2.5.9.tar.gz 1
|
2021-01-13 10:51:31 +00:00
|
|
|
|
2021-02-15 08:33:12 +00:00
|
|
|
# sha-2 61555d
|
|
|
|
get_file https://github.com/amosnier/sha-2/archive/61555d.tar.gz 1 sha-2-61555d.tar.gz
|
|
|
|
|
2021-01-14 10:47:08 +00:00
|
|
|
# make 3.80
|
2021-01-31 10:06:26 +00:00
|
|
|
get_file https://ftp.gnu.org/gnu/make/make-3.80.tar.gz 1
|
2021-01-14 10:47:08 +00:00
|
|
|
|
2021-01-13 22:29:23 +00:00
|
|
|
# bzip2 1.0.8
|
2021-01-31 10:06:26 +00:00
|
|
|
get_file ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz 1
|
2021-01-13 22:29:23 +00:00
|
|
|
|
2021-01-20 19:23:48 +00:00
|
|
|
# coreutils 5.0
|
2021-01-31 10:06:26 +00:00
|
|
|
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.bz2 1
|
2021-01-20 19:23:48 +00:00
|
|
|
|
2021-02-28 20:53:20 +00:00
|
|
|
# coreutils 6.3
|
|
|
|
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-6.3.tar.bz2
|
|
|
|
|
2021-01-26 21:30:45 +00:00
|
|
|
# heirloom-devtools
|
|
|
|
get_file http://downloads.sourceforge.net/project/heirloom/heirloom-devtools/070527/heirloom-devtools-070527.tar.bz2
|
|
|
|
|
2021-01-15 01:19:43 +00:00
|
|
|
# bash 2.05b
|
|
|
|
get_file https://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
|
|
|
|
|
2021-01-28 18:53:44 +00:00
|
|
|
# flex 2.5.11
|
|
|
|
get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.11.tar.gz
|
|
|
|
|
2021-02-01 01:09:24 +00:00
|
|
|
# musl 1.1.24
|
|
|
|
get_file https://musl.libc.org/releases/musl-1.1.24.tar.gz
|
|
|
|
|
2021-03-14 10:00:45 +00:00
|
|
|
# sed 4.0.9
|
|
|
|
get_file https://ftp.gnu.org/gnu/sed/sed-4.0.9.tar.gz
|
|
|
|
|
2021-02-07 15:39:42 +00:00
|
|
|
# m4 1.4.7
|
|
|
|
get_file https://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.gz
|
|
|
|
|
2021-02-04 18:37:43 +00:00
|
|
|
# flex 2.6.4
|
|
|
|
get_file https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
|
|
|
|
|
2021-02-10 18:06:40 +00:00
|
|
|
# bison 3.4.1
|
|
|
|
get_file https://ftp.gnu.org/gnu/bison/bison-3.4.1.tar.gz
|
|
|
|
|
2021-02-04 21:41:43 +00:00
|
|
|
# grep 2.4
|
|
|
|
get_file https://ftp.gnu.org/gnu/grep/grep-2.4.tar.gz
|
|
|
|
|
2021-02-06 00:16:32 +00:00
|
|
|
# diffutils 2.7
|
|
|
|
get_file https://ftp.gnu.org/gnu/diffutils/diffutils-2.7.tar.gz
|
|
|
|
|
2021-02-11 09:22:12 +00:00
|
|
|
# gawk 3.0.4
|
|
|
|
get_file https://ftp.gnu.org/gnu/gawk/gawk-3.0.4.tar.gz
|
|
|
|
|
2021-02-14 15:36:05 +00:00
|
|
|
# perl 5.000
|
2021-02-17 20:23:50 +00:00
|
|
|
get_file https://github.com/Perl/perl5/archive/perl-5.000.tar.gz
|
2021-02-14 15:36:05 +00:00
|
|
|
|
2021-02-16 23:20:34 +00:00
|
|
|
# perl 5.003
|
2021-02-17 20:23:50 +00:00
|
|
|
get_file https://github.com/Perl/perl5/archive/perl-5.003.tar.gz
|
2021-02-16 23:20:34 +00:00
|
|
|
|
2021-02-17 23:46:18 +00:00
|
|
|
# perl 5.004_05
|
|
|
|
get_file https://www.cpan.org/src/5.0/perl5.004_05.tar.gz
|
|
|
|
|
2021-02-18 23:19:09 +00:00
|
|
|
# perl 5.005_03
|
|
|
|
get_file https://www.cpan.org/src/5.0/perl5.005_03.tar.gz
|
|
|
|
|
2021-02-24 01:02:10 +00:00
|
|
|
# perl 5.6.2
|
|
|
|
get_file https://www.cpan.org/src/5.0/perl-5.6.2.tar.gz
|
|
|
|
|
2021-02-21 21:09:47 +00:00
|
|
|
# autoconf 2.52
|
|
|
|
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.52.tar.gz
|
|
|
|
|
2021-02-27 17:08:17 +00:00
|
|
|
# automake 1.4-p6
|
|
|
|
get_file https://ftp.gnu.org/gnu/automake/automake-1.4-p6.tar.gz
|
|
|
|
|
2021-02-27 20:07:04 +00:00
|
|
|
# autoconf 2.13
|
|
|
|
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz
|
|
|
|
|
2021-02-27 22:42:23 +00:00
|
|
|
# autoconf 2.12
|
|
|
|
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.12.tar.gz
|
|
|
|
|
2021-03-12 00:28:29 +00:00
|
|
|
# libtool 1.4
|
|
|
|
get_file https://ftp.gnu.org/gnu/libtool/libtool-1.4.tar.gz
|
|
|
|
|
2021-02-24 14:38:10 +00:00
|
|
|
# binutils 2.14
|
|
|
|
get_file https://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.bz2
|
|
|
|
|
2021-02-25 19:52:05 +00:00
|
|
|
# bash 3.2.57
|
|
|
|
get_file https://ftp.gnu.org/gnu/bash/bash-3.2.57.tar.gz
|
|
|
|
|
2021-03-14 10:00:45 +00:00
|
|
|
# automake 1.5
|
|
|
|
get_file https://ftp.gnu.org/gnu/automake/automake-1.5.tar.gz
|
2021-03-11 18:12:52 +00:00
|
|
|
|
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-20 10:07:47 +00:00
|
|
|
case "${QEMU_CMD}" in
|
2021-02-15 08:31:17 +00:00
|
|
|
chroot)
|
|
|
|
sudo PATH="/after/bin:${PATH}" chroot . /init | tee "$LOGFILE"
|
|
|
|
;;
|
|
|
|
minikernel)
|
|
|
|
git clone --depth 1 --branch v0.4 https://github.com/bittorf/kritis-linux.git
|
|
|
|
|
|
|
|
kritis-linux/ci_helper.sh \
|
|
|
|
--arch x86_64 \
|
|
|
|
--ramsize 4G \
|
|
|
|
--kernel 5.10.8 \
|
|
|
|
--initrd initramfs.igz \
|
|
|
|
--log "$LOGFILE"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
${QEMU_CMD} -enable-kvm \
|
|
|
|
-m "${QEMU_RAM:-8G}" \
|
|
|
|
-nographic \
|
|
|
|
-no-reboot \
|
|
|
|
-kernel ../../kernel -initrd initramfs.igz -append console=ttyS0 | tee "$LOGFILE"
|
|
|
|
;;
|
2021-01-20 10:07:47 +00:00
|
|
|
esac
|
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
|