diff options
author | Erik Kundiman <erik@megapahit.org> | 2024-08-08 17:23:26 +0800 |
---|---|---|
committer | Erik Kundiman <erik@megapahit.org> | 2024-08-08 17:23:26 +0800 |
commit | 98f2f92469351447e69f9368d42a7e6f6c3a4da0 (patch) | |
tree | 01dab6f1e7583672f22b66b417e57fb88d60650a | |
parent | 0c5ddabe813d4dd88a64bea6453df4d8fee2107e (diff) |
Alternative to Autobuild-based use_prebuilt_binary
It still parses autobuild.xml, but using `xmllint --xpath`.
It searches for the "common" version of the package first, if not
found then it searches for the platform specific version.
The URL parsed is then fed to cURL, determining our own output
file name (since I couldn't find a way to extract remote file name
easily using cURL) assuming the ones we need all have tar.zst
extension now. It downloads to /tmp and finally extracts to packages.
-rw-r--r-- | indra/cmake/Prebuilt.cmake | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index b0acae279b..2078bf29ff 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -40,6 +40,37 @@ macro (use_prebuilt_binary _binary) --install-dir=${AUTOBUILD_INSTALL_DIR} ${_binary} ") endif(DEBUG_PREBUILT) + if(USESYSTEMLIBS) + execute_process(COMMAND xmllint + --xpath + "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/.. + OUTPUT_VARIABLE package_url + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if ("${package_url}" STREQUAL "") + string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name) + execute_process(COMMAND xmllint + --xpath + "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}64')]/text()" autobuild.xml + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/.. + OUTPUT_VARIABLE package_url + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif ("${package_url}" STREQUAL "") + execute_process(COMMAND curl + -L + ${package_url} + -o ${_binary}.tar.zst + WORKING_DIRECTORY /tmp + ) + execute_process(COMMAND tar + xf + /tmp/${_binary}.tar.zst + WORKING_DIRECTORY ${AUTOBUILD_INSTALL_DIR} + RESULT_VARIABLE ${_binary}_installed + ) + else(USESYSTEMLIBS) execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" install --install-dir=${AUTOBUILD_INSTALL_DIR} @@ -47,6 +78,7 @@ macro (use_prebuilt_binary _binary) WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE ${_binary}_installed ) + endif(USESYSTEMLIBS) file(WRITE ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${${_binary}_installed}") endif(${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) |