Merge pull request #1331 from ychin/split-ci-macos10.13-10.9-legacy

Set up CI to do split legacy build for macOS 10.9-10.12
This commit is contained in:
Yee Cheng Chin
2022-11-02 15:15:55 -07:00
committed by GitHub
+47 -14
View File
@@ -12,18 +12,22 @@ concurrency:
cancel-in-progress: true
env:
MACOSX_DEPLOYMENT_TARGET: '10.9'
MACOSX_DEPLOYMENT_TARGET: '10.13'
MACOSX_DEPLOYMENT_TARGET_LEGACY: '10.9'
MACVIM_ARCHS: "x86_64 arm64" # Universal app for Intel/Apple Silicon
MACVIM_ARCHS_LEGACY: "x86_64" # Legacy builds only need to build x86-64 because Apple Silicon can't run on these old OSes
CC: clang
VERSIONER_PERL_VERSION: '5.18'
VERSIONER_PERL_VERSION: '5.30'
VERSIONER_PYTHON_VERSION: '2.7'
vi_cv_path_python: /usr/local/bin/python
vi_cv_path_python3: /usr/local/bin/python3
vi_cv_path_plain_lua: /usr/local/bin/lua
vi_cv_path_ruby: /usr/local/opt/ruby/bin/ruby
vi_cv_dll_name_perl: /System/Library/Perl/5.18/darwin-thread-multi-2level/CORE/libperl.dylib
vi_cv_dll_name_python: /usr/local/Library/Frameworks/Python.framework/Versions/2.7/Python
vi_cv_dll_name_perl: /System/Library/Perl/5.30/darwin-thread-multi-2level/CORE/libperl.dylib
vi_cv_dll_name_python: /usr/local/Frameworks/Python.framework/Versions/2.7/Python
vi_cv_dll_name_python3: /usr/local/Frameworks/Python.framework/Versions/3.10/Python # Make sure to keep src/MacVim/vimrc synced with the Python version here for the Python DLL detection logic.
vi_cv_dll_name_python3_arm64: /opt/homebrew/Frameworks/Python.framework/Versions/3.10/Python
vi_cv_dll_name_ruby: /usr/local/opt/ruby/lib/libruby.dylib
@@ -40,16 +44,26 @@ jobs:
# Builds and test MacVim
build-and-test:
# Test on macOS 11.x / 12.x, and also older version of Xcode for compatibility testing.
# Test on macOS 11.x / 12.x, and also older versions of Xcode for compatibility testing.
strategy:
fail-fast: false
matrix:
include:
- os: macos-11
publish: true
# Oldest version of Xcode supported on GitHub Action to test source code backwards compatibility
- os: macos-11
xcode: '11.7'
# Older version of Xcode, and used to publish legacy builds (for macOS 10.9 - 10.12)
- os: macos-12
xcode: '14.0' # last version of Xcode that uses the macOS 12 SDK, which still supports deploying to macOS 10.9
publish: true
legacy: true
publish_postfix: '_10.9'
# Most up to date OS and Xcode. Used to publish release for the main build.
- os: macos-12
xcode: '14.1'
publish: true
runs-on: ${{ matrix.os }}
@@ -57,6 +71,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Set up legacy build
if: matrix.legacy
run: |
echo "MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET_LEGACY" >> $GITHUB_ENV
echo "MACVIM_ARCHS=$MACVIM_ARCHS_LEGACY" >> $GITHUB_ENV
# Set up, install, and cache gettext library for localization.
#
# Instead of using the default binary installed by Homebrew, need to build our own because gettext is statically
@@ -93,9 +113,16 @@ jobs:
env:
HOMEBREW_NO_AUTO_UPDATE: 1
run: |
brew install python
brew install python3
brew install ruby
brew install lua
# CI sometimes have custom installed Python instead of using Homebrew. Forcefully re-
# link Python, and then check that we are using the Homebrew version. This avoids us
# using a mystery Python installation that we don't control.
brew unlink python3 && brew link --overwrite python3
readlink -f $vi_cv_path_python3 | grep "^$(brew --cellar python3)"
if [[ -d /usr/local/Cellar/perl ]]; then
# We just use system perl to reduce dependencies
brew unlink perl
@@ -129,7 +156,7 @@ jobs:
--enable-rubyinterp=dynamic
--enable-luainterp=dynamic
--with-lua-prefix=/usr/local
--with-macarchs="x86_64 arm64"
--with-macarchs="$MACVIM_ARCHS"
)
else
CONFOPT+=(
@@ -215,8 +242,8 @@ jobs:
# Smoketest scripting languages
macvim_excmd -c 'lua print("Test")'
macvim_excmd -c 'perl VIM::Msg("Test")'
macvim_excmd -c 'py import sys; print("Test")'
macvim_excmd -c 'py3 import sys; print("Test")'
macvim_excmd -c 'py print "Test"'
macvim_excmd -c 'py3 print("Test")'
macvim_excmd -c 'ruby puts("Test")'
# Check that localized messages work by printing ':version' and checking against localized word
@@ -231,8 +258,10 @@ jobs:
# Make sure we are building universal x86_64 / arm64 builds and didn't accidentally create a thin app.
check_arch() {
local archs=($(lipo -archs "$1"))
if [[ ${archs[@]} != "x86_64 arm64" ]]; then
if [[ ${archs[@]} != "$MACVIM_ARCHS" ]]; then
echo "Wrong arch(s) in $1: ${archs[@]}"; false
else
lipo -info "$1"
fi
}
check_arch "${VIM_BIN}"
@@ -258,9 +287,13 @@ jobs:
# CI environment.
make -C src macvim-dmg CREATEDMG_FLAGS=--skip-jenkins
if ${{ matrix.publish_postfix != '' }}; then
mv src/MacVim/build/Release/MacVim.dmg src/MacVim/build/Release/MacVim${{ matrix.publish_postfix }}.dmg
fi
- name: Upload MacVim image
if: startsWith(github.ref, 'refs/tags/') && matrix.publish
uses: actions/upload-artifact@v3
with:
name: MacVim.dmg
path: src/MacVim/build/Release/MacVim.dmg
name: MacVim${{ matrix.publish_postfix }}.dmg
path: src/MacVim/build/Release/MacVim${{ matrix.publish_postfix }}.dmg