12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/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
- # 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
|