diff --git a/mk/podman.mk b/mk/podman.mk index 0dc683f2..01922466 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -35,7 +35,8 @@ PODMAN_VOLUMES=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volu PODMAN_ENV=--env PATH=/root/.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) --env PREFIX_BINARY=$(PREFIX_BINARY) \ --env CI=$(CI) --env COOKBOOK_MAKE_JOBS=$(COOKBOOK_MAKE_JOBS) --env COOKBOOK_LOGS=$(COOKBOOK_LOGS) --env COOKBOOK_VERBOSE=$(COOKBOOK_VERBOSE) \ - --env REPO_APPSTREAM=$(REPO_APPSTREAM) --env REPO_BINARY=$(REPO_BINARY) --env REPO_NONSTOP=$(REPO_NONSTOP) --env REPO_OFFLINE=$(REPO_OFFLINE) --env TESTBIN=$(TESTBIN) + --env REPO_APPSTREAM=$(REPO_APPSTREAM) --env REPO_BINARY=$(REPO_BINARY) --env REPO_NONSTOP=$(REPO_NONSTOP) --env REPO_OFFLINE=$(REPO_OFFLINE) --env TESTBIN=$(TESTBIN) \ + --env HOSTED_REDOX=$(HOSTED_REDOX) --env PREFIX_USE_UPSTREAM_RUST_COMPILER=$(PREFIX_USE_UPSTREAM_RUST_COMPILER) PODMAN_OPTIONS=--rm --workdir $(CONTAINER_WORKDIR) --interactive --tty --cap-add SYS_ADMIN --device /dev/fuse --network=host --env TERM=$(TERM) --pids-limit=-1 PODMAN_RUN=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) diff --git a/mk/prefix.mk b/mk/prefix.mk index f3e11018..8521b433 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -87,56 +87,16 @@ ifeq ($(PREFIX_BINARY),1) # PREFIX_BINARY FOR LINUX ----------------------------------------- ifneq ($(HOSTED_REDOX),1) -$(PREFIX)/gcc-install.tar.gz: | $(CONTAINER_TAG) +$(PREFIX)/%.tar.gz: | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/gcc-install.tar.gz" + wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/$(@F)" mv $@.partial $@ endif -$(PREFIX)/gcc-install: $(PREFIX)/gcc-install.tar.gz $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - rm -rf "$@.partial" "$@" - mkdir -p "$@.partial" - tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 - touch "$@.partial" - mv "$@.partial" "$@" -endif - -$(PREFIX)/rust-install.tar.gz: | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/rust-install.tar.gz" - mv $@.partial $@ -endif - -$(PREFIX)/rust-install: $(PREFIX)/rust-install.tar.gz $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - rm -rf "$@.partial" "$@" - mkdir -p "$@.partial" - tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 - touch "$@.partial" - mv "$@.partial" "$@" -endif - -$(PREFIX)/clang-install.tar.gz: | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/clang-install.tar.gz" - mv $@.partial $@ -endif - -$(PREFIX)/clang-install: $(PREFIX)/clang-install.tar.gz $(CONTAINER_TAG) +$(PREFIX)/gcc-install $(PREFIX)/rust-install $(PREFIX)/clang-install: %: %.tar.gz | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @@ -159,93 +119,12 @@ else mv $@.partial $@ endif -$(PREFIX)/libtool.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) +$(PREFIX)/%.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/libtool.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/gcc13.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/gcc13.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/libgcc.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/libgcc.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/libstdcxx.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/libstdcxx.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/gcc13.cxx.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/gcc13.cxx.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/rust.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/rust.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/llvm21.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/llvm21.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/llvm21.runtime.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/llvm21.runtime.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/clang21.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/clang21.pkgar" - mv $@.partial $@ -endif - -$(PREFIX)/lld21.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/lld21.pkgar" + wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/$(@F)" mv $@.partial $@ endif @@ -293,6 +172,14 @@ endif else +$(PREFIX)/%.tar.gz: $(PREFIX)/% + tar \ + --create \ + --gzip \ + --file "$@" \ + --directory="$<" \ + . + # BUILD GCC --------------------------------------------------- $(PREFIX)/libtool-install: | $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) @@ -321,7 +208,7 @@ else mkdir -p "$@.partial" export $(PREFIX_CONFIG) PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \ COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \ - $(REPO_BIN) cook host:binutils-gdb + $(REPO_BIN) cook host:binutils-gdb cp -r "$(BINUTILS_TARGET)/stage/usr/". "$@.partial" touch "$@.partial" mv "$@.partial" "$@" @@ -402,14 +289,6 @@ else rm -rf $(BINUTILS_TARGET) $(LIBTOOL_TARGET) $(GCC_TARGET) $(LIBSTDCXX_TARGET) $(RELIBC_FREESTANDING_TARGET) endif -$(PREFIX)/gcc-install.tar.gz: $(PREFIX)/gcc-install - tar \ - --create \ - --gzip \ - --file "$@" \ - --directory="$<" \ - . - # RUST FROM UPSTREAM COMPILER --------------------------------------------------- ifeq ($(PREFIX_USE_UPSTREAM_RUST_COMPILER),1) @@ -425,21 +304,12 @@ $(PREFIX_RUST_VERSION_TAG): mkdir -p "$(@D)" touch $@ -$(PREFIX)/rustc-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) +$(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz: $(PREFIX)/%-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" - wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rustc-nightly-$(HOST_TARGET).tar.xz" - mv $@.partial $@ -endif - -$(PREFIX)/cargo-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) -ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) make $@ -else - mkdir -p "$(@D)" - wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/cargo-nightly-$(HOST_TARGET).tar.xz" + wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/$*-nightly-$(HOST_TARGET).tar.xz" mv $@.partial $@ endif @@ -509,20 +379,12 @@ else cp -r "$(LLVM_TARGET)/stage/usr/". "$@.partial" mv "$@.partial" "$@" # TODO: Cache from RUST_TARGET is currently not cleared. -# TIP: If you're developing std for rust, remove COOKBOOK_CLEAN_BUILD=true +# TIP: If you're developing std for rust, remove COOKBOOK_CLEAN_BUILD=true # at the top of this file so your next rust build reuses the build cache endif endif -$(PREFIX)/rust-install.tar.gz: $(PREFIX)/rust-install - tar \ - --create \ - --gzip \ - --file "$@" \ - --directory="$<" \ - . - # BUILD CLANG --------------------------------------------------- $(PREFIX)/clang-install: | $(PREFIX)/rust-install $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) @@ -546,12 +408,4 @@ endif rm -rf $(LLVM_TARGET) $(CLANG_TARGET) $(LLD_TARGET) endif -$(PREFIX)/clang-install.tar.gz: $(PREFIX)/clang-install - tar \ - --create \ - --gzip \ - --file "$@" \ - --directory="$<" \ - . - endif