Skip to content

Commit af87c46

Browse files
committed
build.sh: clean subsequent build step if sysroot changes
1 parent 21364d6 commit af87c46

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

rust/build.sh

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,38 @@ VERSION="+nightly-2019-05-22"
55
CARGO_ARGS="${VERSION} -v build --target=${RUST_TARGET} --release"
66

77
publish_sysroot() {
8+
local CLEAN_DIR_IF_CHANGED=$1
9+
shift
810
local SYSROOT=$1
11+
shift
912
local SYSROOT_LIB="${SYSROOT}/lib/rustlib/${RUST_TARGET}/lib"
1013
local SYSROOT_LIB_HOST="${SYSROOT}/lib/rustlib/${HOST}/lib"
11-
shift
12-
rm -rf ${SYSROOT}
1314
mkdir -p ${SYSROOT_LIB} ${SYSROOT_LIB_HOST}
15+
mkdir -p ${SYSROOT_LIB}-new ${SYSROOT_LIB_HOST}-new
1416

1517
for src in $@; do
16-
cp -a $src/${RUST_TARGET}/release/deps/. ${SYSROOT_LIB}
17-
cp -a $src/release/deps/. ${SYSROOT_LIB_HOST}
18+
cp -a $src/${RUST_TARGET}/release/deps/. ${SYSROOT_LIB}-new
19+
cp -a $src/release/deps/. ${SYSROOT_LIB_HOST}-new
1820
done
21+
if ! diff -qr ${SYSROOT_LIB} ${SYSROOT_LIB}-new || ! diff -qr ${SYSROOT_LIB_HOST} ${SYSROOT_LIB_HOST}-new; then
22+
rm -rf ${CLEAN_DIR_IF_CHANGED}
23+
fi
24+
rm -r ${SYSROOT_LIB} ${SYSROOT_LIB_HOST}
25+
mv ${SYSROOT_LIB}-new ${SYSROOT_LIB}
26+
mv ${SYSROOT_LIB_HOST}-new ${SYSROOT_LIB_HOST}
1927
}
2028

2129
# Build std
2230
cargo ${CARGO_ARGS} \
2331
--target-dir=${SYSROOT_BUILD}-stage1 \
2432
--manifest-path=./sysroot-stage1/Cargo.toml -p std
25-
publish_sysroot ${SYSROOT}-stage1 ${SYSROOT_BUILD}-stage1
33+
publish_sysroot ${SYSROOT_BUILD}-stage2 ${SYSROOT}-stage1 ${SYSROOT_BUILD}-stage1
2634
# Build Zephyr crates
2735
RUSTFLAGS="${RUSTFLAGS} --sysroot ${SYSROOT}-stage1" cargo ${CARGO_ARGS} \
2836
--target-dir=${SYSROOT_BUILD}-stage2 \
2937
--manifest-path=./sysroot-stage2/Cargo.toml
3038

31-
publish_sysroot ${SYSROOT} ${SYSROOT_BUILD}-stage1 ${SYSROOT_BUILD}-stage2
39+
publish_sysroot ${APP_BUILD} ${SYSROOT} ${SYSROOT_BUILD}-stage1 ${SYSROOT_BUILD}-stage2
3240

3341
export RUSTFLAGS="${RUSTFLAGS} --sysroot ${SYSROOT}"
3442
cargo ${CARGO_ARGS} --target-dir=${APP_BUILD} --manifest-path=${CARGO_MANIFEST}

0 commit comments

Comments
 (0)