mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 09:58:03 +02:00
108 lines
3.8 KiB
YAML
108 lines
3.8 KiB
YAML
name: Reusable macOS Hosts
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
arch:
|
|
required: true
|
|
type: string
|
|
runs-on:
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
CMAKE_BUILD_TYPE: ${{ vars.CMAKE_BUILD_TYPE || 'RelWithDebInfo' }}
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ inputs.runs-on }}
|
|
steps:
|
|
- name: checkout repository
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
|
|
- name: uname -a
|
|
run: uname -a
|
|
|
|
- name: install required packages with MacPorts # Homebrew dropped Intel support
|
|
if: inputs.arch == 'amd64'
|
|
run: |
|
|
curl -fsSL https://github.com/macports/macports-base/releases/download/v2.12.6/MacPorts-2.12.6-15-Sequoia.pkg -o "$RUNNER_TEMP/MacPorts.pkg"
|
|
sudo installer -pkg "$RUNNER_TEMP/MacPorts.pkg" -target /
|
|
echo /opt/local/bin >> "$GITHUB_PATH"
|
|
echo /opt/local/sbin >> "$GITHUB_PATH"
|
|
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
|
|
sudo port selfupdate
|
|
sudo port install vulkan-loader vulkan-headers MoltenVK ImageMagick7 chafa lua quickjs-ng jq
|
|
|
|
- name: install required packages with Homebrew
|
|
if: inputs.arch == 'aarch64'
|
|
run: |
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew update
|
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa lua quickjs-ng jq
|
|
|
|
- name: configure project
|
|
run: |
|
|
if [ "${{ inputs.arch }}" = "amd64" ]; then
|
|
export CMAKE_PREFIX_PATH=/opt/local
|
|
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
|
|
fi
|
|
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On .
|
|
|
|
- name: build project
|
|
run: cmake --build . --target package --verbose -j4
|
|
|
|
- name: list features
|
|
run: ./fastfetch --list-features
|
|
|
|
- name: run fastfetch
|
|
run: time ./fastfetch -c presets/ci.jsonc --structure-disabled vulkan:bluetooth:bluetoothradio --stat false
|
|
|
|
- name: run fastfetch --format json
|
|
run: |
|
|
{ time -p ./fastfetch -c presets/ci.jsonc --structure-disabled vulkan:bluetooth:bluetoothradio --format json > fastfetch.raw.json 2> fastfetch.error; } 2> fastfetch.time
|
|
sed -n '/^[[:space:]]*\[/,$p' fastfetch.raw.json > fastfetch.json
|
|
cat fastfetch.json
|
|
cat fastfetch.error >&2
|
|
cat fastfetch.time >&2
|
|
|
|
- name: prepare benchmark data
|
|
run: |
|
|
real_seconds=$(awk '$1 == "real" { print $2 }' fastfetch.time)
|
|
jq -e 'type == "array"' fastfetch.json > /dev/null
|
|
jq --arg platform "macos" --arg arch "${{ inputs.arch }}" --argjson real_seconds "$real_seconds" '
|
|
map(select(.stat | type == "number") | {
|
|
name: ("fastfetch " + $platform + " " + $arch + " module " + .type),
|
|
unit: "ms",
|
|
value: .stat
|
|
}) + [{
|
|
name: ("fastfetch " + $platform + " " + $arch + " total process time"),
|
|
unit: "ms",
|
|
value: ($real_seconds * 1000)
|
|
}]
|
|
' fastfetch.json > benchmark.json
|
|
cat benchmark.json
|
|
|
|
- name: run flashfetch
|
|
run: time ./flashfetch
|
|
|
|
- name: print dependencies
|
|
run: otool -L fastfetch
|
|
|
|
- name: run tests
|
|
run: ctest --output-on-failure
|
|
|
|
- name: upload artifacts
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: fastfetch-macos-${{ inputs.arch }}
|
|
path: ./fastfetch-*.*
|
|
|
|
- name: upload benchmark data
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: benchmark-macos-${{ inputs.arch }}
|
|
path: benchmark.json
|