Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: skip vcpkg updates based on the requested revision + gracefully warn if doxygen is not installed #247

Merged
merged 3 commits into from
Feb 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ jobs:
cppcheck: true
clangtidy: true
task: true
doxygen: true
doxygen: ${{ !contains(matrix.os, 'macos-11') }}

- name: Test
if: ${{ !cancelled() }}
Expand Down
6 changes: 5 additions & 1 deletion src/Doxygen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,11 @@ function(enable_doxygen DOXYGEN_THEME)
endif()

# find doxygen and dot if available
find_package(Doxygen REQUIRED OPTIONAL_COMPONENTS dot)
find_package(Doxygen OPTIONAL_COMPONENTS dot)
if (NOT Doxygen_FOUND)
message(WARNING "Doxygen not found, install doxygen and try again. Documentation will not be generated.")
return()
endif()

# add doxygen-docs target
message(STATUS "Adding `doxygen-docs` target that builds the documentation.")
Expand Down
52 changes: 34 additions & 18 deletions src/Vcpkg.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -59,28 +59,44 @@ macro(_bootstrap_vcpkg)
endmacro()

macro(_is_vcpkg_outdated)
if("${_vcpkg_args_VCPKG_UPDATE_THRESHOLD}" STREQUAL "")
set(_vcpkg_args_VCPKG_UPDATE_THRESHOLD 3600)
endif()
# skip the update if the requested revision is the same as the current revision
git_revision(_REVISION REPOSITORY_PATH "${_vcpkg_args_VCPKG_DIR}")
if(NOT "${_vcpkg_args_VCPKG_REV}" STREQUAL "" AND "${_REVISION}" STREQUAL
"${_vcpkg_args_VCPKG_REV}"
)
message(STATUS "Skipping vcpkg update as it's already at ${_REVISION}")
set(_vcpkg_args_ENABLE_VCPKG_UPDATE OFF)
elseif(NOT "${_vcpkg_args_VCPKG_REV}" STREQUAL "" AND NOT "${_REVISION}" STREQUAL
"${_vcpkg_args_VCPKG_REV}"
)
# Requested revision is different from the current revision, so update
set(_vcpkg_args_ENABLE_VCPKG_UPDATE ON)
else()
# Requested revision is not specified, so update depending on the timestamp
# Check if the vcpkg registry is updated using the timestamp file that project_option generates
if("${_vcpkg_args_VCPKG_UPDATE_THRESHOLD}" STREQUAL "")
set(_vcpkg_args_VCPKG_UPDATE_THRESHOLD 3600)
endif()

if(${_vcpkg_args_ENABLE_VCPKG_UPDATE})
set(_time_stamp_file "${VCPKG_PARENT_DIR}/.vcpkg_last_update")

if(EXISTS "${_time_stamp_file}")
string(TIMESTAMP _current_time "%s")
file(TIMESTAMP "${_time_stamp_file}" _vcpkg_last_update "%s")
# if the last update was more than VCPKG_UPDATE_THRESHOLD
math(EXPR time_diff "${_current_time} - ${_vcpkg_last_update}")
if(${time_diff} GREATER ${_vcpkg_args_VCPKG_UPDATE_THRESHOLD})
if(${_vcpkg_args_ENABLE_VCPKG_UPDATE})
set(_time_stamp_file "${VCPKG_PARENT_DIR}/.vcpkg_last_update")

if(EXISTS "${_time_stamp_file}")
string(TIMESTAMP _current_time "%s")
file(TIMESTAMP "${_time_stamp_file}" _vcpkg_last_update "%s")
# if the last update was more than VCPKG_UPDATE_THRESHOLD
math(EXPR time_diff "${_current_time} - ${_vcpkg_last_update}")
if(${time_diff} GREATER ${_vcpkg_args_VCPKG_UPDATE_THRESHOLD})
set(_vcpkg_args_ENABLE_VCPKG_UPDATE ON)
file(TOUCH "${_time_stamp_file}")
else()
message(STATUS "vcpkg updated recently. Skipping update.")
set(_vcpkg_args_ENABLE_VCPKG_UPDATE OFF)
endif()
else()
set(_vcpkg_args_ENABLE_VCPKG_UPDATE ON)
file(TOUCH "${_time_stamp_file}")
else()
message(STATUS "vcpkg updated recently. Skipping update.")
set(_vcpkg_args_ENABLE_VCPKG_UPDATE OFF)
endif()
else()
set(_vcpkg_args_ENABLE_VCPKG_UPDATE ON)
file(TOUCH "${_time_stamp_file}")
endif()
endif()
endmacro()
Expand Down