-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathget-depends-cargo-bin-path.sh
More file actions
executable file
·43 lines (34 loc) · 1.65 KB
/
get-depends-cargo-bin-path.sh
File metadata and controls
executable file
·43 lines (34 loc) · 1.65 KB
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
#!/bin/sh
set -eu
debian_path=$(dirname "$0")
min_cargo_versions=$(grep-dctrl -s Build-Depends -n - "${debian_path}"/control | \
grep -v '^\s*#' | \
grep -oP '(?<=cargo-)[0-9.]+')
if [ -z "${min_cargo_versions}" ]; then
echo >&2 "No cargo version specified in Build-Depends."
exit 1
fi
default_cargo_wrapper="/usr/share/cargo/bin/cargo"
default_cargo_wrapper_dir="${default_cargo_wrapper%/cargo}"
default_cargo_version=$(dpkg-query -W -f='${Version}' cargo 2>/dev/null || true)
for min_cargo_version in ${min_cargo_versions}; do
versioned_cargo_wrapper="/usr/lib/rust-${min_cargo_version}/share/cargo/bin/cargo"
versioned_cargo_wrapper_dir="${versioned_cargo_wrapper%/cargo}"
versioned_bin_dir="/usr/lib/rust-${min_cargo_version}/bin"
if [ -x "${default_cargo_wrapper}" ] && \
dpkg --compare-versions "${default_cargo_version}" ge "${min_cargo_version}" 2>/dev/null; then
echo >&2 "Using default cargo at ${default_cargo_wrapper} (version ${default_cargo_version})"
echo "${default_cargo_wrapper_dir}"
exit 0
else
echo >&2 "Default cargo at ${default_cargo_wrapper} does not meet the minimum version requirement of ${min_cargo_version} (found version '${default_cargo_version}')."
fi
if [ -x "${versioned_cargo_wrapper}" ]; then
echo >&2 "Using versioned cargo at ${versioned_cargo_wrapper}"
echo "${versioned_cargo_wrapper_dir}:${versioned_bin_dir}"
exit 0
fi
echo >&2 "Versioned cargo at ${versioned_cargo_wrapper} does not exist or is not executable."
done
echo >&2 "No suitable cargo version found for minimum required version ${min_cargo_versions}."
exit 1