Skip to content

Commit 04ce1fe

Browse files
kwvgUdjinM6
andcommitted
ci: deduplicate macOS SDK setup logic
Co-authored-by: UdjinM6 <[email protected]>
1 parent 8dd0db7 commit 04ce1fe

File tree

5 files changed

+41
-46
lines changed

5 files changed

+41
-46
lines changed

.gitlab-ci.yml

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,11 @@ builder-image:
4040
needs:
4141
- builder-image
4242
image: $CI_REGISTRY_IMAGE:builder-$CI_COMMIT_REF_SLUG
43-
variables:
44-
SDK_URL: https://bitcoincore.org/depends-sources/sdks
45-
XCODE_VERSION: "15.0"
46-
XCODE_BUILD_ID: 15A240d
4743
before_script:
48-
- echo HOST=$HOST
4944
- |
50-
if [ "$HOST" = "x86_64-apple-darwin" ]; then
51-
mkdir -p depends/SDKs
52-
mkdir -p depends/sdk-sources
53-
OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers.tar.gz"
54-
OSX_SDK_PATH="depends/sdk-sources/${OSX_SDK_BASENAME}"
55-
if [ ! -f "$OSX_SDK_PATH" ]; then
56-
echo "Downloading MacOS SDK"
57-
curl --location --fail "${SDK_URL}/${OSX_SDK_BASENAME}" -o "$OSX_SDK_PATH"
58-
fi
59-
if [ -f "$OSX_SDK_PATH" ]; then
60-
echo "Extracting MacOS SDK"
61-
tar -C depends/SDKs -xf "$OSX_SDK_PATH"
62-
fi
45+
echo HOST=${HOST}
46+
if [[ "${HOST}" == "x86_64-apple-darwin" ]]; then
47+
./contrib/containers/guix/scripts/setup-sdk
6348
fi
6449
script:
6550
- make -j$(nproc) -C depends HOST=$HOST $DEP_OPTS

ci/dash/build_depends.sh

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,8 @@ mkdir -p $CACHE_DIR/sdk-sources
2020
ln -s $CACHE_DIR/depends ${DEPENDS_DIR}/built
2121
ln -s $CACHE_DIR/sdk-sources ${DEPENDS_DIR}/sdk-sources
2222

23-
mkdir -p ${DEPENDS_DIR}/SDKs
24-
25-
if [ -n "$XCODE_VERSION" ]; then
26-
OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers.tar.gz"
27-
OSX_SDK_PATH="${DEPENDS_DIR}/sdk-sources/${OSX_SDK_BASENAME}"
28-
if [ ! -f "$OSX_SDK_PATH" ]; then
29-
curl --location --fail "${SDK_URL}/${OSX_SDK_BASENAME}" -o "$OSX_SDK_PATH"
30-
fi
31-
if [ -f "$OSX_SDK_PATH" ]; then
32-
tar -C ${DEPENDS_DIR}/SDKs -xf "$OSX_SDK_PATH"
33-
fi
23+
if [[ "${HOST}" == "x86_64-apple-darwin" ]]; then
24+
./contrib/containers/guix/scripts/setup-sdk
3425
fi
3526

3627
make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS

contrib/containers/guix/Dockerfile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,19 @@ RUN usermod -aG sudo ${USERNAME} && \
7777
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
7878

7979
# Copy required files to container
80-
COPY --from=docker_root ./motd.txt /etc/motd
81-
COPY --from=docker_root ./scripts/entrypoint /usr/local/bin/entrypoint
82-
COPY --from=docker_root ./scripts/guix-check /usr/local/bin/guix-check
83-
COPY --from=docker_root ./scripts/guix-start /usr/local/bin/guix-start
80+
COPY --from=docker_root ./motd.txt /etc/motd
81+
COPY --from=docker_root ./scripts/entrypoint /usr/local/bin/entrypoint
82+
COPY --from=docker_root ./scripts/guix-check /usr/local/bin/guix-check
83+
COPY --from=docker_root ./scripts/guix-start /usr/local/bin/guix-start
84+
COPY --from=docker_root ./scripts/setup-sdk /usr/local/bin/setup-sdk
8485

