Skip to content

build system improvements #2451

build system improvements

build system improvements #2451

Workflow file for this run

name: macos
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on: [push, pull_request]
defaults:
run:
shell: bash
jobs:
macos:
runs-on: macos-11
env:
# Bump number to reset all caches.
CACHE_EPOCH: '0'
CLICOLOR_FORCE: '1'
MACOSX_DEPLOYMENT_TARGET: '11'
MAKEFLAGS: 'OUTPUT_DIR=build'
steps:
- name: XCode version
run: xcode-select -p
# 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
# Note: if we get a hit on the primary key, then the rest of the job can be skipped:
# there's no point in building the same version, and we don't have any tests to run.
- name: Restore build cache
id: ccache-restore
uses: actions/cache/restore@v4
with:
path: /Users/runner/Library/Caches/ccache
key: ${{ env.CACHE_EPOCH }}-${{ runner.os }}-ccache-${{ hashFiles('cache-key') }}
restore-keys: ${{ env.CACHE_EPOCH }}-${{ runner.os }}-ccache-
- name: Install ccache
if: steps.ccache-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.ccache-restore.outputs.cache-hit != 'true'
run: |
set -x
which ccache
ccache --version
ccache --zero-stats
ccache --max-size=256M
ccache --show-config
# }}}
# Install dependencies. {{{
- name: Setup Python
if: steps.ccache-restore.outputs.cache-hit != 'true'
uses: actions/setup-python@v5
with:
# Note: Python 3.12 removal of `distutils` breaks GLib's build.
python-version: '3.11'
- name: Install homebrew dependencies
if: steps.ccache-restore.outputs.cache-hit != 'true'
uses: ./.github/actions/brew_cache
with:
cache_epoch: '${{ env.CACHE_EPOCH }}'
packages: >
autoconf
automake
binutils
cmake
coreutils
gettext
gnu-getopt
grep
libtool
make
nasm
pkg-config
wget
- name: Update PATH
if: steps.ccache-restore.outputs.cache-hit != 'true'
run: >
printf '%s\n'
"$(brew --prefix)/opt/gettext/bin"
"$(brew --prefix)/opt/gnu-getopt/bin"
"$(brew --prefix)/opt/grep/libexec/gnubin"
"$(brew --prefix)/opt/make/libexec/gnubin"
| tee "${GITHUB_PATH}"
# }}}
# Build. {{{
- name: Build
if: steps.ccache-restore.outputs.cache-hit != 'true'
run: make
- name: Dump binaries runtime path & dependencies
if: steps.ccache-restore.outputs.cache-hit != 'true'
run: make bindeps
# }}}
# Clean / save caches. {{{
- name: Clean build cache
if: steps.ccache-restore.outputs.cache-hit != 'true' && always()
run: |
set -x
ccache --cleanup >/dev/null
ccache --show-stats --verbose
- name: Save build cache
uses: actions/cache/save@v4
if: steps.ccache-restore.outputs.cache-hit != 'true'
with:
path: /Users/runner/Library/Caches/ccache
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
# }}}
# vim: foldmethod=marker foldlevel=0