mirror of
https://github.com/Cisco-Talos/clamav.git
synced 2025-10-19 10:23:17 +00:00
CMake+Rust: Fix offline builds w. vendored git repos
Some builds using the tarball with the vendored Rust dependencies are failing. The onenote-rs dependency is presently tied to a git branch from github rather than using a release from crates.io. This is the differing factor though I'm unsure why it is causing the build to try to update the repo rather than just building the vendored source. This commit adds a `--offline` parameter to the build options if the vendored source is detected, in an attempt to force Cargo to use what it has and stay offline.
This commit is contained in:
parent
5fceabe5e5
commit
5cc3243136
1 changed files with 24 additions and 20 deletions
|
@ -184,28 +184,28 @@ function(cargo_vendor)
|
|||
set(oneValueArgs TARGET SOURCE_DIRECTORY BINARY_DIRECTORY)
|
||||
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if(NOT EXISTS ${ARGS_SOURCE_DIRECTORY}/.cargo/config.toml)
|
||||
# Vendor the dependencies and create .cargo/config.toml
|
||||
# Vendored dependencies will be used during the build.
|
||||
# This will allow us to package vendored dependencies in source tarballs
|
||||
# for online builds when we run `cpack --config CPackSourceConfig.cmake`
|
||||
message(STATUS "Running `cargo vendor` to collect dependencies for ${ARGS_TARGET}. This may take a while if the local crates.io index needs to be updated ...")
|
||||
make_directory(${ARGS_SOURCE_DIRECTORY}/.cargo)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E env "CARGO_TARGET_DIR=${ARGS_BINARY_DIRECTORY}" ${cargo_EXECUTABLE} vendor ".cargo/vendor"
|
||||
WORKING_DIRECTORY "${ARGS_SOURCE_DIRECTORY}"
|
||||
OUTPUT_VARIABLE CARGO_VENDOR_OUTPUT
|
||||
ERROR_VARIABLE CARGO_VENDOR_ERROR
|
||||
RESULT_VARIABLE CARGO_VENDOR_RESULT
|
||||
)
|
||||
# Vendor the dependencies and create .cargo/config.toml
|
||||
# Vendored dependencies will be used during the build.
|
||||
# This will allow us to package vendored dependencies in source tarballs
|
||||
# for online builds when we run `cpack --config CPackSourceConfig.cmake`
|
||||
message(STATUS "Running `cargo vendor` to collect dependencies for ${ARGS_TARGET}. This may take a while if the local crates.io index needs to be updated ...")
|
||||
make_directory(${CMAKE_SOURCE_DIR}/.cargo)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E env "CARGO_TARGET_DIR=${ARGS_BINARY_DIRECTORY}" ${cargo_EXECUTABLE} vendor "${CMAKE_SOURCE_DIR}/.cargo/vendor"
|
||||
WORKING_DIRECTORY "${ARGS_SOURCE_DIRECTORY}"
|
||||
OUTPUT_VARIABLE CARGO_VENDOR_OUTPUT
|
||||
ERROR_VARIABLE CARGO_VENDOR_ERROR
|
||||
RESULT_VARIABLE CARGO_VENDOR_RESULT
|
||||
)
|
||||
|
||||
if(NOT ${CARGO_VENDOR_RESULT} EQUAL 0)
|
||||
message(FATAL_ERROR "Failed!\n${CARGO_VENDOR_ERROR}")
|
||||
else()
|
||||
message("Success!")
|
||||
endif()
|
||||
if(NOT ${CARGO_VENDOR_RESULT} EQUAL 0)
|
||||
message(FATAL_ERROR "Failed!\n${CARGO_VENDOR_ERROR}")
|
||||
else()
|
||||
message("Success!")
|
||||
endif()
|
||||
|
||||
write_file(${ARGS_SOURCE_DIRECTORY}/.cargo/config.toml "
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/.cargo/config.toml)
|
||||
write_file(${CMAKE_SOURCE_DIR}/.cargo/config.toml "
|
||||
[source.crates-io]
|
||||
replace-with = \"vendored-sources\"
|
||||
|
||||
|
@ -460,6 +460,10 @@ endif()
|
|||
|
||||
set(CARGO_ARGS "build")
|
||||
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.cargo/vendor")
|
||||
list(APPEND CARGO_ARGS "--offline")
|
||||
endif()
|
||||
|
||||
if(NOT "${RUST_COMPILER_TARGET}" MATCHES "^universal-apple-darwin$")
|
||||
# Don't specify the target for macOS universal builds, we'll do that manually for each build.
|
||||
list(APPEND CARGO_ARGS "--target" ${RUST_COMPILER_TARGET})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue