ci: make p4 setup on macOS more robust

When setting up Perforce on macOS we put both `p4` and `p4d` into "$HOME/bin". On GitHub CI this directory is indeed contained in the PATH environment variable and thus there is no need for additional setup than to put the binaries there. But GitLab CI does not do this, and thus our Perforce-based tests would be skipped there even though we download the binaries. Refactor the setup code to become more robust by downloading binaries into a separate directory which we then manually append to our PATH. This matches what we do on Linux-based jobs. Note that it may seem like we already did append "$HOME/bin" to PATH because we're actually removing the lines that adapt PATH. But we only ever adapted the PATH variable in "ci/install-dependencies.sh", and didn't adapt it when running "ci/run-build-and-test.sh". Consequently, the required binaries wouldn't be found during the test run unless the CI platform already had the "$HOME/bin" in PATH right from the start. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Jan 18, 2024 at 11:22 UTC c4b84b137ae7f18ac0fe30e2566725567b90ecca
2 files changed +7 -6
ci/install-dependencies.sh
+4 -6
@@ -37,15 +37,13 @@ macos-*)
37 test -z "$BREW_INSTALL_PACKAGES" ||
38 brew install $BREW_INSTALL_PACKAGES
39 brew link --force gettext
40 - mkdir -p $HOME/bin
41 - (
42 - cd $HOME/bin
40 +
41 + mkdir -p "$P4_PATH"
42 + pushd "$P4_PATH"
43 wget -q "$P4WHENCE/bin.macosx1015x86_64/helix-core-server.tgz" &&
44 tar -xf helix-core-server.tgz &&
45 sudo xattr -d com.apple.quarantine p4 p4d 2>/dev/null || true
46 - )
47 - PATH="$PATH:${HOME}/bin"
48 - export PATH
46 + popd
47
48 if test -n "$CC_PACKAGE"
49 then
ci/lib.sh
+3
@@ -344,6 +344,9 @@ macos-*)
344 then
345 MAKEFLAGS="$MAKEFLAGS APPLE_COMMON_CRYPTO_SHA1=Yes"
346 fi
347 +
348 + P4_PATH="$HOME/custom/p4"
349 + export PATH="$P4_PATH:$PATH"
350 ;;
351 esac
352