linux-sgx/0002-Add-support-for-building-against-host-CppMicroServic.patch
Daniel P. Berrangé bc5efa9502 Update to SGX 2.26 / DCAP 1.23, adding PCCS service
Resolves: https://issues.redhat.com/browse/RHEL-121612
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2025-11-18 18:29:56 +00:00

143 lines
5.9 KiB
Diff

From 02f4535633d317894629f30daf0583fddcdf3f1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 13 Feb 2025 14:01:10 +0000
Subject: [PATCH 02/15] Add support for building against host CppMicroServices
lib
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For the aesm_sevice it is desirable to be build against the host
provided CppMicroServices library, such that security updates
automatically propagate from the distro vendor.
This is enabled as an opt-in by setting the make variable
USE_HOST_CPPMICROSERVICES=1
The in-tree bundle of CppMicroServices ships a 6 year outdated
git snapshot that claims to be version 4.0.0, since that time
upstream reverted the version to 3.x.x. Hence the cmake path
used for the host is looking for 'cppmicroservices3' not
'cppmicroservices4' which is used for the ancient bundled copy.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
buildenv.mk | 10 +++++++++
psw/ae/aesm_service/Makefile | 27 ++++++++++++++---------
psw/ae/aesm_service/source/CMakeLists.txt | 2 +-
3 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/buildenv.mk b/buildenv.mk
index 6dac4028..915e2eb4 100644
--- a/buildenv.mk
+++ b/buildenv.mk
@@ -398,3 +398,13 @@ TINYXML2_LDFLAGS =
TINYXML2_OBJ = tinyxml2.o
TINYXML2_DIR = $(LINUX_EXTERNAL_DIR)/tinyxml2/
endif
+
+USE_HOST_CPPMICROSERVICES ?= 0
+
+ifeq ($(USE_HOST_CPPMICROSERVICES), 1)
+CPPMICROSERVICES_CMAKE_DIR = /usr/share/cppmicroservices3/cmake
+else
+CPPMICROSERVICES_SRC_DIR = $(LINUX_EXTERNAL_DIR)/CppMicroServices
+CPPMICROSERVICES_INSTALL_DIR = $(CPPMICROSERVICES_SRC_DIR)/local-install
+CPPMICROSERVICES_CMAKE_DIR = $(CPPMICROSERVICES_INSTALL_DIR)/share/cppmicroservices4/cmake
+endif
diff --git a/psw/ae/aesm_service/Makefile b/psw/ae/aesm_service/Makefile
index bac84292..89a15875 100644
--- a/psw/ae/aesm_service/Makefile
+++ b/psw/ae/aesm_service/Makefile
@@ -32,10 +32,8 @@
TOP_DIR = ../../..
include $(TOP_DIR)/buildenv.mk
-CPPMICROSERVICES_DIR := $(LINUX_EXTERNAL_DIR)/CppMicroServices
-CPPMICROSERVICES_INSTALL := $(CPPMICROSERVICES_DIR)/local-install
AESM_CONFIG := -DBUILD_SHARED_LIBS=ON -DUS_BUILD_SHARED_LIBS=ON
-CPPMICROSERVICES_CONFIG := -DCMAKE_INSTALL_PREFIX=$(CPPMICROSERVICES_INSTALL) -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS= -DCMAKE_CXX_FLAGS= -DFORTIFY_SOURCE_VAL=$(FORTIFY_SOURCE_VAL)
+CPPMICROSERVICES_CONFIG := -DCMAKE_INSTALL_PREFIX=$(CPPMICROSERVICES_INSTALL_DIR) -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS= -DCMAKE_CXX_FLAGS= -DFORTIFY_SOURCE_VAL=$(FORTIFY_SOURCE_VAL)
ifdef DEBUG
AESM_CONFIG += -DCMAKE_BUILD_TYPE=Debug
else
@@ -48,6 +46,7 @@ endif
AESM_CONFIG += -DOPENSSL_CRYPTO_CFLAGS=$(OPENSSL_CRYPTO_CFLAGS)
AESM_CONFIG += -DOPENSSL_CRYPTO_LIBS=$(OPENSSL_CRYPTO_LIBS)
+AESM_CONFIG += -DCPPMICROSERVICES_CMAKE_DIR=$(CPPMICROSERVICES_CMAKE_DIR)
ifeq ($(ARCH), x86)
SQLITECFLAGS += -m32
@@ -66,7 +65,9 @@ CFLAGS := $(filter-out -Werror, $(CFLAGS))
WHITE_LIST_FILE := $(LINUX_PSW_DIR)/ae/data/prebuilt/white_list_cert_to_be_verify.bin
APPNAME := source/build/bin/aesm_service
-CPPMICROSERVICES:= $(CPPMICROSERVICES_DIR)/build/lib/libCppMicroServices.so.4.0.0
+ifeq ($(USE_HOST_CPPMICROSERVICES), 0)
+CPPMICROSERVICES:= $(CPPMICROSERVICES_SRC_DIR)/build/lib/libCppMicroServices.so.4.0.0
+endif
RDRAND_LIBDIR :=$(LINUX_EXTERNAL_DIR)/rdrand/src
RDRAND_MAKEFILE := $(RDRAND_LIBDIR)/Makefile
@@ -80,21 +81,25 @@ copy_data_file:
$(APPNAME): $(CPPMICROSERVICES) source/build/CMakeCache.txt urts RDRAND
$(MAKE) -C source/build
+ifeq ($(USE_HOST_CPPMICROSERVICES), 0)
$(CP) $(CPPMICROSERVICES) source/build/bin/
+endif
CMAKE_VERSION_MAJOR=$(shell cmake --version | head -n 1 | cut -d \ -f 3 | cut -d . -f 1)
CMAKE_VERSION_MINOR=$(shell cmake --version | head -n 1 | cut -d \ -f 3 | cut -d . -f 2 | xargs printf '%02d')
CMAKE_VERSION=$(CMAKE_VERSION_MAJOR)$(CMAKE_VERSION_MINOR)
CMAKE := $(HOME)/cache/bin/cmake
+ifeq ($(USE_HOST_CPPMICROSERVICES), 0)
.PHONY: CPPMICROSERVICES
$(CPPMICROSERVICES):
- mkdir -p $(CPPMICROSERVICES_DIR)/build
+ mkdir -p $(CPPMICROSERVICES_SRC_DIR)/build
ifeq ($(shell test $(CMAKE_VERSION) -lt 302 && echo 1), 1)
- $(CPPMICROSERVICES_DIR)/install_cmake.sh
- cd $(CPPMICROSERVICES_DIR)/build && $(CMAKE) -DCMAKE_COMMAND=$(CMAKE) $(CPPMICROSERVICES_CONFIG) ../ && $(MAKE) && $(MAKE) install
+ $(CPPMICROSERVICES_SRC_DIR)/install_cmake.sh
+ cd $(CPPMICROSERVICES_SRC_DIR)/build && $(CMAKE) -DCMAKE_COMMAND=$(CMAKE) $(CPPMICROSERVICES_CONFIG) ../ && $(MAKE) && $(MAKE) install
else
- cd $(CPPMICROSERVICES_DIR)/build && cmake $(CPPMICROSERVICES_CONFIG) ../ && $(MAKE) && $(MAKE) install
+ cd $(CPPMICROSERVICES_SRC_DIR)/build && cmake $(CPPMICROSERVICES_CONFIG) ../ && $(MAKE) && $(MAKE) install
+endif
endif
source/build/CMakeCache.txt: $(CPPMICROSERVICES)
@@ -124,8 +129,10 @@ $(BUILD_DIR):
.PHONY: clean
clean:
@$(RM) -r source/build
- @$(RM) -r $(CPPMICROSERVICES_DIR)/build
- @$(RM) -r $(CPPMICROSERVICES_INSTALL)
+ifeq ($(USE_HOST_CPPMICROSERVICES), 0)
+ @$(RM) -r $(CPPMICROSERVICES_SRC_DIR)/build
+ @$(RM) -r $(CPPMICROSERVICES_INSTALL_DIR)
+endif
@$(RM) -r data
ifeq ($(RDRAND_MAKEFILE), $(wildcard $(RDRAND_MAKEFILE)))
@$(MAKE) distclean -C $(RDRAND_LIBDIR)
diff --git a/psw/ae/aesm_service/source/CMakeLists.txt b/psw/ae/aesm_service/source/CMakeLists.txt
index da3e0b77..89b3e3ae 100644
--- a/psw/ae/aesm_service/source/CMakeLists.txt
+++ b/psw/ae/aesm_service/source/CMakeLists.txt
@@ -46,7 +46,7 @@ else()
endif()
# check if CppMicroServices was found
-set(CppMicroServices_DIR ../../../../external/CppMicroServices/local-install/share/cppmicroservices4/cmake)
+set(CppMicroServices_DIR ${CPPMICROSERVICES_CMAKE_DIR})
find_package(CppMicroServices NO_MODULE REQUIRED)
cmake_minimum_required(VERSION ${US_CMAKE_MINIMUM_REQUIRED_VERSION})
cmake_policy(VERSION ${US_CMAKE_MINIMUM_REQUIRED_VERSION})
--
2.49.0