Skip to content

Commit 8b07145

Browse files
committed
Merge bitcoin/bitcoin#23597: ci: Revamp SDK caches
6c7b883 ci: Always run merge_base_script first for consistency (Hennadii Stepanov) 3ad5ace ci: Revamp Android SDK cache, and update it timely (Hennadii Stepanov) e988bc7 ci: Make macOS SDK cache independent, and update it timely (Hennadii Stepanov) Pull request description: On master (681b25e) SDK (macOS and Android) are not invalidated timely. For instance, during updating macOS SDK in #21851 it is not possible to run a related CI task successfully. Another flaw is related to Android SDK -- the following commands https://github.com/bitcoin/bitcoin/blob/681b25e3cd7d084f642693152322ed9a40f33ba0/ci/test/05_before_script.sh#L25-L32 run regardless of cache state. See CI task [log](https://api.cirrus-ci.com/v1/task/5962074015662080/logs/ci.log) for details. This PR: - drops caching of `depends/sdk-sources` in favor of separated caching of `depends/SDKs/$MACOS_SDK` and `depends/SDKs/android` - establishes conditions for cache invalidation - bypass unneeded commands when a cache is populated ACKs for top commit: fanquake: ACK 6c7b883 Tree-SHA512: e5a5ebefd47fad495f08b8f821573977c1b8a906b3424396973bdf41da255446edbcbd43ea4f4f837f77ac95380f32e436eb75944f3457ec995057445b3b215e
2 parents 383d350 + 6c7b883 commit 8b07145

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

.cirrus.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ global_task_template: &GLOBAL_TASK_TEMPLATE
5151
<< : *BASE_TEMPLATE
5252
<< : *MAIN_TEMPLATE
5353

54-
depends_sdk_cache_template: &DEPENDS_SDK_CACHE_TEMPLATE
55-
depends_sdk_cache:
56-
folder: "depends/sdk-sources"
57-
5854
compute_credits_template: &CREDITS_TEMPLATE
5955
# https://cirrus-ci.org/pricing/#compute-credits
6056
# Only use credits for pull requests to the main repo
@@ -273,11 +269,15 @@ task:
273269

274270
task:
275271
name: 'macOS 10.15 [gui, no tests] [focal]'
276-
<< : *DEPENDS_SDK_CACHE_TEMPLATE
277-
<< : *GLOBAL_TASK_TEMPLATE
272+
<< : *BASE_TEMPLATE
273+
macos_sdk_cache:
274+
folder: "depends/SDKs/$MACOS_SDK"
275+
fingerprint_key: "$MACOS_SDK"
276+
<< : *MAIN_TEMPLATE
278277
container:
279278
image: ubuntu:focal
280279
env:
280+
MACOS_SDK: "Xcode-12.1-12A7403-extracted-SDK-with-libcxx-headers"
281281
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
282282
FILE_ENV: "./ci/test/00_setup_env_mac.sh"
283283

@@ -297,8 +297,10 @@ task:
297297

298298
task:
299299
name: 'ARM64 Android APK [focal]'
300-
<< : *DEPENDS_SDK_CACHE_TEMPLATE
301300
<< : *BASE_TEMPLATE
301+
android_sdk_cache:
302+
folder: "depends/SDKs/android"
303+
fingerprint_key: "ANDROID_API_LEVEL=28 ANDROID_BUILD_TOOLS_VERSION=28.0.3 ANDROID_NDK_VERSION=22.1.7171670"
302304
depends_sources_cache:
303305
folder: "depends/sources"
304306
fingerprint_script: git rev-list -1 HEAD ./depends

ci/test/05_before_script.sh

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,22 @@ fi
1515

1616
DOCKER_EXEC mkdir -p "${DEPENDS_DIR}/SDKs" "${DEPENDS_DIR}/sdk-sources"
1717

18-
OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers.tar.gz"
19-
OSX_SDK_PATH="${DEPENDS_DIR}/sdk-sources/${OSX_SDK_BASENAME}"
18+
OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers"
2019

21-
if [ -n "$XCODE_VERSION" ] && [ ! -f "$OSX_SDK_PATH" ]; then
22-
DOCKER_EXEC curl --location --fail "${SDK_URL}/${OSX_SDK_BASENAME}" -o "$OSX_SDK_PATH"
20+
if [ -n "$XCODE_VERSION" ] && [ ! -d "${DEPENDS_DIR}/SDKs/${OSX_SDK_BASENAME}" ]; then
21+
OSX_SDK_FILENAME="${OSX_SDK_BASENAME}.tar.gz"
22+
OSX_SDK_PATH="${DEPENDS_DIR}/sdk-sources/${OSX_SDK_FILENAME}"
23+
if [ ! -f "$OSX_SDK_PATH" ]; then
24+
DOCKER_EXEC curl --location --fail "${SDK_URL}/${OSX_SDK_FILENAME}" -o "$OSX_SDK_PATH"
25+
fi
26+
DOCKER_EXEC tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH"
2327
fi
2428

25-
if [ -n "$ANDROID_TOOLS_URL" ]; then
26-
ANDROID_TOOLS_PATH=$DEPENDS_DIR/sdk-sources/android-tools.zip
27-
28-
DOCKER_EXEC curl --location --fail "${ANDROID_TOOLS_URL}" -o "$ANDROID_TOOLS_PATH"
29+
if [ -n "$ANDROID_HOME" ] && [ ! -d "$ANDROID_HOME" ]; then
30+
ANDROID_TOOLS_PATH=${DEPENDS_DIR}/sdk-sources/android-tools.zip
31+
if [ ! -f "$ANDROID_TOOLS_PATH" ]; then
32+
DOCKER_EXEC curl --location --fail "${ANDROID_TOOLS_URL}" -o "$ANDROID_TOOLS_PATH"
33+
fi
2934
DOCKER_EXEC mkdir -p "${ANDROID_HOME}/cmdline-tools"
3035
DOCKER_EXEC unzip -o "$ANDROID_TOOLS_PATH" -d "${ANDROID_HOME}/cmdline-tools"
3136
DOCKER_EXEC "yes | ${ANDROID_HOME}/cmdline-tools/tools/bin/sdkmanager --install \"build-tools;${ANDROID_BUILD_TOOLS_VERSION}\" \"platform-tools\" \"platforms;android-${ANDROID_API_LEVEL}\" \"ndk;${ANDROID_NDK_VERSION}\""
@@ -38,9 +43,6 @@ if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then
3843
DOCKER_EXEC "contrib/install_db4.sh \$(pwd) --enable-umrw CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
3944
fi
4045

41-
if [ -n "$XCODE_VERSION" ] && [ -f "$OSX_SDK_PATH" ]; then
42-
DOCKER_EXEC tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH"
43-
fi
4446
if [[ $HOST = *-mingw32 ]]; then
4547
DOCKER_EXEC update-alternatives --set "${HOST}-g++" \$\(which "${HOST}-g++-posix"\)
4648
fi

0 commit comments

Comments
 (0)