-
Notifications
You must be signed in to change notification settings - Fork 13.3k
/
Copy pathbuild-fuchsia.sh
executable file
·88 lines (72 loc) · 2.98 KB
/
build-fuchsia.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env bash
# Downloads and builds the Fuchsia operating system using a toolchain installed
# in $RUST_INSTALL_DIR.
#
# You may run this script locally using Docker with the following command:
#
# $ src/ci/docker/run.sh x86_64-gnu-integration
#
# Alternatively, from within the container with --dev, assuming you have made it
# as far as building the toolchain with the above command:
#
# $ src/ci/docker/run.sh --dev x86_64-gnu-integration
# docker# git config --global --add safe.directory /checkout/obj/fuchsia
# docker# ../src/ci/docker/host-x86_64/x86_64-gnu-integration/build-fuchsia.sh
#
# Also see the docs in the rustc-dev-guide for more info:
# https://github.com/rust-lang/rustc-dev-guide/pull/1989
set -euf -o pipefail
# Set this variable to 1 to disable updating the Fuchsia checkout. This is
# useful for making local changes. You can find the Fuchsia checkout in
# `obj/x86_64-gnu-integration/fuchsia` in your local checkout after running this
# job for the first time.
KEEP_CHECKOUT=
# Any upstream refs that should be cherry-picked. This can be used to include
# Gerrit changes from https://fxrev.dev during development (click the "Download"
# button on a changelist to see the cherry pick ref). Example:
# PICK_REFS=(refs/changes/71/1054071/2 refs/changes/74/1054574/2)
PICK_REFS=()
# The commit hash of Fuchsia's integration.git to check out. This controls the
# commit hash of fuchsia.git and some other repos in the "monorepo" checkout, in
# addition to versions of prebuilts. It should be bumped regularly by the
# Fuchsia team – we aim for every 1-2 months.
INTEGRATION_SHA=737ebdd83afa47b742ca8325fad0176952fcefbd
checkout=fuchsia
jiri=.jiri_root/bin/jiri
set -x
if [ -z "$KEEP_CHECKOUT" ]; then
# This script will:
# - create a directory named "fuchsia" if it does not exist
# - download "jiri" to "fuchsia/.jiri_root/bin"
curl -s "https://fuchsia.googlesource.com/jiri/+/HEAD/scripts/bootstrap_jiri?format=TEXT" \
| base64 --decode \
| bash -s $checkout
cd $checkout
$jiri init \
-partial=true \
-analytics-opt=false \
.
$jiri import \
-name=integration \
-revision=$INTEGRATION_SHA \
-overwrite=true \
flower \
"https://fuchsia.googlesource.com/integration"
if [ -d ".git" ]; then
# Wipe out any local changes if we're reusing a checkout.
git checkout --force JIRI_HEAD
fi
$jiri update -autoupdate=false
echo integration commit = $(git -C integration rev-parse HEAD)
for git_ref in "${PICK_REFS[@]}"; do
git fetch https://fuchsia.googlesource.com/fuchsia $git_ref
git cherry-pick --no-commit FETCH_HEAD
done
else
echo Reusing existing Fuchsia checkout
cd $checkout
fi
# Run the script inside the Fuchsia checkout responsible for building Fuchsia.
# You can change arguments to the build by setting KEEP_CHECKOUT=1 above and
# modifying them in build_fuchsia_from_rust_ci.sh.
bash scripts/rust/build_fuchsia_from_rust_ci.sh