Skip to content

Commit 2a9d13d

Browse files
authored
Merge pull request #230 from sebastian-carpenter/build-script-update
wolfprovider build script updates
2 parents 05f9166 + b39c92a commit 2a9d13d

File tree

5 files changed

+244
-92
lines changed

5 files changed

+244
-92
lines changed

scripts/build-wolfprovider.sh

Lines changed: 121 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,136 @@
22
# This script provides the bare minimum function definitions for compiling
33
# the wolfProvider library
44

5-
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
6-
LOG_FILE=${SCRIPT_DIR}/build-release.log
7-
source ${SCRIPT_DIR}/utils-wolfprovider.sh
8-
95
show_help() {
106
echo "Usage: $0"
117
echo ""
8+
echo "Script Arguments:"
9+
echo " --help, -help, -h Display this help menu and exit"
10+
echo " --clean Run make clean in OpenSSL, wolfSSL, and wolfProvider"
11+
echo " --distclean Remove source directories of OpenSSL and wolfSSL"
12+
echo " --debug Builds OpenSSL, wolfSSL, and WolfProvider with debugging enabled. This is the same as setting WOLFPROV_DEBUG=1"
13+
echo " --debug-asn-template Enable debug information for asn within wolfSSL"
14+
echo " --disable-err-trace No debug trace messages from library errors in wolfSSL"
15+
echo " --openssl-ver=VER Which version of OpenSSL to clone"
16+
echo " --wolfssl-ver=VER Which version of wolfSSL to clone"
17+
echo " --enable-fips Build wolfProvider with a cloned FIPS bundle. Cloned FIPS bundle can be changed with --fips-check"
18+
echo " --fips-bundle=DIR Build wolfProvider with a directory containing a wolfSSL FIPS bundle instead of cloning from GitHub. Requires a FIPS version to be given by --fips-version"
19+
echo " --fips-check=TAG Choose a FIPS tag to clone. May require a version to be given by --fips-version"
20+
echo " --fips-version=VER Choose the wolfSSL FIPS version"
21+
echo " --quicktest Disable some tests for a faster testing suite"
22+
echo ""
1223
echo "Environment Variables:"
13-
echo " OPENSSL_TAG OpenSSL tag to use (e.g., openssl-3.5.0)"
14-
echo " WOLFSSL_TAG wolfSSL tag to use (e.g., v5.8.0-stable)"
15-
echo " WOLFPROV_DEBUG If set to 1, builds OpenSSL, wolfSSL, and wolfProvider with debug options enabled"
16-
echo " WOLFSSL_FIPS_BUNDLE Directory containing the wolfSSL FIPS bundle to use instead of cloning from GitHub"
17-
echo " WOLFSSL_FIPS_VERSION Version of wolfSSL FIPS bundle (v5, v6, ready), used as an argument for --enable-fips when configuring wolfSSL"
24+
echo " OPENSSL_TAG OpenSSL tag to use (e.g., openssl-3.5.0)"
25+
echo " WOLFSSL_TAG wolfSSL tag to use (e.g., v5.8.0-stable)"
26+
echo " WOLFSSL_ISFIPS If set to 1, clones a wolfSSL FIPS bundle from GitHub"
27+
echo " WOLFSSL_FIPS_BUNDLE Directory containing the wolfSSL FIPS bundle to use instead of cloning from GitHub"
28+
echo " WOLFSSL_FIPS_VERSION Version of wolfSSL FIPS bundle (v5, v6, ready), used as an argument for --enable-fips when configuring wolfSSL"
29+
echo " WOLFSSL_FIPS_CHECK_TAG Tag for wolfSSL FIPS bundle (linuxv5.2.1, v6.0.0, etc), used as an argument for fips-check.sh when cloning a wolfSSL FIPS version"
30+
echo " WOLFPROV_CLEAN If set to 1, run make clean in OpenSSL, wolfSSL, and wolfProvider"
31+
echo " WOLFPROV_DISTCLEAN If set to 1, remove the source directories of OpenSSL and wolfSSL"
32+
echo " WOLFPROV_DEBUG If set to 1, builds OpenSSL, wolfSSL, and wolfProvider with debug options enabled"
33+
echo " WOLFPROV_QUICKTEST If set to 1, disables some tests in the test suite to increase test speed"
34+
echo " WOLFPROV_DISABLE_ERR_TRACE If set to 1, wolfSSL will not be configured with --enable-debug-trace-errcodes=backtrace"
1835
echo ""
1936
}
2037

