Move rustup behind PREFIX_BINARY=0

This commit is contained in:
Wildan M 2025-12-22 06:42:55 +07:00
parent 65fe58a709
commit dca20d6bd9
No known key found for this signature in database
GPG Key ID: 01AC53185C679C79
2 changed files with 59 additions and 53 deletions

View File

@ -12,6 +12,7 @@ BOARD?=
## Enable to use binary prefix (much faster)
PREFIX_BINARY?=1
## Enable to use up-to-date rust compiler (experimental, only available to Tier 2 targets)
## Even more experimental, add -Zbuild-std to cookbook.toml to allow compilation to Tier 3 targets
EXPERIMENTAL_PREFIX_USE_UPSTREAM_RUST_COMPILER?=0
## Enable to use binary packages (much faster)
REPO_BINARY?=0

View File

@ -6,7 +6,6 @@ PREFIX_INSTALL=$(PREFIX)/sysroot/
PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin
RELIBC_SOURCE=recipes/core/relibc/source
GNU_HOST=$(HOST_ARCH)-unknown-linux-gnu
BINUTILS_BRANCH=redox-2.43.1
GCC_BRANCH=redox-13.2.0
LIBTOOL_VERSION=2.5.4
@ -143,53 +142,8 @@ else
touch "$@"
endif
# -----------------------------------------------------
ifeq ($(EXPERIMENTAL_PREFIX_USE_UPSTREAM_RUST_COMPILER),1)
$(PREFIX)/gcc-install.tar.gz:
mkdir -p "$(@D)"
wget -cO $@.partial "https://static.redox-os.org/toolchain/$(TARGET)/gcc-install.tar.gz"
mv $@.partial $@
$(PREFIX)/rustc-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rustc-nightly-$(GNU_HOST).tar.xz"
mv $@.partial $@
$(PREFIX)/cargo-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/cargo-nightly-$(GNU_HOST).tar.xz"
mv $@.partial $@
$(PREFIX)/rust-std-host-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-std-nightly-$(GNU_HOST).tar.xz"
mv $@.partial $@
$(PREFIX)/rust-std-target-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-std-nightly-$(GNU_TARGET).tar.xz"
mv $@.partial $@
$(PREFIX)/rust-src-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-src-nightly.tar.xz"
mv $@.partial $@
$(PREFIX)/rust-install: $(PREFIX)/gcc-install.tar.gz $(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz $(PREFIX)/rust-std-host-install.tar.xz $(PREFIX)/rust-std-target-install.tar.xz $(PREFIX)/rust-src-install.tar.xz
rm -rf "$@.partial" "$@"
mkdir -p "$@.partial"
tar --extract --file "$(PREFIX)/gcc-install.tar.gz" -C "$@.partial" || true
tar --extract --file "$(PREFIX)/rustc-install.tar.xz" -C "$@.partial" rustc-nightly-$(GNU_HOST)/rustc/ --strip-components=2
tar --extract --file "$(PREFIX)/cargo-install.tar.xz" --directory "$@.partial" cargo-nightly-$(GNU_HOST)/cargo/ --strip-components=2
tar --extract --file "$(PREFIX)/rust-std-host-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(GNU_HOST)/rust-std-$(GNU_HOST)/ --strip-components=2
tar --extract --file "$(PREFIX)/rust-std-target-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(GNU_TARGET)/rust-std-$(GNU_TARGET)/ --strip-components=2
tar --extract --file "$(PREFIX)/rust-src-install.tar.xz" --directory "$@.partial" rust-src-nightly/rust-src/ --strip-components=2
touch "$@.partial"
mv "$@.partial" "$@"
# ---------------------------------------------------
else ifeq ($(PREFIX_BINARY),1)
# PREFIX_BINARY ---------------------------------------------------
ifeq ($(PREFIX_BINARY),1)
$(PREFIX)/rust-install.tar.gz: | $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
@ -212,13 +166,9 @@ else
mv "$@.partial" "$@"
endif
# ---------------------------------------------------
else
$(ROOT)/rust/configure:
git submodule sync --recursive
git submodule update --progress --init --recursive --checkout rust
# BUILD GCC ---------------------------------------------------
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
PREFIX_FREESTANDING_PATH=$(ROOT)/$(PREFIX_FREESTANDING_INSTALL)/bin
@ -375,6 +325,59 @@ $(PREFIX)/gcc-install.tar.gz: $(PREFIX)/gcc-install
--directory="$<" \
.
# RUST VIA RUSTUP ---------------------------------------------------
ifeq ($(EXPERIMENTAL_PREFIX_USE_UPSTREAM_RUST_COMPILER),1)
$(PREFIX)/rustc-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rustc-nightly-$(HOST_TARGET).tar.xz"
mv $@.partial $@
$(PREFIX)/cargo-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/cargo-nightly-$(HOST_TARGET).tar.xz"
mv $@.partial $@
$(PREFIX)/rust-std-host-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-std-nightly-$(HOST_TARGET).tar.xz"
mv $@.partial $@
$(PREFIX)/rust-std-target-install.tar.xz:
mkdir -p "$(@D)"
ifeq ($(TARGET),x86_64-unknown-redox)
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-std-nightly-$(TARGET).tar.xz"
mv $@.partial $@
else
touch $@
endif
$(PREFIX)/rust-src-install.tar.xz:
mkdir -p "$(@D)"
wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-src-nightly.tar.xz"
mv $@.partial $@
$(PREFIX)/rust-install: $(PREFIX)/gcc-install.tar.gz $(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz $(PREFIX)/rust-std-host-install.tar.xz $(PREFIX)/rust-std-target-install.tar.xz $(PREFIX)/rust-src-install.tar.xz
rm -rf "$@.partial" "$@"
mkdir -p "$@.partial"
tar --extract --file "$(PREFIX)/gcc-install.tar.gz" -C "$@.partial" || true
tar --extract --file "$(PREFIX)/rustc-install.tar.xz" -C "$@.partial" rustc-nightly-$(HOST_TARGET)/rustc/ --strip-components=2
tar --extract --file "$(PREFIX)/cargo-install.tar.xz" --directory "$@.partial" cargo-nightly-$(HOST_TARGET)/cargo/ --strip-components=2
tar --extract --file "$(PREFIX)/rust-std-host-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(HOST_TARGET)/rust-std-$(HOST_TARGET)/ --strip-components=2
tar --extract --file "$(PREFIX)/rust-src-install.tar.xz" --directory "$@.partial" rust-src-nightly/rust-src/ --strip-components=2
ifeq ($(TARGET),x86_64-unknown-redox)
tar --extract --file "$(PREFIX)/rust-std-target-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(TARGET)/rust-std-$(TARGET)/ --strip-components=2
endif
touch "$@.partial"
mv "$@.partial" "$@"
# BUILD RUST ---------------------------------------------------
else
$(ROOT)/rust/configure:
git submodule sync --recursive
git submodule update --progress --init --recursive --checkout rust
$(PREFIX)/rust-install: $(ROOT)/rust/configure | $(PREFIX)/gcc-install $(PREFIX)/relibc-freestanding-install $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) make $@
@ -408,6 +411,8 @@ else
mv "$@.partial" "$@"
endif
endif
$(PREFIX)/rust-install.tar.gz: $(PREFIX)/rust-install
tar \
--create \