@@ -5,30 +5,38 @@ VERSION="+nightly-2019-05-22"
5
5
CARGO_ARGS=" ${VERSION} -v build --target=${RUST_TARGET} --release"
6
6
7
7
publish_sysroot () {
8
+ local CLEAN_DIR_IF_CHANGED=$1
9
+ shift
8
10
local SYSROOT=$1
11
+ shift
9
12
local SYSROOT_LIB=" ${SYSROOT} /lib/rustlib/${RUST_TARGET} /lib"
10
13
local SYSROOT_LIB_HOST=" ${SYSROOT} /lib/rustlib/${HOST} /lib"
11
- shift
12
- rm -rf ${SYSROOT}
13
14
mkdir -p ${SYSROOT_LIB} ${SYSROOT_LIB_HOST}
15
+ mkdir -p ${SYSROOT_LIB} -new ${SYSROOT_LIB_HOST} -new
14
16
15
17
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
18
20
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}
19
27
}
20
28
21
29
# Build std
22
30
cargo ${CARGO_ARGS} \
23
31
--target-dir=${SYSROOT_BUILD} -stage1 \
24
32
--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
26
34
# Build Zephyr crates
27
35
RUSTFLAGS=" ${RUSTFLAGS} --sysroot ${SYSROOT} -stage1" cargo ${CARGO_ARGS} \
28
36
--target-dir=${SYSROOT_BUILD} -stage2 \
29
37
--manifest-path=./sysroot-stage2/Cargo.toml
30
38
31
- publish_sysroot ${SYSROOT} ${SYSROOT_BUILD} -stage1 ${SYSROOT_BUILD} -stage2
39
+ publish_sysroot ${APP_BUILD} ${ SYSROOT} ${SYSROOT_BUILD} -stage1 ${SYSROOT_BUILD} -stage2
32
40
33
41
export RUSTFLAGS=" ${RUSTFLAGS} --sysroot ${SYSROOT} "
34
42
cargo ${CARGO_ARGS} --target-dir=${APP_BUILD} --manifest-path=${CARGO_MANIFEST}
0 commit comments