lang/rust: don't hardcode manifest files after r489132
Approved by: rust (tobik) Differential Revision: https://reviews.freebsd.org/D18737
This commit is contained in:
parent
be38c50bd9
commit
17006791eb
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=490852
1 changed files with 19 additions and 50 deletions
|
@ -77,18 +77,7 @@ LLNEXTGEN_BUILD_DEPENDS= LLnextgen:devel/llnextgen
|
|||
# We use them in:
|
||||
# - pre-install to cleanup the ${STAGEDIR}
|
||||
# - post-install to populate the ${TMPPLIST}
|
||||
RUST_MANIFESTS= lib/rustlib/manifest-cargo \
|
||||
lib/rustlib/manifest-clippy-preview \
|
||||
lib/rustlib/manifest-rls-preview \
|
||||
lib/rustlib/manifest-rustc \
|
||||
lib/rustlib/manifest-rustfmt-preview \
|
||||
lib/rustlib/manifest-rust-analysis-${RUST_TARGET} \
|
||||
lib/rustlib/manifest-rust-std-${RUST_TARGET}
|
||||
RUST_DOCS_MANIFEST= lib/rustlib/manifest-rust-docs
|
||||
RUST_SRC_MANIFEST= lib/rustlib/manifest-rust-src
|
||||
DOCS_VARS= rust_manifests+=${RUST_DOCS_MANIFEST}
|
||||
SOURCES_VARS= rust_manifests+=${RUST_SRC_MANIFEST}
|
||||
|
||||
RUST_MANIFESTS= lib/rustlib/manifest-*
|
||||
PLIST_FILES= lib/rustlib/components \
|
||||
lib/rustlib/rust-installer-version
|
||||
|
||||
|
@ -133,6 +122,11 @@ post-patch:
|
|||
's/"files":{[^}]*}/"files":{}/' \
|
||||
${CARGO_VENDOR_DIR}/*/.cargo-checksum.json
|
||||
|
||||
post-patch-SOURCES-off:
|
||||
# Mimic tools in config.toml with just src excluded
|
||||
@${REINPLACE_CMD} -e 's/config.tools.*"src".*/false;/' \
|
||||
${WRKSRC}/src/bootstrap/install.rs
|
||||
|
||||
.if defined(WITH_CCACHE_BUILD) && !defined(NO_CCACHE)
|
||||
CCACHE_VALUE= "${CCACHE_WRAPPER_PATH:C,/libexec/ccache$,,}/bin/ccache"
|
||||
.else
|
||||
|
@ -184,16 +178,16 @@ do-build:
|
|||
# new ones. Otherwise, the staging directory is polluted with unneeded
|
||||
# files.
|
||||
pre-install:
|
||||
@for f in ${RUST_MANIFESTS} ${RUST_DOCS_MANIFEST} ${RUST_SRC_MANIFEST}; do \
|
||||
if test -f "${STAGEDIR}${PREFIX}/$$f"; then \
|
||||
@for f in ${RUST_MANIFESTS:S,^,${STAGEDIR}${PREFIX}/,}; do \
|
||||
if test -f "$$f"; then \
|
||||
${SED} -E -e 's,^(file|dir):,${STAGEDIR},' \
|
||||
< "${STAGEDIR}${PREFIX}/$$f" \
|
||||
< "$$f" \
|
||||
| ${XARGS} ${RM} -r; \
|
||||
${RM} "${STAGEDIR}${PREFIX}/$$f"; \
|
||||
${RM} "$$f"; \
|
||||
fi; \
|
||||
done
|
||||
@for f in ${PLIST_FILES}; do \
|
||||
${RM} "${STAGEDIR}${PREFIX}/$$f"; \
|
||||
@for f in ${PLIST_FILES:S,^,${STAGEDIR}${PREFIX}/,}; do \
|
||||
${RM} "$$f"; \
|
||||
done
|
||||
|
||||
do-install:
|
||||
|
@ -220,13 +214,12 @@ do-install:
|
|||
# We fix manpage entries in the generated manifests because Rust
|
||||
# installs them uncompressed but the Ports framework compresses them.
|
||||
post-install:
|
||||
for f in ${RUST_MANIFESTS}; do \
|
||||
${REINPLACE_CMD} -E \
|
||||
for f in ${RUST_MANIFESTS:S,^,${STAGEDIR}${PREFIX}/,}; do \
|
||||
${REINPLACE_CMD} -i '' -E \
|
||||
-e 's|:${STAGEDIR}|:|' \
|
||||
-e 's|(man/man[1-9]/.*\.[0-9])|\1.gz|' \
|
||||
${STAGEDIR}${PREFIX}/$$f; \
|
||||
${RM} ${STAGEDIR}${PREFIX}/$$f.bak; \
|
||||
${ECHO_CMD} "${PREFIX}/$$f" >> ${TMPPLIST}; \
|
||||
"$$f"; \
|
||||
${ECHO_CMD} "$${f#${STAGEDIR}}" >> ${TMPPLIST}; \
|
||||
${AWK} '\
|
||||
/^file:/ { \
|
||||
file=$$0; \
|
||||
|
@ -238,7 +231,7 @@ post-install:
|
|||
sub(/^dir:/, "", dir); \
|
||||
system("find ${STAGEDIR}" dir " -type f | ${SED} -E -e \"s|${STAGEDIR}||\""); \
|
||||
}' \
|
||||
${STAGEDIR}${PREFIX}/$$f >> ${TMPPLIST}; \
|
||||
"$$f" >> ${TMPPLIST}; \
|
||||
done
|
||||
${RM} ${STAGEDIR}${PREFIX}/share/doc/rust/*.old
|
||||
${SORT} -u < ${TMPPLIST} > ${TMPPLIST}.uniq
|
||||
|
@ -248,32 +241,8 @@ post-install:
|
|||
${STAGEDIR}${PREFIX}/lib/rustlib/uninstall.sh
|
||||
# FIXME: Static libraries in lib/rustlib/*/lib/*.rlib are not stripped,
|
||||
# but they contain non-object files which make strip(1) unhappy.
|
||||
@${STRIP_CMD} \
|
||||
${STAGEDIR}${PREFIX}/bin/cargo \
|
||||
${STAGEDIR}${PREFIX}/bin/cargo-clippy \
|
||||
${STAGEDIR}${PREFIX}/bin/cargo-fmt \
|
||||
${STAGEDIR}${PREFIX}/bin/clippy-driver \
|
||||
${STAGEDIR}${PREFIX}/bin/rls \
|
||||
${STAGEDIR}${PREFIX}/bin/rustc \
|
||||
${STAGEDIR}${PREFIX}/bin/rustdoc \
|
||||
${STAGEDIR}${PREFIX}/bin/rustfmt \
|
||||
${STAGEDIR}${PREFIX}/lib/*.so \
|
||||
${STAGEDIR}${PREFIX}/lib/rustlib/*/lib/*.so \
|
||||
${STAGEDIR}${PREFIX}/lib/rustlib/*/codegen-backends/*.so
|
||||
|
||||
# We set `extended = true` in config.toml because we want to build
|
||||
# Cargo at the same time. However, this installs the rust-src component
|
||||
# as well. If the user doesn't want that, I don't know how to prevent
|
||||
# its install. So for now, use the rust-src manifest to remove it from
|
||||
# ${STAGEDIR}.
|
||||
post-install-SOURCES-off:
|
||||
if test -f "${STAGEDIR}${PREFIX}/${RUST_SRC_MANIFEST}"; then \
|
||||
${SED} -E -e 's,^(file|dir):,,' \
|
||||
< "${STAGEDIR}${PREFIX}/${RUST_SRC_MANIFEST}" \
|
||||
| ${XARGS} ${RM} -r; \
|
||||
${RM} "${STAGEDIR}${PREFIX}/${RUST_SRC_MANIFEST}"; \
|
||||
${RM} -r "${STAGEDIR}${PREFIX}/lib/rustlib/src"; \
|
||||
fi
|
||||
@${FIND} ${STAGEDIR}${PREFIX}/bin -exec ${FILE} -i {} + | ${AWK} -F: \
|
||||
'/executable|sharedlib/ { print $$1 }' | ${XARGS} ${STRIP_CMD}
|
||||
|
||||
# Note that make test does not work when rust is already installed.
|
||||
do-test:
|
||||
|
|
Loading…
Reference in a new issue