From 9232e4282a6b2f20bde631158f7648f285aca613 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 10 Nov 2022 12:06:24 -0700 Subject: [PATCH] Build images in directory per arch, remove bochs --- Makefile | 19 +++++++++---------- bochs.i686 | 28 ---------------------------- bochs.x86_64 | 28 ---------------------------- cookbook | 2 +- mk/bochs.mk | 2 -- mk/ci.mk | 24 ++++++++++++------------ mk/config.mk | 3 ++- mk/disk.mk | 38 +++++++++++++++++++------------------- mk/qemu.mk | 48 ++++++++++++++++++++++++------------------------ mk/repo.mk | 8 ++++---- mk/virtualbox.mk | 10 +++++----- 11 files changed, 76 insertions(+), 134 deletions(-) delete mode 100644 bochs.i686 delete mode 100644 bochs.x86_64 delete mode 100644 mk/bochs.mk diff --git a/Makefile b/Makefile index c647f04..c576d17 100644 --- a/Makefile +++ b/Makefile @@ -4,14 +4,14 @@ include mk/config.mk # Dependencies include mk/depends.mk -all: build/harddrive.img +all: $(BUILD)/harddrive.img -live: build/livedisk.iso +live: $(BUILD)/livedisk.iso rebuild: - -$(FUMOUNT) build/filesystem/ || true + -$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) /tmp/redox_installer/ || true - rm -rf build + rm -rf $(BUILD) $(MAKE) all clean: @@ -20,9 +20,9 @@ clean: cargo clean --manifest-path installer/Cargo.toml cargo clean --manifest-path redoxfs/Cargo.toml cargo clean --manifest-path relibc/Cargo.toml - -$(FUMOUNT) build/filesystem/ || true + -$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) /tmp/redox_installer/ || true - rm -rf build + rm -rf $(BUILD) distclean: $(MAKE) clean @@ -33,9 +33,9 @@ pull: git submodule sync --recursive git submodule update --recursive --init -fetch: build/fetch.tag +fetch: $(BUILD)/fetch.tag -repo: build/repo.tag +repo: $(BUILD)/repo.tag # Cross compiler recipes include mk/prefix.mk @@ -48,7 +48,6 @@ include mk/disk.mk # Emulation recipes include mk/qemu.mk -include mk/bochs.mk include mk/virtualbox.mk # CI @@ -70,4 +69,4 @@ FORCE: # Wireshark wireshark: FORCE - wireshark build/network.pcap + wireshark $(BUILD)/network.pcap diff --git a/bochs.i686 b/bochs.i686 deleted file mode 100644 index d5b8333..0000000 --- a/bochs.i686 +++ /dev/null @@ -1,28 +0,0 @@ -megs: 1024 -boot: disk -ata0-master: type=disk, path="build/harddrive.img", mode=flat - -#com1: enabled=1, mode=file, dev=build/serial.log -cpu: model=p2_klamath -#e1000: enabled=1, mac=52:54:00:12:34:56 ethmod=vnet - - -# enable "cirrus" SVGA. Note that neither this nor VBE works perfectly -#vga: extension=cirrus -#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest-cirrus - -#vga: extension=vbe - - -magic_break: enabled=1 - -#uncomment to choose either display library to use -#display_library: sdl2 -display_library: x, options="gui_debug" - -log: - -debug: action=ignore -info: action=report -error: action=report -panic: action=ask -debugger_log: - diff --git a/bochs.x86_64 b/bochs.x86_64 deleted file mode 100644 index f318dec..0000000 --- a/bochs.x86_64 +++ /dev/null @@ -1,28 +0,0 @@ -megs: 1024 -boot: disk -ata0-master: type=disk, path="build/harddrive.img", mode=flat - -#com1: enabled=1, mode=file, dev=build/serial.log -#cpu: model=corei7_haswell_4770 -#e1000: enabled=1, mac=52:54:00:12:34:56 ethmod=vnet - - -# enable "cirrus" SVGA. Note that neither this nor VBE works perfectly -#vga: extension=cirrus -#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest-cirrus - -#vga: extension=vbe - - -magic_break: enabled=1 - -#uncomment to choose either display library to use -#display_library: sdl2 -display_library: x, options="gui_debug" - -log: - -debug: action=ignore -info: action=report -error: action=report -panic: action=ask -debugger_log: - diff --git a/cookbook b/cookbook index f0c7eed..d7ce4d4 160000 --- a/cookbook +++ b/cookbook @@ -1 +1 @@ -Subproject commit f0c7eeda727b8fa412e5ff24a57f860453d224aa +Subproject commit d7ce4d4d65b505a1c8428434ade5f49a143d59b2 diff --git a/mk/bochs.mk b/mk/bochs.mk deleted file mode 100644 index 0a8bd1d..0000000 --- a/mk/bochs.mk +++ /dev/null @@ -1,2 +0,0 @@ -bochs: build/harddrive.img - bochs -f bochs.$(ARCH) diff --git a/mk/ci.mk b/mk/ci.mk index 27216bd..89f152a 100644 --- a/mk/ci.mk +++ b/mk/ci.mk @@ -1,6 +1,6 @@ IMG_TAG?=$(shell git describe --tags) IMG_SEPARATOR?=_ -IMG_DIR?=build/img +IMG_DIR?=$(BUILD)/img # CI image target - build desktop, server and demo images # To leave out the build tag, set both IMG_TAG and IMG_SEPARATOR to null @@ -12,13 +12,13 @@ ci-img: FORCE # The name of the target must match the name of the filesystem config file desktop server demo: FORCE - rm -f "build/harddrive.img" "build/livedisk.iso" + rm -f "$(BUILD)/harddrive.img" "$(BUILD)/livedisk.iso" $(MAKE) REPO_BINARY=1 \ FILESYSTEM_CONFIG=config/$(ARCH)/$@.toml \ - build/harddrive.img \ - build/livedisk.iso - cp "build/harddrive.img" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img" - cp "build/livedisk.iso" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso" + $(BUILD)/harddrive.img \ + $(BUILD)/livedisk.iso + cp "$(BUILD)/harddrive.img" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img" + cp "$(BUILD)/livedisk.iso" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso" # CI packaging target ci-pkg: prefix FORCE @@ -36,9 +36,9 @@ ci-toolchain: FORCE "prefix/$(TARGET)/gcc-install.tar.gz" \ "prefix/$(TARGET)/relibc-install.tar.gz" \ "prefix/$(TARGET)/rust-install.tar.gz" - rm -rf "build/toolchain/$(TARGET)" - mkdir -p "build/toolchain/$(TARGET)" - cp "prefix/$(TARGET)/gcc-install.tar.gz" "build/toolchain/$(TARGET)/gcc-install.tar.gz" - cp "prefix/$(TARGET)/relibc-install.tar.gz" "build/toolchain/$(TARGET)/relibc-install.tar.gz" - cp "prefix/$(TARGET)/rust-install.tar.gz" "build/toolchain/$(TARGET)/rust-install.tar.gz" - cd "build/toolchain/$(TARGET)" && sha256sum -b * > SHA256SUM + rm -rf "$(BUILD)/toolchain" + mkdir -p "$(BUILD)/toolchain" + cp "prefix/$(TARGET)/gcc-install.tar.gz" "$(BUILD)/toolchain/gcc-install.tar.gz" + cp "prefix/$(TARGET)/relibc-install.tar.gz" "$(BUILD)/toolchain/relibc-install.tar.gz" + cp "prefix/$(TARGET)/rust-install.tar.gz" "$(BUILD)/toolchain/rust-install.tar.gz" + cd "$(BUILD)/toolchain" && sha256sum -b * > SHA256SUM diff --git a/mk/config.mk b/mk/config.mk index ea3a5c6..4887942 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -51,10 +51,11 @@ export XARGO_RUST_SRC=$(ROOT)/rust/src ## Userspace variables export TARGET=$(ARCH)-unknown-redox +BUILD=build/$(ARCH) INSTALLER=installer/target/release/redox_installer ifeq ($(REPO_BINARY),0) INSTALLER+=--cookbook=cookbook -REPO_TAG=build/repo.tag +REPO_TAG=$(BUILD)/repo.tag endif ## Cross compiler variables diff --git a/mk/disk.mk b/mk/disk.mk index b0b166f..328e0eb 100644 --- a/mk/disk.mk +++ b/mk/disk.mk @@ -1,53 +1,53 @@ -build/harddrive.img: $(REPO_TAG) - mkdir -p build +$(BUILD)/harddrive.img: $(REPO_TAG) + mkdir -p $(BUILD) rm -rf $@ $@.partial -$(FUMOUNT) /tmp/redox_installer || true fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial $(INSTALLER) -c $(FILESYSTEM_CONFIG) $@.partial mv $@.partial $@ -build/livedisk.iso: $(REPO_TAG) - mkdir -p build +$(BUILD)/livedisk.iso: $(REPO_TAG) + mkdir -p $(BUILD) rm -rf $@ $@.partial -$(FUMOUNT) /tmp/redox_installer || true fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial $(INSTALLER) -c $(FILESYSTEM_CONFIG) --live $@.partial mv $@.partial $@ -build/filesystem.img: $(REPO_TAG) - mkdir -p build +$(BUILD)/filesystem.img: $(REPO_TAG) + mkdir -p $(BUILD) $(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release - -$(FUMOUNT) build/filesystem/ || true - rm -rf $@ $@.partial build/filesystem/ + -$(FUMOUNT) $(BUILD)/filesystem/ || true + rm -rf $@ $@.partial $(BUILD)/filesystem/ -$(FUMOUNT) /tmp/redox_installer || true fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial redoxfs/target/release/redoxfs-mkfs $(REDOXFS_MKFS_FLAGS) $@.partial - mkdir -p build/filesystem/ - redoxfs/target/release/redoxfs $@.partial build/filesystem/ + mkdir -p $(BUILD)/filesystem/ + redoxfs/target/release/redoxfs $@.partial $(BUILD)/filesystem/ sleep 1 pgrep redoxfs - $(INSTALLER) -c $(FILESYSTEM_CONFIG) build/filesystem/ + $(INSTALLER) -c $(FILESYSTEM_CONFIG) $(BUILD)/filesystem/ sync - -$(FUMOUNT) build/filesystem/ || true - rm -rf build/filesystem/ + -$(FUMOUNT) $(BUILD)/filesystem/ || true + rm -rf $(BUILD)/filesystem/ mv $@.partial $@ mount: FORCE - mkdir -p build/filesystem/ + mkdir -p $(BUILD)/filesystem/ $(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs - redoxfs/target/release/redoxfs build/harddrive.img build/filesystem/ + redoxfs/target/release/redoxfs $(BUILD)/harddrive.img $(BUILD)/filesystem/ sleep 2 pgrep redoxfs mount_extra: FORCE - mkdir -p build/filesystem/ + mkdir -p $(BUILD)/filesystem/ $(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs - redoxfs/target/release/redoxfs build/extra.img build/filesystem/ + redoxfs/target/release/redoxfs $(BUILD)/extra.img $(BUILD)/filesystem/ sleep 2 pgrep redoxfs unmount: FORCE sync - -$(FUMOUNT) build/filesystem/ || true - rm -rf build/filesystem/ + -$(FUMOUNT) $(BUILD)/filesystem/ || true + rm -rf $(BUILD)/filesystem/ -$(FUMOUNT) /tmp/redox_installer || true diff --git a/mk/qemu.mk b/mk/qemu.mk index d1d71e2..f3b1c08 100644 --- a/mk/qemu.mk +++ b/mk/qemu.mk @@ -35,16 +35,16 @@ $(error Unsupported ARCH for QEMU "$(ARCH)")) endif ifeq ($(efi),yes) - FIRMWARE=build/firmware.rom - QEMUFLAGS+=-bios build/firmware.rom + FIRMWARE=$(BUILD)/firmware.rom + QEMUFLAGS+=-bios $(BUILD)/firmware.rom else FIRMWARE= endif ifeq ($(live),yes) - DISK=build/livedisk.iso + DISK=$(BUILD)/livedisk.iso else - DISK=build/harddrive.img + DISK=$(BUILD)/harddrive.img endif ifeq ($(serial),no) @@ -76,7 +76,7 @@ else QEMUFLAGS+=-netdev user,id=net0,hostfwd=tcp::8080-:8080,hostfwd=tcp::8083-:8083,hostfwd=tcp::64126-:64126 -device e1000,netdev=net0,id=nic0 else QEMUFLAGS+=-netdev user,id=net0 -device e1000,netdev=net0 \ - -object filter-dump,id=f1,netdev=net0,file=build/network.pcap + -object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap endif endif endif @@ -102,56 +102,56 @@ ifeq ($(UNAME),Linux) endif ifeq ($(UNAME),Linux) -build/extra.img: +$(BUILD)/extra.img: fallocate --posix --length 1G $@ else -build/extra.img: +$(BUILD)/extra.img: truncate -s 1g $@ endif -build/firmware.rom: +$(BUILD)/firmware.rom: cp $(QEMU_EFI) $@ -qemu: $(DISK) $(FIRMWARE) build/extra.img +qemu: $(DISK) $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ -hdc $(DISK) echo -drive file=$(DISK),format=raw \ - -drive file=build/extra.img,format=raw + -drive file=$(BUILD)/extra.img,format=raw -qemu_no_build: $(FIRMWARE) build/extra.img +qemu_no_build: $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ -drive file=$(DISK),format=raw \ - -drive file=build/extra.img,format=raw + -drive file=$(BUILD)/extra.img,format=raw -qemu_cdrom: $(DISK) $(FIRMWARE) build/extra.img +qemu_cdrom: $(DISK) $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ -boot d -cdrom $(DISK) \ - -drive file=build/extra.img,format=raw + -drive file=$(BUILD)/extra.img,format=raw -qemu_cdrom_no_build: $(FIRMWARE) build/extra.img +qemu_cdrom_no_build: $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ -boot d -cdrom $(DISK) \ - -drive file=build/extra.img,format=raw + -drive file=$(BUILD)/extra.img,format=raw -qemu_nvme: $(DISK) $(FIRMWARE) build/extra.img +qemu_nvme: $(DISK) $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ -drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ - -drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA + -drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA -qemu_nvme_no_build: $(FIRMWARE) build/extra.img +qemu_nvme_no_build: $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ -drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ - -drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA + -drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA qemu_usb: $(DISK) $(FIRMWARE) $(QEMU) $(QEMUFLAGS) \ -drive if=none,id=usbstick,format=raw,file=$(DISK) \ -device usb-storage,drive=usbstick -qemu_extra: $(FIRMWARE) build/extra.img +qemu_extra: $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=build/extra.img,format=raw + -drive file=$(BUILD)/extra.img,format=raw -qemu_nvme_extra: $(FIRMWARE) build/extra.img +qemu_nvme_extra: $(FIRMWARE) $(BUILD)/extra.img $(QEMU) $(QEMUFLAGS) \ - -drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA + -drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA diff --git a/mk/repo.mk b/mk/repo.mk index f53c5a3..f3302b4 100644 --- a/mk/repo.mk +++ b/mk/repo.mk @@ -1,18 +1,18 @@ -build/fetch.tag: cookbook installer prefix $(FILESYSTEM_CONFIG) +$(BUILD)/fetch.tag: cookbook installer prefix $(FILESYSTEM_CONFIG) $(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release $(HOST_CARGO) build --manifest-path installer/Cargo.toml --release PACKAGES="$$($(INSTALLER) --list-packages -c $(FILESYSTEM_CONFIG))" && \ cd cookbook && \ ./fetch.sh "$${PACKAGES}" - mkdir -p build + mkdir -p $(BUILD) touch $@ -build/repo.tag: build/fetch.tag +$(BUILD)/repo.tag: $(BUILD)/fetch.tag $(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release $(HOST_CARGO) build --manifest-path installer/Cargo.toml --release export PATH="$(PREFIX_PATH):$$PATH" && \ PACKAGES="$$($(INSTALLER) --list-packages -c $(FILESYSTEM_CONFIG))" && \ cd cookbook && \ ./repo.sh "$${PACKAGES}" - mkdir -p build + mkdir -p $(BUILD) touch $@ diff --git a/mk/virtualbox.mk b/mk/virtualbox.mk index e718629..2ee14dd 100644 --- a/mk/virtualbox.mk +++ b/mk/virtualbox.mk @@ -1,4 +1,4 @@ -virtualbox: build/harddrive.img +virtualbox: $(BUILD)/harddrive.img echo "Delete VM" -$(VBM) unregistervm Redox --delete; \ if [ $$? -ne 0 ]; \ @@ -22,10 +22,10 @@ virtualbox: build/harddrive.img $(VBM) modifyvm Redox --nictype1 82540EM; \ $(VBM) modifyvm Redox --cableconnected1 on; \ $(VBM) modifyvm Redox --nictrace1 on; \ - $(VBM) modifyvm Redox --nictracefile1 "$(ROOT)/build/network.pcap"; \ + $(VBM) modifyvm Redox --nictracefile1 "$(ROOT)/$(BUILD)/network.pcap"; \ fi $(VBM) modifyvm Redox --uart1 0x3F8 4 - $(VBM) modifyvm Redox --uartmode1 file "$(ROOT)/build/serial.log" + $(VBM) modifyvm Redox --uartmode1 file "$(ROOT)/$(BUILD)/serial.log" $(VBM) modifyvm Redox --usb off # on $(VBM) modifyvm Redox --keyboard ps2 $(VBM) modifyvm Redox --mouse ps2 @@ -33,9 +33,9 @@ virtualbox: build/harddrive.img $(VBM) modifyvm Redox --audiocontroller hda $(VBM) modifyvm Redox --nestedpaging on echo "Create Disk" - $(VBM) convertfromraw $< build/harddrive.vdi + $(VBM) convertfromraw $< $(BUILD)/harddrive.vdi echo "Attach Disk" $(VBM) storagectl Redox --name ATA --add sata --controller IntelAHCI --bootable on --portcount 1 - $(VBM) storageattach Redox --storagectl ATA --port 0 --device 0 --type hdd --medium build/harddrive.vdi + $(VBM) storageattach Redox --storagectl ATA --port 0 --device 0 --type hdd --medium $(BUILD)/harddrive.vdi echo "Run VM" $(VBM) startvm Redox