8586
# Create directories for mounting to save/restore cache and grant necessary permissions
8687
RUN mkdir -p \
8788
/home/${USERNAME}/.cache \
88-
/src/dash/depends/{built,sources,work} && \
89+
/src/dash/depends/{built,sources,work}; \
8990
chown -R ${USER_ID}:${GROUP_ID} \
9091
/home/${USERNAME}/.cache \
91-
/src
92+
/src;
9293

9394
WORKDIR "/src/dash"
9495

contrib/containers/guix/scripts/guix-start

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,10 @@ if [[ ! -d "${WORKSPACE_PATH}" || ! "${WORKSPACE_PATH}" = /* || ! -f "${WORKSPAC
99
exit 1
1010
fi
1111

12-
XCODE_VERSION="15.0"
13-
XCODE_RELEASE="15A240d"
14-
XCODE_ARCHIVE="Xcode-${XCODE_VERSION}-${XCODE_RELEASE}-extracted-SDK-with-libcxx-headers"
15-
XCODE_SOURCE="${XCODE_SOURCE:-https://bitcoincore.org/depends-sources/sdks}"
16-
1712
export SDK_PATH="${SDK_PATH:-${WORKSPACE_PATH}/depends/SDKs}"
13+
export SDK_SRCS="${SDK_PATH:-${WORKSPACE_PATH}/depends/sdk-sources}"
1814

19-
# Check if macOS SDK is present, if not, download it
20-
if [[ ! -d "${SDK_PATH}/${XCODE_ARCHIVE}" ]]; then
21-
echo "Preparing macOS SDK..."
22-
mkdir -p "${SDK_PATH}"
23-
curl -L "${XCODE_SOURCE}/${XCODE_ARCHIVE}.tar.gz" | tar -xz -C "${SDK_PATH}"
24-
fi
15+
./contrib/containers/guix/scripts/setup-sdk
2516

2617
# Add safe.directory option only when WORKSPACE_PATH was specified via cmd-line arguments (happens in CI)
2718
if [[ -n "${1}" ]]; then
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env bash
2+
# Copyright (c) 2024 The Dash Core developers
3+
# Distributed under the MIT software license, see the accompanying
4+
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
5+
6+
export LC_ALL=C.UTF-8
7+
8+
set -eo pipefail
9+
10+
SDK_URL="${SDK_URL:-https://bitcoincore.org/depends-sources/sdks}"
11+
SDK_PATH="${SDK_PATH:-depends/SDKs}"
12+
SDK_SRCS="${SDK_SOURCES:-depends/sdk-sources}"
13+
XCODE_VERSION="${XCODE_VERSION:-15.0}"
14+
XCODE_RELEASE="${XCODE_RELEASE:-15A240d}"
15+
XCODE_ARCHIVE="Xcode-${XCODE_VERSION}-${XCODE_RELEASE}-extracted-SDK-with-libcxx-headers"
16+
XCODE_AR_PATH="${SDK_SRCS}/${XCODE_ARCHIVE}.tar.gz"
17+
18+
if [ ! -d "${SDK_PATH}/${XCODE_ARCHIVE}" ]; then
19+
if [ ! -f "${XCODE_AR_PATH}" ]; then
20+
echo "Downloading macOS SDK..."
21+
mkdir -p "${SDK_SRCS}"
22+
curl --location --fail "${SDK_URL}/${XCODE_ARCHIVE}.tar.gz" -o "${XCODE_AR_PATH}"
23+
fi
24+
echo "Extracting macOS SDK..."
25+
mkdir -p "${SDK_PATH}"
26+
tar -C "${SDK_PATH}" -xf "${XCODE_AR_PATH}"
27+
fi

0 commit comments

Comments
 (0)