openssl-native(sdk): poision built in paths

Long ago, in the OpenSSL 1.1 days changing CFLAGS worked to override
hard-coded paths in the OpenSSL libraries. Even as far back as
kirkstone this was no longer working.

Override make variables instead to poision the paths that get built
into the native (and nativesdk) libraries so they become relocatable
again.

While here, remove the -isystem<foo> compiler argument from the compiler
command line stored in the library, just like we already remove the
prefix-map and sysroot arguments.

(From OE-Core rev: d1b29222ad6243c15275a04f9de5989cf158cb2e)

Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Dan McGregor 2025-02-28 14:32:06 -06:00 committed by Richard Purdie
parent 6b6c774db8
commit f0a765624b
2 changed files with 13 additions and 9 deletions

View File

@ -30,23 +30,26 @@ Update to fix buildpaths qa issue for '-ffile-prefix-map'.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Configurations/unix-Makefile.tmpl | 12 +++++++++++-
Configurations/unix-Makefile.tmpl | 16 +++++++++++++++-
crypto/build.info | 2 +-
2 files changed, 12 insertions(+), 2 deletions(-)
2 files changed, 16 insertions(+), 2 deletions(-)
Index: openssl-3.0.4/Configurations/unix-Makefile.tmpl
===================================================================
--- openssl-3.0.4.orig/Configurations/unix-Makefile.tmpl
+++ openssl-3.0.4/Configurations/unix-Makefile.tmpl
@@ -502,13 +502,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 09303c4..011bda1 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -502,13 +502,27 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
-# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
+# *_Q variables are used for one thing only: to build up buildinf.h
CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g;
+ $cppflags1 =~ s|-isystem/[^ ]+/usr/include||g;
$cppflags2 =~ s|([\\"])|\\$1|g;
+ $cppflags2 =~ s|-isystem/[^ ]+/usr/include||g;
$lib_cppflags =~ s|([\\"])|\\$1|g;
+ $lib_cppflags =~ s|-isystem/[^ ]+/usr/include||g;
join(' ', $lib_cppflags || (), $cppflags2 || (),
$cppflags1 || ()) -}
@ -54,6 +57,7 @@ Index: openssl-3.0.4/Configurations/unix-Makefile.tmpl
+ s|-fdebug-prefix-map=[^ ]+|-fdebug-prefix-map=|g;
+ s|-fmacro-prefix-map=[^ ]+|-fmacro-prefix-map=|g;
+ s|-ffile-prefix-map=[^ ]+|-ffile-prefix-map=|g;
+ s|-isystem/[^ ]+/usr/include ||g;
+ }
+ join(' ', @{$config{CFLAGS}}) -}
+

View File

@ -49,8 +49,8 @@ EXTRA_OECONF:append:class-native = " --with-rand-seed=os,devrandom"
EXTRA_OECONF:append:class-nativesdk = " --with-rand-seed=os,devrandom"
# Relying on hardcoded built-in paths causes openssl-native to not be relocateable from sstate.
CFLAGS:append:class-native = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
CFLAGS:append:class-nativesdk = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
EXTRA_OEMAKE:append:task-compile:class-native = ' OPENSSLDIR="/not/builtin" ENGINESDIR="/not/builtin" MODULESDIR="/not/builtin"'
EXTRA_OEMAKE:append:task-compile:class-nativesdk = ' OPENSSLDIR="/not/builtin" ENGINESDIR="/not/builtin" MODULESDIR="/not/builtin"'
# This allows disabling deprecated or undesirable crypto algorithms.
# The default is to trust upstream choices.