21-
if [[ "$1" == "--help" || "$1" == "-h" || "$1" == "-help" ]]; then
22-
show_help
23-
exit 0
38+
args_wrong=""
39+
args=""
40+
for arg in "$@"; do
41+
args+="$arg, "
42+
case "$arg" in
43+
--help | -help | -h)
44+
show_help
45+
exit 0
46+
;;
47+
--clean)
48+
WOLFPROV_CLEAN=1
49+
;;
50+
--distclean)
51+
WOLFPROV_DISTCLEAN=1
52+
;;
53+
--debug)
54+
WOLFPROV_DEBUG=1
55+
;;
56+
--debug-asn-template)
57+
WOLFSSL_DEBUG_ASN_TEMPLATE=1
58+
;;
59+
--disable-err-trace)
60+
WOLFPROV_DISABLE_ERR_TRACE=1
61+
;;
62+
--openssl-ver=*)
63+
IFS='=' read -r trash ossl_ver <<< "$arg"
64+
if [ -z "$ossl_ver" ]; then
65+
echo "No version given for --openssl-ver"
66+
args_wrong+="$arg, "
67+
fi
68+
OPENSSL_TAG="$ossl_ver"
69+
;;
70+
--wolfssl-ver=*)
71+
IFS='=' read -r trash wolf_ver <<< "$arg"
72+
if [ -z "$wolf_ver" ]; then
73+
echo "No version given for --wolfssl-ver"
74+
args_wrong+="$arg, "
75+
fi
76+
WOLFSSL_TAG="$wolf_ver"
77+
;;
78+
--enable-fips)
79+
unset WOLFSSL_FIPS_BUNDLE
80+
WOLFSSL_ISFIPS=1
81+
;;
82+
--fips-bundle=*)
83+
unset WOLFSSL_ISFIPS
84+
unset WOLFSSL_FIPS_CHECK_TAG
85+
IFS='=' read -r trash fips_bun <<< "$arg"
86+
if [ -z "$fips_bun" ]; then
87+
echo "No directory given for --fips-bundle"
88+
args_wrong+="$arg, "
89+
fi
90+
WOLFSSL_FIPS_BUNDLE="$fips_bun"
91+
;;
92+
--fips-check=*)
93+
unset WOLFSSL_FIPS_BUNDLE
94+
IFS='=' read -r trash fips_tag <<< "$arg"
95+
if [ -z "$fips_tag" ]; then
96+
echo "No tag given for --fips-check"
97+
args_wrong+="$arg, "
98+
fi
99+
WOLFSSL_FIPS_CHECK_TAG="$fips_tag"
100+
;;
101+
--fips-version=*)
102+
IFS='=' read -r trash fips_ver <<< "$arg"
103+
if [ -z "$fips_ver" ]; then
104+
echo "No version given for --fips-version"
105+
args_wrong+="$arg, "
106+
fi
107+
WOLFSSL_FIPS_VERSION="$fips_ver"
108+
;;
109+
--quicktest)
110+
WOLFPROV_QUICKTEST=1
111+
;;
112+
*)
113+
args_wrong+="$arg, "
114+
;;
115+
esac
116+
done
117+
118+
if [ -n "$args_wrong" ]; then
119+
args_wrong="`echo $args_wrong | head -c -2 -`"
120+
echo "Unrecognized argument(s) provided: $args_wrong"
121+
echo "Use --help to see a list of arguments"
122+
exit 1
24123
fi
25124

125+
if [ -n "$args" ]; then
126+
args="`echo $args | head -c -2 -`"
127+
echo "Building wolfProvider with: $args"
128+
echo ""
129+
fi
130+
131+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
132+
LOG_FILE=${SCRIPT_DIR}/build-release.log
133+
source ${SCRIPT_DIR}/utils-wolfprovider.sh
134+
26135
echo "Using openssl: $OPENSSL_TAG, wolfssl: $WOLFSSL_TAG"
27136

28137
init_wolfprov

scripts/utils-general.sh

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,6 @@ if [ "$UTILS_GENERAL_LOADED" != "yes" ]; then # only set once
2727
export UTILS_GENERAL_LOADED=yes
2828
fi
2929

