puter/experiments/x86emu/v86starter.sh

65 lines
1.7 KiB
Bash
Raw Normal View History

2024-04-02 15:25:21 +00:00
#!/usr/bin/env bash
ROOT_DIR="$(pwd)"
# This has to be something, that isn't wrapped by a repo with a package.json
VM_DIR="/tmp/vm"
# Goes from 1 to 22
ZSTD_LEVEL=22
build()
{
mkdir -p "$VM_DIR"
rm -rf "$VM_DIR/v86"
cd "$ROOT_DIR/make_container" || exit
docker build . -t v86builder
docker run --name v86build v86builder
docker cp v86build:/app/v86 "$VM_DIR"
docker rm v86build
# Overwrite v86'd debian Dockerfile with our own
cat "$ROOT_DIR/imagegen/Dockerfile" > "$VM_DIR/v86/tools/docker/debian/Dockerfile"
# Navigate to the Dockerfile directory
cd "$VM_DIR/v86/tools/docker/debian" || exit
# Build the container which will be used to serve v86
chmod +x build-container.sh
./build-container.sh
# Build the state of the VM
chmod +x build-state.js
./build-state.js
# Compress the generated state image
zstd --ultra -$ZSTD_LEVEL < "$VM_DIR/v86/images/debian-state-base.bin" > "$VM_DIR/v86/images/image.bin"
# Make project directories
mkdir -p "$ROOT_DIR/www/third-party"
mkdir -p "$ROOT_DIR/www/static"
# Copy/move necessary files to deployment directory
mv "$VM_DIR/v86/images/image.bin" "$ROOT_DIR/www/static/image.bin"
cp "$VM_DIR/v86/build/libv86.js" "$ROOT_DIR/www/third-party/libv86.js"
cp "$VM_DIR/v86/build/v86.wasm" "$ROOT_DIR/www/third-party/v86.wasm"
cp -r "$VM_DIR/v86/images/debian-9p-rootfs-flat/" "$ROOT_DIR/www/static/9p-rootfs/"
}
if [ ! -d "$VM_DIR/v86" ]
then
build
else
echo "V86 appears to be built"
read -p "Do you want to rebuild V86? (yes/no): " rebuild_choice
if [ "$rebuild_choice" = "yes" ]; then
echo "Rebuilding v86..."
build
fi
fi
2024-04-02 15:25:21 +00:00
# Start a HTTP server
cd "$ROOT_DIR/www/" || exit
echo "Opening a server on localhost with port 8080"
python3 -m http.server -b 127.0.0.1 8080