@@ -35,6 +35,7 @@ OPENSSL_LIB_DIRS="${OPENSSL_INSTALL_DIR}/lib:${OPENSSL_INSTALL_DIR}/lib64"
3535
3636NUMCPU=${NUMCPU:- 8}
3737WOLFPROV_DEBUG=${WOLFPROV_DEBUG:- 0}
38+ WOLFPROV_BUILD_DEBIAN=${WOLFPROV_BUILD_DEBIAN:- 0}
3839USE_CUR_TAG=${USE_CUR_TAG:- 0}
3940
4041clean_openssl () {
@@ -56,21 +57,46 @@ clean_openssl() {
5657}
5758
5859clone_openssl () {
59- if [ -d ${OPENSSL_SOURCE_DIR} ] && [ " $USE_CUR_TAG " != " 1" ]; then
60+ # Check if the source directory exists and is a git repository
61+ if [ -d ${OPENSSL_SOURCE_DIR} ] && [ " $USE_CUR_TAG " != " 1" ] && [ " $WOLFPROV_BUILD_DEBIAN " != " 1" ]; then
6062 check_git_match " ${OPENSSL_TAG} " " ${OPENSSL_SOURCE_DIR} "
6163 fi
6264
6365 if [ ! -d ${OPENSSL_SOURCE_DIR} ]; then
6466 printf " \tOpenSSL source directory not found: ${OPENSSL_SOURCE_DIR} \n"
65- CLONE_TAG=${USE_CUR_TAG: +${OPENSSL_TAG_CUR} }
66- CLONE_TAG=${CLONE_TAG:- ${OPENSSL_TAG} }
6767
68- DEPTH_ARG=${WOLFPROV_DEBUG: +" " }
69- DEPTH_ARG=${DEPTH_ARG:- --depth=1}
70-
71- printf " \tClone OpenSSL ${CLONE_TAG} from ${OPENSSL_GIT_URL} ... "
72- git clone ${DEPTH_ARG} -b ${CLONE_TAG} ${OPENSSL_GIT_URL} ${OPENSSL_SOURCE_DIR} >> $LOG_FILE 2>&1
73- RET=$?
68+ # If building for Debian, build from Debian baseline
69+ if [ $WOLFPROV_BUILD_DEBIAN -eq 1 ]; then
70+ printf " \tDownloading OpenSSL from Debian ... \n"
71+ # Check if "deb-src" is in the sources.list, which allows us to
72+ # grab the source from Debian.
73+ if [ -f /etc/apt/sources.list ] && grep -q " deb-src" /etc/apt/sources.list; then
74+ printf " \tDebian sources.list already contains deb-src\n"
75+ else
76+ printf " \tAdding deb-src to sources.list\n"
77+ echo " deb-src http://deb.debian.org/debian bookworm main" >> /etc/apt/sources.list
78+ echo " deb-src http://deb.debian.org/debian-security bookworm-security main" >> /etc/apt/sources.list
79+ echo " deb-src http://deb.debian.org/debian bookworm-updates main" >> /etc/apt/sources.list
80+ fi
81+
82+ pushd $( mktemp -d) 2>&1 > /dev/null
83+ apt update >> $LOG_FILE 2>&1
84+ apt-get source -t bookworm openssl >> $LOG_FILE 2>&1
85+ RET=$?
86+ # Move the source to the correct directory
87+ mv openssl-* ${OPENSSL_SOURCE_DIR}
88+ popd 2>&1 > /dev/null
89+ else
90+ CLONE_TAG=${USE_CUR_TAG: +${OPENSSL_TAG_CUR} }
91+ CLONE_TAG=${CLONE_TAG:- ${OPENSSL_TAG} }
92+
93+ DEPTH_ARG=${WOLFPROV_DEBUG: +" " }
94+ DEPTH_ARG=${DEPTH_ARG:- --depth=1}
95+
96+ printf " \tClone OpenSSL ${CLONE_TAG} from ${OPENSSL_GIT_URL} ... "
97+ git clone ${DEPTH_ARG} -b ${CLONE_TAG} ${OPENSSL_GIT_URL} ${OPENSSL_SOURCE_DIR} >> $LOG_FILE 2>&1
98+ RET=$?
99+ fi
74100
75101 if [ $RET != 0 ]; then
76102 printf " ERROR.\n"
@@ -86,7 +112,7 @@ clone_openssl() {
86112 fi
87113 else
88114 printf " \tOpenSSL source directory exists: ${OPENSSL_SOURCE_DIR} \n"
89- if [ ! -d ${OPENSSL_SOURCE_DIR} /.git ]; then
115+ if [ ! -d ${OPENSSL_SOURCE_DIR} /.git ] && [ " $is_debian_host " != " 1 " ] ; then
90116 printf " ERROR: OpenSSL source directory is not a git repository: ${OPENSSL_SOURCE_DIR} \n"
91117 do_cleanup
92118 exit 1
@@ -99,9 +125,15 @@ is_openssl_patched() {
99125 return 0
100126 fi
101127
102- pushd ${OPENSSL_SOURCE_DIR} & > /dev/null
103- patch_applied=$( git diff --quiet " crypto/provider_predefined.c" 2> /dev/null && echo 1 || echo 0)
104- popd & > /dev/null
128+ # Check if $OPENSSL_SOURCE_DIR is a git repository
129+ if [ -d ${OPENSSL_SOURCE_DIR} /.git ]; then
130+ pushd ${OPENSSL_SOURCE_DIR} & > /dev/null
131+ patch_applied=$( git diff --quiet " crypto/provider_predefined.c" 2> /dev/null && echo 1 || echo 0)
132+ popd & > /dev/null
133+ else
134+ # Not a git repo, may have been downloaded separately (from Debian sources)
135+ patch_applied=$( grep -q " libwolfprov" " ${OPENSSL_SOURCE_DIR} /crypto/provider_predefined.c" && echo 1 || echo 0)
136+ fi
105137 return $patch_applied
106138}
107139
@@ -310,7 +342,7 @@ install_openssl() {
310342}
311343
312344init_openssl () {
313- if [ " ${ WOLFPROV_BUILD_DEBIAN:- 0} " -eq 1 ]; then
345+ if [ $ WOLFPROV_BUILD_DEBIAN -eq 1 ]; then
314346 install_openssl_deb
315347 else
316348 install_openssl
0 commit comments