From 000f491617d09d9e10276d8131c360dfe3439c8a Mon Sep 17 00:00:00 2001 From: Ricardo Pardini Date: Thu, 24 Aug 2023 20:37:32 +0200 Subject: [PATCH] kernel/memoize: allow customizing memoize's default TTL of 3600 seconds; allow customizing kernel TTL via `KERNEL_GIT_CACHE_TTL` --- lib/functions/artifacts/artifact-kernel.sh | 10 ++++++++-- lib/functions/general/memoize-cached.sh | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/functions/artifacts/artifact-kernel.sh b/lib/functions/artifacts/artifact-kernel.sh index cb8cdcce1f..31f4704d91 100644 --- a/lib/functions/artifacts/artifact-kernel.sh +++ b/lib/functions/artifacts/artifact-kernel.sh @@ -73,11 +73,17 @@ function artifact_kernel_prepare_version() { declare -A GIT_INFO_KERNEL=([GIT_SOURCE]="${KERNELSOURCE}" [GIT_REF]="${KERNELBRANCH}") + declare -i kernel_git_cache_ttl_seconds=3600 # by default + if [[ "${KERNEL_GIT_CACHE_TTL}" != "" ]]; then + kernel_git_cache_ttl_seconds="${KERNEL_GIT_CACHE_TTL}" + display_alert "Setting kernel git cache TTL to" "${kernel_git_cache_ttl_seconds}" "warn" # @TODO: info? + fi + if [[ "${KERNEL_SKIP_MAKEFILE_VERSION:-"no"}" == "yes" ]]; then display_alert "Skipping Makefile version for kernel" "due to KERNEL_SKIP_MAKEFILE_VERSION=yes" "info" - run_memoized GIT_INFO_KERNEL "git2info" memoized_git_ref_to_info + memoize_cache_ttl=$kernel_git_cache_ttl_seconds run_memoized GIT_INFO_KERNEL "git2info" memoized_git_ref_to_info else - run_memoized GIT_INFO_KERNEL "git2info" memoized_git_ref_to_info "include_makefile_body" + memoize_cache_ttl=$kernel_git_cache_ttl_seconds run_memoized GIT_INFO_KERNEL "git2info" memoized_git_ref_to_info "include_makefile_body" fi debug_dict GIT_INFO_KERNEL diff --git a/lib/functions/general/memoize-cached.sh b/lib/functions/general/memoize-cached.sh index 7378e56172..ca785b6d18 100644 --- a/lib/functions/general/memoize-cached.sh +++ b/lib/functions/general/memoize-cached.sh @@ -40,6 +40,8 @@ function run_memoized() { mkdir -p "${disk_cache_dir}" declare disk_cache_file="${disk_cache_dir}/${MEMO_DICT[MEMO_INPUT_HASH]}" + declare -i memoize_cache_ttl=${memoize_cache_ttl:-3600} # 1 hour default; can be overriden from outer scope + # Lock... exec {lock_fd}> "${disk_cache_file}.lock" || exit_with_error "failed to lock" flock "${lock_fd}" || exit_with_error "flock() failed" @@ -48,8 +50,8 @@ function run_memoized() { if [[ -f "${disk_cache_file}" ]]; then declare disk_cache_file_mtime_seconds disk_cache_file_mtime_seconds="$(stat -c %Y "${disk_cache_file}")" - # if disk_cache_file is older than 1 hour, delete it and continue. - if [[ "${disk_cache_file_mtime_seconds}" -lt "$(($(date +%s) - 3600))" ]]; then + # if disk_cache_file is older than the ttl, delete it and continue. + if [[ "${disk_cache_file_mtime_seconds}" -lt "$(($(date +%s) - memoize_cache_ttl))" ]]; then display_alert "Deleting stale cache file" "${disk_cache_file}" "debug" rm -f "${disk_cache_file}" else