lpeg: switch to cmake for building (#1934) #2824
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: macos | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: [push, pull_request] | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: ['arm64', 'x86_64'] | |
runs-on: ${{ matrix.platform == 'arm64' && 'macos-14' || 'macos-13' }} | |
env: | |
# Bump number to reset all caches. | |
CACHE_EPOCH: '1' | |
CLICOLOR_FORCE: '1' | |
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.platform == 'arm64' && '11.0' || '10.15' }} | |
MAKEFLAGS: 'OUTPUT_DIR=build' | |
steps: | |
# Install dependencies. {{{ | |
- name: XCode version | |
run: | | |
# NOTE: don't forget to bump `CACHE_EPOCH` | |
# above when changing the XCode version. | |
sudo xcode-select -s /Applications/Xcode_${{ matrix.platform == 'arm64' && '15.4' || 15.2 }}.app | |
xcodebuild -version | |
xcode-select -p | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Install dependencies | |
run: | | |
set -x | |
python3 -m pip install --disable-pip-version-check meson ruamel.yaml | |
wget -O ninjatracing.zip https://github.com/nico/ninjatracing/archive/a669e3644cf22b29cbece31dbed2cfbf34e5f48e.zip | |
unzip -j ninjatracing.zip '*/ninjatracing' | |
install -m755 ninjatracing /usr/local/bin/ | |
rm ninjatracing* | |
# Install brew packages. | |
packages=( | |
autoconf | |
automake | |
binutils | |
cmake | |
coreutils | |
findutils | |
jq | |
libtool | |
make | |
nasm | |
ninja | |
pkg-config | |
util-linux | |
) | |
# Don't auto-update. | |
export HOMEBREW_NO_AUTO_UPDATE=1 | |
# Don't upgrade already installed formulas. | |
export HOMEBREW_NO_INSTALL_UPGRADE=1 | |
# Remove some installed packages to prevent brew | |
# from attempting (and failing) to upgrade them. | |
brew uninstall gradle maven | |
brew install --formula --quiet "${packages[@]}" | |
- name: Update PATH | |
run: > | |
printf '%s\n' | |
"$(brew --prefix)/opt/findutils/libexec/gnubin" | |
"$(brew --prefix)/opt/make/libexec/gnubin" | |
"$(brew --prefix)/opt/util-linux/bin" | |
| tee "${GITHUB_PATH}" | |
# }}} | |
# Checkout / fetch. {{{ | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
clean: false | |
fetch-depth: 0 | |
filter: tree:0 | |
show-progress: false | |
- name: Fetch | |
run: make fetchthirdparty | |
# }}} | |
# Restore / setup caches. {{{ | |
- name: Generate cache key | |
run: make TARGET= cache-key | |
- name: Restore build directory | |
id: build-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: build | |
key: ${{ env.CACHE_EPOCH }}-${{ runner.os }}-${{ runner.arch }}-build-${{ hashFiles('cache-key') }} | |
- name: Restore build cache | |
id: ccache-restore | |
if: steps.build-restore.outputs.cache-hit != 'true' | |
uses: actions/cache/restore@v4 | |
with: | |
path: /Users/runner/Library/Caches/ccache | |
key: ${{ env.CACHE_EPOCH }}-${{ runner.os }}-${{ runner.arch }}-ccache-${{ hashFiles('cache-key') }} | |
restore-keys: ${{ env.CACHE_EPOCH }}-${{ runner.os }}-${{ runner.arch }}-ccache- | |
- name: Install ccache | |
if: steps.build-restore.outputs.cache-hit != 'true' | |
run: | | |
wget --progress=dot:mega https://github.com/ccache/ccache/releases/download/v4.9.1/ccache-4.9.1-darwin.tar.gz | |
tar xf ccache-4.9.1-darwin.tar.gz | |
printf '%s\n' "$PWD/ccache-4.9.1-darwin" >>"${GITHUB_PATH}" | |
- name: Setup build cache | |
if: steps.build-restore.outputs.cache-hit != 'true' | |
run: | | |
set -x | |
which ccache | |
ccache --version | |
ccache --zero-stats | |
ccache --max-size=256M | |
ccache --show-config | |
# }}} | |
# Build. {{{ | |
- name: Build | |
id: build | |
if: steps.build-restore.outputs.cache-hit != 'true' | |
run: make | |
- name: Dump build timings | |
if: contains('failure success', steps.build.conclusion) && !cancelled() | |
run: make buildstats | |
# }}} | |
# Clean / save caches. {{{ | |
- name: Clean caches | |
if: contains('failure success', steps.build.conclusion) && !cancelled() | |
run: | | |
set -x | |
# Trim the build directory. | |
rm -rf build/{cmake,staging,thirdparty} | |
ccache --cleanup >/dev/null | |
ccache --show-stats --verbose | |
- name: Save build cache | |
uses: actions/cache/save@v4 | |
if: steps.build-restore.outputs.cache-hit != 'true' && steps.ccache-restore.outputs.cache-hit != 'true' | |
with: | |
path: /Users/runner/Library/Caches/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
- name: Save build directory | |
uses: actions/cache/save@v4 | |
if: steps.build-restore.outputs.cache-hit != 'true' | |
with: | |
path: build | |
key: ${{ steps.build-restore.outputs.cache-primary-key }} | |
# }}} | |
# Dump & check binaries. {{{ | |
- name: Dump binaries runtime path & dependencies | |
run: make bininfo | |
- name: Checking binaries for missing dependencies | |
run: make bincheck | |
# }}} | |
# vim: foldmethod=marker foldlevel=0 |