rust-libc/ci/dox.sh

75 lines
2.1 KiB
Bash
Raw Normal View History

2018-11-19 15:49:56 +01:00
#!/usr/bin/env sh
2015-09-17 08:54:56 +02:00
2015-09-18 02:45:10 +02:00
# Builds documentation for all target triples that we have a registered URL for
# in liblibc. This scrapes the list of triples to document from `src/lib.rs`
# which has a bunch of `html_root_url` directives we pick up.
2018-11-19 15:49:56 +01:00
set -ex
2015-09-17 08:54:56 +02:00
TARGET_DOC_DIR=target/doc
README=README.md
PLATFORM_SUPPORT=platform-support.md
2015-09-18 02:45:10 +02:00
rm -rf $TARGET_DOC_DIR
mkdir -p $TARGET_DOC_DIR
2015-09-17 08:54:56 +02:00
2019-05-28 19:10:23 +02:00
if ! rustc --version | grep -E "nightly" ; then
echo "Building the documentation requires a nightly Rust toolchain"
exit 1
fi
rustup component add rust-src
cargo +nightly install cargo-xbuild -Z install-upgrade
2019-05-28 19:10:23 +02:00
# List all targets that do currently build successfully:
# shellcheck disable=SC1003
grep '[\d|\w|-]* \\' ci/build.sh > targets
sed -i.bak 's/ \\//g' targets
grep '^[_a-zA-Z0-9-]*$' targets > tmp && mv tmp targets
2015-09-17 18:52:21 +02:00
# Create a markdown list of supported platforms in $PLATFORM_SUPPORT
rm $PLATFORM_SUPPORT || true
printf '### Platform-specific documentation\n' >> $PLATFORM_SUPPORT
while read -r target; do
echo "documenting ${target}"
case "${target}" in
*apple*)
# FIXME:
# We can't build docs of apple targets from Linux yet.
continue
;;
*)
;;
esac
2019-02-20 13:11:30 +01:00
rustup target add "${target}" || true
2019-08-14 17:32:21 +02:00
# Enable extra configuration flags:
export RUSTDOCFLAGS="--cfg freebsd11"
# If cargo doc fails, then try xargo:
if ! cargo doc --target "${target}" \
--no-default-features --features extra_traits ; then
cargo xdoc --target "${target}" \
--no-default-features --features extra_traits
fi
cp -r "target/${target}/doc" "${TARGET_DOC_DIR}/${target}"
echo "* [${target}](${target}/libc/index.html)" >> $PLATFORM_SUPPORT
done < targets
2015-09-17 18:52:21 +02:00
# Replace <div class="platform_support"></div> with the contents of $PLATFORM_SUPPORT
cp $README $TARGET_DOC_DIR
line=$(grep -n '<div class="platform_docs"></div>' $README | cut -d ":" -f 1)
2015-09-17 08:54:56 +02:00
set +x
{ head -n "$((line-1))" $README; cat $PLATFORM_SUPPORT; tail -n "+$((line+1))" $README; } > $TARGET_DOC_DIR/$README
set -x
2015-09-17 08:54:56 +02:00
2019-02-21 10:18:06 +01:00
# Copy the licenses
cp LICENSE-* $TARGET_DOC_DIR/