mirror of
https://github.com/openwrt/packages.git
synced 2025-12-27 10:10:33 +04:00
If the download directory is on another filesystem (NFS), then the
current implementation of bootstrapping rust fails. Because the 'syscall'
(rename) does not work on crossing filesystem boundary.
This chnage was already merged upstream to the github main rust repository.
rust-lang/rust#124975
The patch has been rebased so that it can be applied correctly.
No functional change.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
(cherry picked from commit 6b6c74dca8)
110 lines
3.2 KiB
Makefile
110 lines
3.2 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=rust
|
|
PKG_VERSION:=1.78.0
|
|
PKG_RELEASE:=2
|
|
|
|
PKG_SOURCE:=rustc-$(PKG_VERSION)-src.tar.gz
|
|
PKG_SOURCE_URL:=https://static.rust-lang.org/dist/
|
|
PKG_HASH:=ff544823a5cb27f2738128577f1e7e00ee8f4c83f2a348781ae4fc355e91d5a9
|
|
HOST_BUILD_DIR:=$(BUILD_DIR)/host/rustc-$(PKG_VERSION)-src
|
|
|
|
PKG_MAINTAINER:=Luca Barbato <lu_zero@luminem.org>
|
|
PKG_LICENSE:=Apache-2.0 MIT
|
|
PKG_LICENSE_FILES:=LICENSE-APACHE LICENSE-MIT
|
|
|
|
PKG_HOST_ONLY:=1
|
|
PKG_BUILD_FLAGS:=no-mips16
|
|
|
|
include $(INCLUDE_DIR)/host-build.mk
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include ./rust-values.mk
|
|
|
|
define Package/rust
|
|
SECTION:=lang
|
|
CATEGORY:=Languages
|
|
SUBMENU:=Rust
|
|
TITLE:=Rust Programming Language Compiler
|
|
URL:=https://www.rust-lang.org/
|
|
DEPENDS:=$(RUST_ARCH_DEPENDS)
|
|
endef
|
|
|
|
define Package/rust/description
|
|
Rust is a multi-paradigm, general-purpose programming language designed for performance
|
|
and safety, especially safe concurrency. Rust is syntactically similar to C++, but can
|
|
guarantee memory safety by using a borrow checker to validate references.
|
|
endef
|
|
|
|
define Package/rust/config
|
|
source "$(SOURCE)/Config.in"
|
|
endef
|
|
|
|
# Rust-lang has an uninstall script
|
|
RUST_UNINSTALL:=$(STAGING_DIR)/host/lib/rustlib/uninstall.sh
|
|
|
|
# Target Flags
|
|
TARGET_CONFIGURE_ARGS = \
|
|
--set=target.$(RUSTC_TARGET_ARCH).ar=$(TARGET_AR) \
|
|
--set=target.$(RUSTC_TARGET_ARCH).cc=$(TARGET_CC_NOCACHE) \
|
|
--set=target.$(RUSTC_TARGET_ARCH).cxx=$(TARGET_CXX_NOCACHE) \
|
|
--set=target.$(RUSTC_TARGET_ARCH).linker=$(TARGET_CC_NOCACHE) \
|
|
--set=target.$(RUSTC_TARGET_ARCH).ranlib=$(TARGET_RANLIB) \
|
|
--set=target.$(RUSTC_TARGET_ARCH).crt-static=false \
|
|
$(if $(CONFIG_USE_MUSL),--set=target.$(RUSTC_TARGET_ARCH).musl-root=$(TOOLCHAIN_DIR))
|
|
|
|
# CARGO_HOME is an environmental
|
|
HOST_CONFIGURE_VARS += CARGO_HOME="$(CARGO_HOME)"
|
|
|
|
# Rust Configuration Arguments
|
|
HOST_CONFIGURE_ARGS = \
|
|
--build=$(RUSTC_HOST_ARCH) \
|
|
--target=$(RUSTC_TARGET_ARCH),$(RUSTC_HOST_ARCH) \
|
|
--host=$(RUSTC_HOST_ARCH) \
|
|
--prefix=$(STAGING_DIR)/host \
|
|
--bindir=$(STAGING_DIR)/host/bin \
|
|
--libdir=$(STAGING_DIR)/host/lib \
|
|
--sysconfdir=$(STAGING_DIR)/host/etc \
|
|
--datadir=$(STAGING_DIR)/host/share \
|
|
--mandir=$(STAGING_DIR)/host/man \
|
|
--dist-compression-formats=gz \
|
|
--disable-sanitizers \
|
|
--release-channel=stable \
|
|
--enable-cargo-native-static \
|
|
--bootstrap-cache-path=$(DL_DIR)/rustc \
|
|
--set=llvm.download-ci-llvm=true \
|
|
$(TARGET_CONFIGURE_ARGS)
|
|
|
|
define Host/Uninstall
|
|
# Call the Uninstall script
|
|
[ -f $(RUST_UNINSTALL) ] && \
|
|
$(BASH) $(RUST_UNINSTALL) || echo No Uninstall
|
|
endef
|
|
|
|
define Host/Compile
|
|
$(RUST_SCCACHE_VARS) \
|
|
CARGO_HOME=$(CARGO_HOME) \
|
|
TARGET_CFLAGS="$(TARGET_CFLAGS)" \
|
|
$(PYTHON) $(HOST_BUILD_DIR)/x.py \
|
|
--build-dir $(HOST_BUILD_DIR)/build \
|
|
--config $(HOST_BUILD_DIR)/config.toml \
|
|
dist build-manifest cargo llvm-tools rustc rust-std rust-src
|
|
endef
|
|
|
|
define Host/Install
|
|
( \
|
|
cd $(HOST_BUILD_DIR)/build/dist ; \
|
|
for targz in *.tar.gz; do \
|
|
$(STAGING_DIR_HOST)/bin/libdeflate-gzip -dc "$$$$targz" | tar -xf - ; \
|
|
done ; \
|
|
find . -mindepth 2 -maxdepth 2 -type f -name install.sh \
|
|
-execdir bash '{}' --prefix=$(STAGING_DIR)/host --disable-ldconfig \; ; \
|
|
)
|
|
endef
|
|
|
|
$(eval $(call HostBuild))
|
|
$(eval $(call BuildPackage,rust))
|