svn commit: r533234 - head/lang/rust
Tobias Kortkamp
tobik at FreeBSD.org
Tue Apr 28 04:33:36 UTC 2020
Author: tobik
Date: Tue Apr 28 04:33:35 2020
New Revision: 533234
URL: https://svnweb.freebsd.org/changeset/ports/533234
Log:
lang/rust: Let the framework extract the bootstraps
It is possible for lang/python37 to be built in such a way that it
installs an unloadable lzma module which then causes Rust to fallback
to trying to fetch/extract the tar.gz bootstraps instead.
As a workaround and since it also simplifies some things, let the
ports framework extract the bootstraps and "install" them under
WRKDIR. We point the build to them in config.toml. This is similar
to how things are hooked up in lang/rust-bootstrap and Rust will
then not try to fetch and extract the bootstraps on its own.
PR: 243766
Reviewed by: mikael
Differential Revision: https://reviews.freebsd.org/D24582
Modified:
head/lang/rust/Makefile
Modified: head/lang/rust/Makefile
==============================================================================
--- head/lang/rust/Makefile Tue Apr 28 03:55:36 2020 (r533233)
+++ head/lang/rust/Makefile Tue Apr 28 04:33:35 2020 (r533234)
@@ -14,7 +14,6 @@ DISTFILES?= ${NIGHTLY_DATE:D${NIGHTLY_DATE}/}${DISTNAM
${_RUST_STD_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap \
${_CARGO_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:bootstrap
DIST_SUBDIR?= rust
-EXTRACT_ONLY?= ${DISTFILES:N*\:bootstrap:C/:.*//}
MAINTAINER= rust at FreeBSD.org
COMMENT= Language with a focus on memory safety and concurrency
@@ -100,29 +99,11 @@ IGNORE= fails to run due to a bug in rtld, update to 1
IGNORE= fails to build with qemu-user-static
.endif
-post-extract:
- @${MKDIR} ${WRKSRC}/build/cache/${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}
- ${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${_RUSTC_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX} \
- ${WRKSRC}/build/cache/${_RUSTC_BOOTSTRAP}${EXTRACT_SUFX}
- ${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${_RUST_STD_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX} \
- ${WRKSRC}/build/cache/${_RUST_STD_BOOTSTRAP}${EXTRACT_SUFX}
- ${LN} -sf ${DISTDIR}/${DIST_SUBDIR}/${_CARGO_BOOTSTRAP}${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX} \
- ${WRKSRC}/build/cache/${_CARGO_BOOTSTRAP}${EXTRACT_SUFX}
-
post-patch:
@${REINPLACE_CMD} 's,gdb,${LOCALBASE}/bin/gdb,' ${WRKSRC}/src/etc/rust-gdb
- @${ECHO_MSG} "Canonical bootstrap date and version before patching:"
- @${GREP} -E '^(date|rustc|cargo)' ${WRKSRC}/src/stage0.txt
-# If we override the versions and date of the bootstraps (for instance
-# on aarch64 where we provide our own bootstraps), we need to update
-# places where they are recorded.
- @${REINPLACE_CMD} -e 's,^date:.*,date: ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}},' \
- -e 's,^rustc:.*,rustc: ${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}},' \
- -e '/^rustfmt:/d' \
- -e 's,^cargo:.*,cargo: ${CARGO_BOOTSTRAP_VERSION_${ARCH}:U${CARGO_BOOTSTRAP_VERSION}},' \
- ${WRKSRC}/src/stage0.txt
- @${ECHO_MSG} "Bootstrap date and version after patching:"
- @${GREP} -E '^(date|rustc|cargo)' ${WRKSRC}/src/stage0.txt
+.if defined(NIGHTLY_DATE)
+ @${REINPLACE_CMD} '/^rustfmt:/d' ${WRKSRC}/src/stage0.txt
+.endif
.if ${ARCH} == powerpc64
# Starting with 13.0 powerpc64 is ELFv2 while 12.0 is ELFv1. Pass the correct LLVM target triple.
@${REINPLACE_CMD} 's,powerpc64-unknown-freebsd,powerpc64-unknown-freebsd${OSREL},' \
@@ -141,6 +122,11 @@ do-configure:
# Check that the running kernel has COMPAT_FREEBSD11 required by lang/rust post-ino64
@${SETENV} CC="${CC}" OPSYS="${OPSYS}" OSVERSION="${OSVERSION}" WRKDIR="${WRKDIR}" \
${SH} ${SCRIPTSDIR}/rust-compat11-canary.sh
+.for _component in cargo rust-std rustc
+ @cd ${WRKDIR}/${_component}-*-${OPSYS:tl} && \
+ ${SH} install.sh --disable-ldconfig --prefix=${WRKDIR}/bootstrap \
+ --verbose
+.endfor
@${ECHO_CMD} '[build]' > ${WRKSRC}/config.toml
@${ECHO_CMD} 'vendor=true' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'extended=true' >> ${WRKSRC}/config.toml
@@ -148,6 +134,8 @@ do-configure:
@${ECHO_CMD} 'docs=${_RUST_BUILD_DOCS}' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'verbose=2' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'target=[${_RUST_TARGETS:@.target.@"${.target.}"@:ts,}]' >> ${WRKSRC}/config.toml
+ @${ECHO_CMD} 'cargo="${WRKDIR}/bootstrap/bin/cargo"' >> ${WRKSRC}/config.toml
+ @${ECHO_CMD} 'rustc="${WRKDIR}/bootstrap/bin/rustc"' >> ${WRKSRC}/config.toml
@${ECHO_CMD} '[install]' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'prefix="${PREFIX}"' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'sysconfdir="${PREFIX}/etc"' >> ${WRKSRC}/config.toml
More information about the svn-ports-all
mailing list