forked from Mbed-TLS/mbedtls
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathall.sh
executable file
·96 lines (82 loc) · 3.04 KB
/
all.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
89
90
91
92
93
94
95
96
#! /usr/bin/env bash
# all.sh (transitional wrapper)
#
# Copyright The Mbed TLS Contributors
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
# During the transition of CI associated with the repo split,
# we want all.sh from the mbedtls repo to transparently run both
# mbedtls and tf-psa-crypto components.
# This is what this wrapper is about.
# Once the transition is over, this wrapper can be removed,
# and mbedtls-all.sh renamed again to all.sh.
#
# This wrapper is mostly for the CI's benefit. Developers probably want to
# directly invoke one or two of the following commands:
# - tests/scripts/mbedtls-all.sh ...
# - (cd tf-psa-crypto && tests/scripts/all.sh ...)
# This script must be invoked from the project's root.
set -eu
# Get the list of components available on each side.
COMP_MBEDTLS=$(tests/scripts/mbedtls-all.sh --list-all-components | sort)
COMP_CRYPTO=$(cd tf-psa-crypto && tests/scripts/all.sh --list-all-components | sort)
# Error out if any component is available on both sides
COMMON=$(comm -12 <(echo "$COMP_MBEDTLS") <(echo "$COMP_CRYPTO") | tr '\n' ' ')
if [ -n "$COMMON" ]; then
echo "The following components are duplicated: $COMMON" >&2
exit 2
fi
# all.sh complains when a component is requested explicitly but is not
# available. However, here we actually run two instances of all.sh, so when
# requesting one component epxlicitly, at least one instance is not going to
# know about it. So, when invoking each side, remove the other side's
# components from its command line. This is safe because we know from above
# that no component is on both sides.
# mbedtls args are global args without the crypto components
COMP_CRYPTO=$(echo $COMP_CRYPTO | tr '\n' ' ')
for arg in "$@"; do
case " $COMP_CRYPTO " in
*" $arg "*) ;;
*) mbedtls_args+=( $arg ) ;;
esac
done
# crypto args are global args without the mbedtls components
COMP_MBEDTLS=$(echo $COMP_MBEDTLS | tr '\n' ' ')
for arg in "$@"; do
case " $COMP_MBEDTLS " in
*" $arg "*) ;;
*) crypto_args+=( $arg ) ;;
esac
done
# Note: don't print debug info on what commands are being run, because we
# don't want to pollute the output especially when --list-components is used.
# call mbedtls's all.sh
set +e
tests/scripts/mbedtls-all.sh "${mbedtls_args[@]}"
mbedtls_exit=$?
set -e
if [ $mbedtls_exit -ne 0 ]; then
echo "mbedtls-all.sh exited $mbedtls_exit" >&2
fi
# if it returned non-zero, should we keep going?
if [ $mbedtls_exit -ne 0 ]; then
case " $@ " in
*" --keep-going "*) ;; # fall through and run tf-psa-crypto's all.sh
*) exit $mbedtls_exit;;
esac
fi
# call tf-psa-crypto's all.sh
set +e
(cd tf-psa-crypto && tests/scripts/all.sh "${crypto_args[@]}")
crypto_exit=$?
set -e
if [ $crypto_exit -ne 0 ]; then
echo "tf-psa-crypto's all.sh exited $crypto_exit" >&2
fi
# return an appropriate exit code
if [ $mbedtls_exit -ne 0 ]; then
echo "mbedtls-all.sh exited $mbedtls_exit" >&2
echo "Please scroll up for a summary of errors in mbedtls-all.sh" >&2
exit $mbedtls_exit
else
exit $crypto_exit
fi