소스 검색

Meta: Download cacert.pem at build time

Fabian Dellwing 2 년 전
부모
커밋
b07654c3c1
4개의 변경된 파일31개의 추가작업 그리고 1개의 파일을 삭제
  1. 23 0
      Meta/CMake/ca_certificates_data.cmake
  2. 1 0
      Meta/CMake/common_options.cmake
  3. 5 1
      Meta/Lagom/CMakeLists.txt
  4. 2 0
      Userland/Libraries/LibTLS/CMakeLists.txt

+ 23 - 0
Meta/CMake/ca_certificates_data.cmake

@@ -0,0 +1,23 @@
+include(${CMAKE_CURRENT_LIST_DIR}/utils.cmake)
+
+set(CACERT_PATH "${SERENITY_CACHE_DIR}/CACERT" CACHE PATH "Download location for cacert.pem")
+
+set(CACERT_VERSION 2023-01-10)
+set(CACERT_VERSION_FILE "${CACERT_PATH}/version.txt")
+
+set(CACERT_FILE cacert-${CACERT_VERSION}.pem)
+set(CACERT_URL https://curl.se/ca/${CACERT_FILE})
+set(CACERT_INSTALL_FILE cacert.pem)
+
+if (ENABLE_CACERT_DOWNLOAD)
+    remove_path_if_version_changed("${CACERT_VERSION}" "${CACERT_VERSION_FILE}" "${CACERT_PATH}")
+
+    download_file("${CACERT_URL}" "${CACERT_PATH}/${CACERT_FILE}")
+
+    if (SERENITYOS)
+        set(CACERT_INSTALL_PATH ${CMAKE_STAGING_PREFIX}/etc/${CACERT_INSTALL_FILE})
+    else()
+        set(CACERT_INSTALL_PATH ${CMAKE_CURRENT_BINARY_DIR}/${CACERT_INSTALL_FILE})
+    endif()
+    configure_file(${CACERT_PATH}/${CACERT_FILE} ${CACERT_INSTALL_PATH} COPYONLY)
+endif()

+ 1 - 0
Meta/CMake/common_options.cmake

@@ -18,6 +18,7 @@ serenity_option(ENABLE_TIME_ZONE_DATABASE_DOWNLOAD ON CACHE BOOL "Enable downloa
 serenity_option(ENABLE_UNICODE_DATABASE_DOWNLOAD ON CACHE BOOL "Enable download of Unicode UCD and CLDR files at build time")
 serenity_option(INCLUDE_WASM_SPEC_TESTS OFF CACHE BOOL "Download and include the WebAssembly spec testsuite")
 serenity_option(INCLUDE_FLAC_SPEC_TESTS OFF CACHE BOOL "Download and include the FLAC spec testsuite")
+serenity_option(ENABLE_CACERT_DOWNLOAD ON CACHE BOOL "Enable download of cacert.pem at build time")
 
 serenity_option(HACKSTUDIO_BUILD OFF CACHE BOOL "Automatically enabled when building from HackStudio")
 

+ 5 - 1
Meta/Lagom/CMakeLists.txt

@@ -588,7 +588,6 @@ if (BUILD_LAGOM)
             LibPDF
             LibSQL
             LibTextCodec
-            LibTLS
             LibTTF
             LibTimeZone
             LibUnicode
@@ -602,6 +601,9 @@ if (BUILD_LAGOM)
             add_serenity_subdirectory("Tests/${dir}")
         endforeach()
 
+        # LibTLS needs a special working directory to find cacert.pem
+        lagom_test(../../Tests/LibTLS/TestTLSHandshake.cpp LibTLS LIBS LibTLS LibCrypto)
+
         # LibCore
         lagom_test(../../Tests/LibCore/TestLibCoreIODevice.cpp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../Tests/LibCore)
 
@@ -717,3 +719,5 @@ if (NOT "$ENV{LAGOM_TARGET}" STREQUAL "")
         VERBATIM
     )
 endif()
+
+include(ca_certificates_data)

+ 2 - 0
Userland/Libraries/LibTLS/CMakeLists.txt

@@ -13,3 +13,5 @@ set(SOURCES
 
 serenity_lib(LibTLS tls)
 target_link_libraries(LibTLS PRIVATE LibCore LibCrypto)
+
+include(ca_certificates_data)