Skip to content

Commit

Permalink
Merge bitcoin#28273: ci: Fix macOS-cross SDK rsync
Browse files Browse the repository at this point in the history
fa6e5d3 ci: Avoid error on macOS native (MarcoFalke)
fa193f5 ci: Fix macOS-cross SDK rsync (MarcoFalke)

Pull request description:

  This should fix the macOS-cross build on Cirrus CI containers.

  Locally this was already working, because the SDK was cached in
  `/ci_container_base/` in the image, which is also the folder used for a
  later CI run.

  However, on Cirrus CI, when using an image *and* a custom `BASE_ROOT_DIR`,
  the SDK will not be found in `/ci_base_install/`, nor in `BASE_ROOT_DIR`.

  Fix this by normalizing *all* folders to `/ci_container_base/`.

ACKs for top commit:
  hebasto:
    ACK fa6e5d3

Tree-SHA512: 8312f7e72c3638caa6804e39206d3563ba1703204d53ce63de22e0a16a71e1e143ec00fac6b43ebfc0653c7b74160472c04e95e2d694c8c0965e7dc39e627d39
  • Loading branch information
fanquake authored and sidhujag committed Aug 17, 2023
1 parent 11f6aa7 commit 310151b
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 12 deletions.
4 changes: 2 additions & 2 deletions .cirrus.yml
Expand Up @@ -64,8 +64,8 @@ container_depends_template: &CONTAINER_DEPENDS_TEMPLATE
cpu: 2
memory: 8G # Set to 8GB to avoid OOM. https://cirrus-ci.org/guide/linux/#linux-containers
dockerfile: ci/test_imagefile # https://cirrus-ci.org/guide/docker-builder-vm/#dockerfile-as-a-ci-environment
depends_built_cache:
folder: "depends/built"
base_depends_built_cache:
folder: "/ci_container_base/depends/built"
fingerprint_script: echo $CIRRUS_TASK_NAME $(git rev-parse HEAD:depends)

global_task_template: &GLOBAL_TASK_TEMPLATE
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Expand Up @@ -34,6 +34,7 @@ jobs:
CI_USE_APT_INSTALL: 'no'
PACKAGE_MANAGER_INSTALL: 'echo' # Nothing to do
FILE_ENV: './ci/test/00_setup_env_mac_native.sh'
BASE_ROOT_DIR: ${{ github.workspace }}

steps:
- name: Checkout
Expand Down
10 changes: 3 additions & 7 deletions ci/test/00_setup_env.sh
Expand Up @@ -13,13 +13,9 @@ set -ex
BASE_READ_ONLY_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../../ >/dev/null 2>&1 && pwd )
export BASE_READ_ONLY_DIR
# The destination root dir inside the container.
if [ -z "${DANGER_RUN_CI_ON_HOST}" ] ; then
# This folder only exists on the ci guest and will be a copy of BASE_READ_ONLY_DIR
export BASE_ROOT_DIR="/ci_container_base"
else
# This folder is equal to BASE_READ_ONLY_DIR and is read-write
export BASE_ROOT_DIR="${BASE_READ_ONLY_DIR}"
fi
# This folder will also hold any SDKs.
# This folder only exists on the ci guest and will be a copy of BASE_READ_ONLY_DIR
export BASE_ROOT_DIR="${BASE_ROOT_DIR:-/ci_container_base}"
# The depends dir.
# This folder exists only on the ci guest, and on the ci host as a volume.
export DEPENDS_DIR=${DEPENDS_DIR:-$BASE_ROOT_DIR/depends}
Expand Down
3 changes: 2 additions & 1 deletion ci/test/04_install.sh
Expand Up @@ -58,7 +58,8 @@ CI_EXEC () {
}
export -f CI_EXEC

CI_EXEC rsync --archive --stats --human-readable /ci_base_install/ "${BASE_ROOT_DIR}" || echo "/ci_base_install/ missing"
# Normalize all folders to BASE_ROOT_DIR
CI_EXEC rsync --archive --stats --human-readable "${BASE_READ_ONLY_DIR}/" "${BASE_ROOT_DIR}" || echo "Nothing to copy from ${BASE_READ_ONLY_DIR}/"
CI_EXEC "${BASE_ROOT_DIR}/ci/test/01_base_install.sh"
CI_EXEC rsync --archive --stats --human-readable /ro_base/ "${BASE_ROOT_DIR}" || echo "Nothing to copy from ro_base"
# Fixes permission issues when there is a container UID/GID mismatch with the owner
Expand Down
4 changes: 2 additions & 2 deletions ci/test_imagefile
Expand Up @@ -11,6 +11,6 @@ ARG FILE_ENV
ENV FILE_ENV=${FILE_ENV}

COPY ./ci/retry/retry /usr/bin/retry
COPY ./ci/test/00_setup_env.sh ./${FILE_ENV} ./ci/test/01_base_install.sh /ci_base_install/ci/test/
COPY ./ci/test/00_setup_env.sh ./${FILE_ENV} ./ci/test/01_base_install.sh /ci_container_base/ci/test/

RUN ["bash", "-c", "cd /ci_base_install/ && set -o errexit && source ./ci/test/00_setup_env.sh && ./ci/test/01_base_install.sh"]
RUN ["bash", "-c", "cd /ci_container_base/ && set -o errexit && source ./ci/test/00_setup_env.sh && ./ci/test/01_base_install.sh"]

0 comments on commit 310151b

Please sign in to comment.