blob: a687b88c440128475831fa20f2c2399c23c84af8 (
plain)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
#!/usr/bin/env bash
#
# The following scripts checks whether this shell environment contains all the
# binaries and packages required for an Arti development environment.
###############################################################################
# LIST OF DEPENDENCIES
###############################################################################
# List of binaries required in $PATH
BIN=(
"bash" # Redundant check, but included for completeness sake
"cargo"
"docker"
"git"
"grcov"
"perl"
"pkg-config"
"python3"
"rustc"
"rustup"
"shellcheck"
)
# List of Cargo commands
CARGO=(
"audit"
"fuzz"
"license"
"sort"
)
# List of C libraries, that pkg-config must be able to locate
C_LIBS=(
"openssl"
"sqlite3"
)
# List of Python packages, that must be available to the Python interpreter
PYTHON=(
"bs4"
"lxml"
"toml"
)
# List of Rust toolchain components, that must be available in the component list
RUST=(
"llvm-tools"
)
###############################################################################
# EXECUTION OF THE ACTUAL TESTS
###############################################################################
MISSING_BIN=()
MISSING_CARGO=()
MISSING_C_LIBS=()
MISSING_PYTHON=()
MISSING_RUST=()
for bin in "${BIN[@]}"; do
echo -n "Checking $bin ... "
if ! type "$bin" > /dev/null; then
MISSING_BIN+=("$bin")
else
echo "ok"
fi
done
for cmd in "${CARGO[@]}"; do
echo -n "Checking Cargo command $cmd ... "
if ! cargo "$cmd" --help; then
MISSING_CARGO+=("$cmd")
else
echo "ok"
fi
done
for lib in "${C_LIBS[@]}"; do
echo -n "Checking C library $lib ... "
if ! pkg-config "$lib" > /dev/null; then
MISSING_C_LIBS+=("$lib")
else
echo "ok"
fi
done
for pkg in "${PYTHON[@]}"; do
echo -n "Checking Python3 package $pkg ... "
if ! python3 -c "import $pkg" > /dev/null; then
MISSING_PYTHON+=("$pkg")
else
echo "ok"
fi
done
for comp in "${RUST[@]}"; do
echo -n "Checking Rust component $comp ... "
if ! rustup component list --installed | grep "$comp" > /dev/null; then
MISSING_RUST+=("$comp")
else
echo "ok"
fi
done
echo ""
echo "==============================="
echo "Summary"
echo "==============================="
if [ ${#MISSING_BIN[@]} -ne 0 ] || [ ${#MISSING_CARGO[@]} -ne 0 ] || [ ${#MISSING_C_LIBS[@]} -ne 0 ] || [ ${#MISSING_PYTHON[@]} -ne 0 ] || [ ${#MISSING_RUST[@]} -ne 0 ];
then
echo "Missing binaries: " "${MISSING_BIN[@]}"
echo "Missing Cargo commands: " "${MISSING_CARGO[@]}"
echo "Missing C libraries: " "${MISSING_C_LIBS[@]}"
echo "Missing Python3 packages: " "${MISSING_PYTHON[@]}"
echo "Missing Rust components: " "${MISSING_RUST[@]}"
exit 1
else
echo "No missing packages, enjoy your development environment! :-)"
exit 0
fi
|