Skip to content

Commit 655b63d

Browse files
authored
Merge pull request #281 from padelsbach/wp_test_deb_ci0-debian-source
Pull openssl source from Debian
2 parents fa78ae8 + aaca205 commit 655b63d

File tree

3 files changed

+48
-15
lines changed

3 files changed

+48
-15
lines changed
-28.4 MB
Binary file not shown.

.github/workflows/build-wolfprovider.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ jobs:
9494
$GITHUB_WORKSPACE/debian/install-wolfssl.sh --tag ${{ inputs.wolfssl_ref }} ${{ env.WOLFSSL_PACKAGES_PATH }}
9595
9696
# Check for cached OpenSSL packages
97+
# WARNING: for Debian, openssl_ref is ignored since we build from Debian baseline
9798
- name: Checking OpenSSL packages in cache
9899
uses: actions/cache@v4
99100
id: openssl_cache
@@ -106,7 +107,7 @@ jobs:
106107

107108
# Install OpenSSL packages from cache if available
108109
- name: Install OpenSSL packages from cache
109-
if: steps.openssl_cache.outputs.cache-hit == 'true'
110+
if: ${{ steps.openssl_cache.outputs.cache-hit == 'true' }}
110111
run: |
111112
printf "Installing OpenSSL packages from cache:\n"
112113
ls -la ${{ env.OPENSSL_PACKAGES_PATH }}

scripts/utils-openssl.sh

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ OPENSSL_LIB_DIRS="${OPENSSL_INSTALL_DIR}/lib:${OPENSSL_INSTALL_DIR}/lib64"
3535

3636
NUMCPU=${NUMCPU:-8}
3737
WOLFPROV_DEBUG=${WOLFPROV_DEBUG:-0}
38+
WOLFPROV_BUILD_DEBIAN=${WOLFPROV_BUILD_DEBIAN:-0}
3839
USE_CUR_TAG=${USE_CUR_TAG:-0}
3940

4041
clean_openssl() {
@@ -56,21 +57,46 @@ clean_openssl() {
5657
}
5758

5859
clone_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

312344
init_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

Comments
 (0)