Compare commits

...

7 Commits

Author SHA1 Message Date
Wildan Mubarok
01a1fd9a3f Merge branch 'repo-binary-cached' into 'master'
Draft: Avoid redownloading binaries if REPO_BINARY and PODMAN_BUILD is set

See merge request redox-os/redox!1585
2025-08-22 09:57:12 +00:00
Jeremy Soller
3172bccab5 Merge branch 'windows-qemu' into 'master'
Add option to run QEMU on Windows when using WSL2

See merge request redox-os/redox!1630
2025-08-20 06:53:04 -06:00
Wildan Mubarok
c09215748d Formatting 2025-08-18 10:37:28 +00:00
Wildan Mubarok
cb36369905 Apply apic and mouse fixes 2025-08-18 10:10:09 +00:00
Wildan Mubarok
e3f6bf4b1d Merge branch redox:master into windows-qemu 2025-08-18 08:58:19 +00:00
Wildan Mubarok
b50084d4dd Add option to run Windows QEMU when using WSL2 2025-08-15 19:45:23 +00:00
Wildan Mubarok
a8a0705fbb Cache downloaded binaries if REPO_BINARY and PODMAN_BUILD is set 2025-06-03 19:06:39 +00:00
2 changed files with 35 additions and 4 deletions

View File

@ -16,8 +16,10 @@ endif
## Podman Home Directory
PODMAN_HOME?=$(ROOT)/build/podman
## Podman downloaded repo binaries cache
PODMAN_PKG_TMP?=$(ROOT)/build/$(ARCH)/pkg-download
## Podman command with its many arguments
PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_HOME):/home$(PODMAN_VOLUME_FLAG)
PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_HOME):/home$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_PKG_TMP):/tmp/pkg_download$(PODMAN_VOLUME_FLAG)
PODMAN_ENV?=--env PATH=/home/poduser/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0
PODMAN_CONFIG?=--env ARCH=$(ARCH) --env BOARD=$(BOARD) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG)
PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --userns keep-id --user `id -u` --interactive --tty --env TERM=$(TERM)
@ -25,6 +27,8 @@ PODMAN_RUN?=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMA
container_shell: build/container.tag
ifeq ($(PODMAN_BUILD),1)
# TODO: how to ensure to do this anytime when $(PODMAN_RUN) is invoked?
mkdir -p $(PODMAN_PKG_TMP) && touch $(PODMAN_PKG_TMP)/prefer_cache
podman run $(PODMAN_VOLUMES) $(PODMAN_OPTIONS) $(PODMAN_ENV) --tty $(IMAGE_TAG) bash
else
@echo PODMAN_BUILD=$(PODMAN_BUILD), please set it to 1 in mk/config.mk
@ -59,7 +63,8 @@ ifeq ($(PODMAN_BUILD),1)
@echo "If podman_home dir cannot be removed, remove with \"sudo rm\"."
-rm -rf $(PODMAN_HOME) || true
-podman image rm --force $(IMAGE_TAG) || true
mkdir -p $(PODMAN_HOME)
mkdir -p $(PODMAN_HOME) $(PODMAN_PKG_TMP)
touch $(PODMAN_PKG_TMP)/prefer_cache
@echo "Building Podman image. This may take some time."
sed s/_UID_/`id -u`/ $(CONTAINERFILE) | podman build --file - $(PODMAN_VOLUMES) --tag $(IMAGE_TAG)
@echo "Mapping Podman user space. Please wait."

View File

@ -129,6 +129,18 @@ ifneq ($(ARCH),$(HOST_ARCH))
kvm?=no
endif
# wsl2: run qemu on windows instead
ifeq ($(QEMU_ON_WINDOWS),1)
QEMU:=$(QEMU).exe
WINDOWS_DISK=/mnt/c/ProgramData/redox.img
disk=windows
net=windows
QEMU_MACHINE=pc
FIRMWARE=
QEMU_KERNEL=
QEMUFLAGS+=-device usb-tablet
endif
ifneq ($(FIRMWARE),)
QEMUFLAGS+=-bios $(FIRMWARE)
endif
@ -191,6 +203,8 @@ else
# port 8080 and 8083 - webservers
# port 64126 - our gdbserver implementation
QEMUFLAGS+=-netdev user,id=net0,hostfwd=tcp::8080-:8080,hostfwd=tcp::8083-:8083,hostfwd=tcp::64126-:64126$(EXTRANETARGS)
else ifeq ($(net),windows)
QEMUFLAGS+=-netdev user,id=net0$(EXTRANETARGS)
else
QEMUFLAGS+=-netdev user,id=net0$(EXTRANETARGS) -object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
endif
@ -230,9 +244,10 @@ else ifeq ($(disk),cdrom)
QEMUFLAGS+= \
-boot d -cdrom $(DISK) \
-drive file=$(EXTRA_DISK),format=raw
else ifeq ($(disk),sdcard)
QEMUFLAGS+=-drive file=$(DISK),if=sd,format=raw
else ifeq ($(disk),windows)
QEMUFLAGS+=-drive file="$(shell wslpath -w $(WINDOWS_DISK))",format=raw,if=virtio
endif
ifeq ($(gdb),yes)
@ -241,7 +256,11 @@ endif
ifeq ($(UNAME),Linux)
ifneq ($(kvm),no)
QEMUFLAGS+=-enable-kvm -cpu host
ifeq ($(QEMU_ON_WINDOWS),1)
QEMUFLAGS+=-accel whpx,kernel-irqchip=off -cpu Broadwell,x2apic=off
else
QEMUFLAGS+=-enable-kvm -cpu host
endif
else
QEMUFLAGS+=-cpu $(QEMU_CPU)
endif
@ -269,6 +288,8 @@ qemu-deps: $(DISK)
ifeq ($(disk),usb)
else ifeq ($(disk),sdcard)
else ifeq ($(disk),windows)
qemu-deps: $(WINDOWS_DISK)
else
qemu-deps: $(EXTRA_DISK)
endif
@ -290,6 +311,11 @@ endif
$(EXTRA_DISK):
truncate -s 1g $@
$(WINDOWS_DISK): $(BUILD)/harddrive.img
rm -f $@
mkdir -p $(shell dirname $@)
cp "$<" "$@"
$(BUILD)/raspi3bp_uboot.rom:
wget -O $@ https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/raspberry_pi/rpi3/u-boot-rpi-3-b-plus.bin