Skip to content

Commit b684aeb

Browse files
committed
Fixed issue where rhel >8 packages would not have correct openssl dependency version
We build against systems with the latest available dependencies such as OpenSSL. We use rpm -q --provides to determine the highest API present in OpenSSL and then use that as a Requires. OPENSSL_VERSION is determined in build-scripts/package script. This should ensure that when packages are installed with yum/dnf any required OpenSSL package upgrades will be performed or the installation will fail. Ticket: ENT-12587 Changelog: title libre (cherry picked from commit 38ab4d5)
1 parent 132fa21 commit b684aeb

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

build-scripts/package

+7-1
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,25 @@ case "$PACKAGING" in
129129
fi
130130
fi
131131

132-
# determine policy-version for rhel systems so we can require what we build with
132+
# determine the system-provided versions of dependencies we build against so we can Require them later in our RPM spec files.
133133
if [ "$OS" = "rhel" ]; then
134134
SELINUX_POLICY_VERSION=$(rpm -q --qf '%{VERSION}\n' selinux-policy)
135135
if [ -z "$SELINUX_POLICY_VERSION" ]; then
136136
echo "error: unable to determine selinux-policy package version"
137137
exit 1
138138
fi
139+
OPENSSL_VERSION=$(rpm -q --provides openssl-libs | grep OPENSSL_ | sed 's/^.*_\([0-9.]*\).*$/\1/' | sort -n | tail -1)
140+
if [ -z "$OPENSSL_VERSION" ]; then
141+
echo "error: unable to determine openssl package version"
142+
exit 1
143+
fi
139144
fi
140145

141146
sed \
142147
-e "s/@@VERSION@@/$RPM_VERSION/g" \
143148
-e "s/@@RELEASE@@/$safe_prefix$RPM_RELEASE/g" \
144149
-e "s/@@SELINUX_POLICY_VERSION@@/$SELINUX_POLICY_VERSION/g" \
150+
-e "s/@@OPENSSL_VERSION@@/$OPENSSL_VERSION/g" \
145151
-e "/^%pre\$/r $PREINSTALL" \
146152
-e "/^%post\$/r $POSTINSTALL" \
147153
-e "/^%preun\$/r $PREREMOVE" \

packaging/cfengine-nova-hub/cfengine-nova-hub.spec.in

+6-2
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,13 @@ Requires: libssl.so.1.1()(64bit) libssl.so.1.1(OPENSSL_1_1_0)(64bit) libssl.so.1
3333
Requires: libcrypto.so.1.1()(64bit) libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
3434
%endif
3535

36+
# We build against systems with the latest available dependencies such as OpenSSL.
37+
# We use rpm -q --provides to determine the highest API present in OpenSSL and then use that as a Requires.
38+
# OPENSSL_VERSION is determined in build-scripts/package script.
39+
# This should ensure that when packages are installed with yum/dnf any required OpenSSL package upgrades will be performed or the installation will fail.
3640
%if %{?rhel}%{!?rhel:0} > 8
37-
Requires: libcrypto.so.3()(64bit) libcrypto.so.3(OPENSSL_3.0.0)(64bit) libcrypto.so.3(OPENSSL_3.0.1)(64bit)
38-
Requires: libssl.so.3()(64bit) libssl.so.3(OPENSSL_3.0.0)(64bit)
41+
Requires: libcrypto.so.3()(64bit) libcrypto.so.3(OPENSSL_@@OPENSSL_VERSION@@)(64bit)
42+
Requires: libssl.so.3()(64bit) libssl.so.3(OPENSSL_@@OPENSSL_VERSION@@)(64bit)
3943
%endif
4044

4145
# cfbs/Build requires Python 3.5+ (not available on RHEL 6)

packaging/cfengine-nova/cfengine-nova.spec.in

+6-2
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,13 @@ Requires: libssl.so.1.1()(64bit) libssl.so.1.1(OPENSSL_1_1_0)(64bit) libssl.so.1
2929
Requires: libcrypto.so.1.1()(64bit) libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
3030
%endif
3131

32+
# We build against systems with the latest available dependencies such as OpenSSL.
33+
# We use rpm -q --provides to determine the highest API present in OpenSSL and then use that as a Requires.
34+
# OPENSSL_VERSION is determined in build-scripts/package script.
35+
# This should ensure that when packages are installed with yum/dnf any required OpenSSL package upgrades will be performed or the installation will fail.
3236
%if %{?rhel}%{!?rhel:0} > 8
33-
Requires: libcrypto.so.3()(64bit) libcrypto.so.3(OPENSSL_3.0.0)(64bit) libcrypto.so.3(OPENSSL_3.0.1)(64bit)
34-
Requires: libssl.so.3()(64bit) libssl.so.3(OPENSSL_3.0.0)(64bit)
37+
Requires: libcrypto.so.3()(64bit) libcrypto.so.3(OPENSSL_@@OPENSSL_VERSION@@)(64bit)
38+
Requires: libssl.so.3()(64bit) libssl.so.3(OPENSSL_@@OPENSSL_VERSION@@)(64bit)
3539
%endif
3640

3741
AutoReqProv: no

0 commit comments

Comments
 (0)