Index: lang/rust/Makefile =================================================================== --- lang/rust/Makefile +++ lang/rust/Makefile @@ -82,14 +82,37 @@ _RUST_ARCH_i386= i686 _RUST_TARGET= ${_RUST_ARCH_${ARCH}:U${ARCH}}-unknown-${OPSYS:tl} _RUST_TARGETS= ${_RUST_TARGET} -_RUST_TOOLS= analysis cargo clippy rls rustfmt +_RUST_TOOLS= analysis cargo clippy _RUSTC_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rustc-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} _RUST_STD_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/rust-std-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} _CARGO_BOOTSTRAP= ${BOOTSTRAPS_DATE_${ARCH}:U${BOOTSTRAPS_DATE}}/cargo-${RUST_BOOTSTRAP_VERSION_${ARCH}:U${RUST_BOOTSTRAP_VERSION}}-${_RUST_TARGET} +_PACKAGE_VERS= ${NIGHTLY_DATE:?nightly:${PORTVERSION}} +_COMPONENTS= cargo-${_PACKAGE_VERS}-${_RUST_TARGET} \ + clippy-${_PACKAGE_VERS}-${_RUST_TARGET} \ + rustc-${_PACKAGE_VERS}-${_RUST_TARGET} \ + rust-analysis-${_PACKAGE_VERS}-${_RUST_TARGET} \ + rust-std-${_PACKAGE_VERS}-${_RUST_TARGET} + .include +# rls and rustfmt don't build on nightly +.if !defined(NIGHTLY_DATE) +_RUST_TOOLS+= rls rustfmt +_COMPONENTS+= rls-${PORTVERSION}-${_RUST_TARGET} \ + rustfmt-${PORTVERSION}-${_RUST_TARGET} +.endif + +.if ${PORT_OPTIONS:MSOURCES} +_COMPONENTS+= rust-src-${_PACKAGE_VERS} +.endif + +.if ${PORT_OPTIONS:MWASM} +_COMPONENTS+= rust-analysis-${_PACKAGE_VERS}-wasm32-unknown-unknown \ + rust-std-${_PACKAGE_VERS}-wasm32-unknown-unknown +.endif + .if exists(${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX}) EXTRA_PATCHES+= ${PATCHDIR}/${ARCH}${BOOTSTRAPS_SUFFIX} .endif @@ -101,8 +124,9 @@ USE_GCC= yes .endif -.if ${ARCH} == aarch64 && ${OSVERSION} < 1200502 -IGNORE= fails to run due to a bug in rtld, update to 12-STABLE r342847 or 13-CURRENT r342113 +# remove when 11.4 is EOL +.if ${ARCH} == aarch64 && ${OSVERSION} < 1202000 +IGNORE= fails to run due to a bug in rtld, update to 12.2-RELEASE or newer .endif .ifdef QEMU_EMULATING @@ -124,8 +148,7 @@ ${SH} ${SCRIPTSDIR}/rust-compat11-canary.sh .for _component in cargo rust-std rustc @cd ${WRKDIR}/${_component}-*-${OPSYS:tl} && \ - ${SH} install.sh --prefix=${WRKDIR}/bootstrap \ - --verbose + ${SH} install.sh --prefix=${WRKDIR}/bootstrap --verbose .endfor @${ECHO_CMD} '[build]' > ${WRKSRC}/config.toml @${ECHO_CMD} 'vendor=true' >> ${WRKSRC}/config.toml @@ -186,18 +209,26 @@ do-build: @cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} x.py build --jobs=${MAKE_JOBS_NUMBER} + ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} x.py dist --jobs=${MAKE_JOBS_NUMBER} \ + library/std src/librustc ${_RUST_TOOLS} do-install: - @cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} x.py install --jobs=${MAKE_JOBS_NUMBER} + ${MKDIR} ${WRKSRC}/_extractdist +.for _c in ${_COMPONENTS} + ${RM} -r ${WRKSRC}/_extractdist/* + ${TAR} xf ${WRKSRC}/build/dist/${_c}.tar.xz -C ${WRKSRC}/_extractdist + cd ${WRKSRC}/_extractdist/${_c} && \ + ${SH} install.sh \ + --docdir="${STAGEDIR}${DOCSDIR}" \ + --mandir="${STAGEDIR}${PREFIX}/share/man" \ + --prefix="${STAGEDIR}${PREFIX}" +.endfor + # We autogenerate the plist file. We do that, instead of the # regular pkg-plist, because several libraries have a computed # filename based on the absolute path of the source files. As it # is user-specific, we cannot know their filename in advance. - @${RM} -r ${STAGEDIR}${DOCSDIR}/*.old \ - ${STAGEDIR}${DOCSDIR}/html/.lock \ - ${STAGEDIR}${DOCSDIR}/html/.stamp \ + @${RM} ${STAGEDIR}${DOCSDIR}/*.old \ ${STAGEDIR}${PREFIX}/lib/rustlib/install.log \ ${STAGEDIR}${PREFIX}/lib/rustlib/manifest-* \ ${STAGEDIR}${PREFIX}/lib/rustlib/uninstall.sh