30-
check_folder_age() {
31-
folderA=$1
32-
folderB=$2
33-
34-
if [[ "$OSTYPE" == "darwin"* ]]; then
35-
folderA_age=$(find "$folderA" -type f -exec stat -f '%Dm' {} \; | sort -n | tail -n 1)
36-
folderB_age=$(find "$folderB" -type f -exec stat -f '%Dm' {} \; | sort -n | tail -n 1)
37-
else
38-
folderA_age=$(find "$folderA" -type f -printf '%T@' | sort -n | tail -n 1)
39-
folderB_age=$(find "$folderB" -type f -printf '%T@' | sort -n | tail -n 1)
40-
fi
41-
42-
if awk "BEGIN {exit !($folderA_age > $folderB_age)}"; then
43-
echo 1
44-
elif awk "BEGIN {exit !($folderA_age < $folderB_age)}"; then
45-
echo -1
46-
else
47-
echo 0
48-
fi
49-
}
50-
5130
# Usage: check_git_match <target_ref> [<repo_dir>]
5231
check_git_match() {
5332
local target_ref="$1"

scripts/utils-openssl.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,22 @@ NUMCPU=${NUMCPU:-8}
3737
WOLFPROV_DEBUG=${WOLFPROV_DEBUG:-0}
3838
USE_CUR_TAG=${USE_CUR_TAG:-0}
3939

40+
clean_openssl() {
41+
printf "\n"
42+
43+
if [ "$WOLFPROV_CLEAN" -eq "1" ]; then
44+
printf "Cleaning OpenSSL ...\n"
45+
if [ -f "${OPENSSL_SOURCE_DIR}/Makefile" ]; then
46+
make -C "${OPENSSL_SOURCE_DIR}" clean >>$LOG_FILE 2>&1
47+
fi
48+
rm -rf "${OPENSSL_INSTALL_DIR}"
49+
fi
50+
if [ "$WOLFPROV_DISTCLEAN" -eq "1" ]; then
51+
printf "Removing OpenSSL source ...\n"
52+
rm -rf "${OPENSSL_SOURCE_DIR}"
53+
fi
54+
}
55+
4056
clone_openssl() {
4157
if [ -d ${OPENSSL_SOURCE_DIR} ] && [ "$USE_CUR_TAG" != "1" ]; then
4258
check_git_match "${OPENSSL_TAG}" "${OPENSSL_SOURCE_DIR}"

scripts/utils-wolfprovider.sh

Lines changed: 78 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -43,80 +43,101 @@ WOLFPROV_PATH=$WOLFPROV_INSTALL_DIR/lib
4343

4444
WOLFPROV_DEBUG=${WOLFPROV_DEBUG:-0}
4545

46+
WOLFPROV_CLEAN=${WOLFPROV_CLEAN:-0}
47+
WOLFPROV_DISTCLEAN=${WOLFPROV_DISTCLEAN:-0}
48+
49+
clean_wolfprov() {
50+
printf "\n"
51+
52+
if [ "$WOLFPROV_CLEAN" -eq "1" ]; then
53+
printf "Cleaning wolfProvider ...\n"
54+
if [ -f "Makefile" ]; then
55+
make clean >>$LOG_FILE 2>&1
56+
fi
57+
rm -rf ${WOLFPROV_INSTALL_DIR}
58+
fi
59+
}
60+
4661
install_wolfprov() {
4762
cd ${WOLFPROV_SOURCE_DIR}
4863

4964
init_openssl
5065
init_wolfssl
66+
67+
printf "\nConsolidating wolfProvider ...\n"
5168
unset OPENSSL_MODULES
5269
unset OPENSSL_CONF
5370
printf "LD_LIBRARY_PATH: $LD_LIBRARY_PATH\n"
5471

55-
if [ ! -d ${WOLFPROV_INSTALL_DIR} ] || [ $(check_folder_age "${WOLFPROV_INSTALL_DIR}" "${WOLFSSL_INSTALL_DIR}") -lt 0 ] || [ $(check_folder_age "${WOLFPROV_INSTALL_DIR}" "${OPENSSL_INSTALL_DIR}") -lt 0 ]; then
56-
printf "\tConfigure wolfProvider ... "
57-
if [ ! -e "${WOLFPROV_SOURCE_DIR}/configure" ]; then
58-
./autogen.sh >>$LOG_FILE 2>&1
59-
fi
72+
printf "\tConfigure wolfProvider ... "
73+
if [ ! -e "${WOLFPROV_SOURCE_DIR}/configure" ]; then
74+
./autogen.sh >>$LOG_FILE 2>&1
75+
fi
6076

61-
if [ "$WOLFPROV_DEBUG" = "1" ]; then
62-
WOLFPROV_CONFIG_OPTS+=" --enable-debug"
63-
fi
77+
if [ "$WOLFPROV_DEBUG" = "1" ]; then
78+
WOLFPROV_CONFIG_OPTS+=" --enable-debug"
79+
fi
6480

65-
./configure ${WOLFPROV_CONFIG_OPTS} CFLAGS="${WOLFPROV_CONFIG_CFLAGS}" >>$LOG_FILE 2>&1
66-
RET=$?
81+
./configure ${WOLFPROV_CONFIG_OPTS} CFLAGS="${WOLFPROV_CONFIG_CFLAGS}" >>$LOG_FILE 2>&1
82+
RET=$?
6783

68-
if [ $RET != 0 ]; then
69-
printf "\n\n...\n"
70-
tail -n 40 $LOG_FILE
71-
do_cleanup
72-
exit 1
73-
fi
74-
printf "Done.\n"
75-
76-
printf "\tBuild wolfProvider ... "
77-
make -j$NUMCPU >>$LOG_FILE 2>&1
78-
if [ $? != 0 ]; then
79-
printf "\n\n...\n"
80-
tail -n 40 $LOG_FILE
81-
do_cleanup
82-
exit 1
83-
fi
84-
printf "Done.\n"
85-
86-
printf "\tTest wolfProvider ... "
87-
make test >>$LOG_FILE 2>&1
88-
if [ $? != 0 ]; then
89-
printf "\n\n...\n"
90-
tail -n 40 $LOG_FILE
91-
do_cleanup
92-
exit 1
93-
fi
94-
printf "Done.\n"
95-
96-
printf "\tInstall wolfProvider ... "
97-
make install >>$LOG_FILE 2>&1
98-
if [ $? != 0 ]; then
99-
printf "\n\n...\n"
100-
tail -n 40 $LOG_FILE
101-
do_cleanup
102-
exit 1
103-
fi
104-
printf "Done.\n"
84+
if [ $RET != 0 ]; then
85+
printf "\n\n...\n"
86+
tail -n 40 $LOG_FILE
87+
do_cleanup
88+
exit 1
89+
fi
90+
printf "Done.\n"
91+
92+
printf "\tBuild wolfProvider ... "
93+
make -j$NUMCPU >>$LOG_FILE 2>&1
94+
if [ $? != 0 ]; then
95+
printf "\n\n...\n"
96+
tail -n 40 $LOG_FILE
97+
do_cleanup
98+
exit 1
10599
fi
100+
printf "Done.\n"
101+
102+
printf "\tTest wolfProvider ... "
103+
make test >>$LOG_FILE 2>&1
104+
if [ $? != 0 ]; then
105+
printf "\n\n...\n"
106+
tail -n 40 $LOG_FILE
107+
do_cleanup
108+
exit 1
109+
fi
110+
printf "Done.\n"
111+
112+
printf "\tInstall wolfProvider ... "
113+
make install >>$LOG_FILE 2>&1
114+
if [ $? != 0 ]; then
115+
printf "\n\n...\n"
116+
tail -n 40 $LOG_FILE
117+
do_cleanup
118+
exit 1
119+
fi
120+
printf "Done.\n"
106121
}
107122

108123
init_wolfprov() {
109-
# Unset WPFF so we dont fail unit test when building
110-
if [ "${WOLFPROV_FORCE_FAIL}" = "1" ]; then
111-
unset WOLFPROV_FORCE_FAIL
112-
install_wolfprov
113-
export WOLFPROV_FORCE_FAIL=1
124+
if [ "$WOLFPROV_CLEAN" -eq "1" ] || [ "$WOLFPROV_DISTCLEAN" -eq "1" ]; then
125+
clean_openssl
126+
clean_wolfssl
127+
clean_wolfprov
114128
else
115-
install_wolfprov
116-
fi
117-
printf "\twolfProvider installed in: ${WOLFPROV_INSTALL_DIR}\n"
129+
# Unset WPFF so we dont fail unit test when building
130+
if [ "${WOLFPROV_FORCE_FAIL}" = "1" ]; then
131+
unset WOLFPROV_FORCE_FAIL
132+
install_wolfprov
133+
export WOLFPROV_FORCE_FAIL=1
134+
else
135+
install_wolfprov
136+
fi
137+
printf "\twolfProvider installed in: ${WOLFPROV_INSTALL_DIR}\n"
118138

119-
export OPENSSL_MODULES=$WOLFPROV_PATH
120-
export OPENSSL_CONF=${WOLFPROV_CONFIG}
139+
export OPENSSL_MODULES=$WOLFPROV_PATH
140+
export OPENSSL_CONF=${WOLFPROV_CONFIG}
141+
fi
121142
}
122143

0 commit comments

Comments
 (0)