Merge pull request #801 from fastfetch-cli/dev #8
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: CI | |
on: | |
- push | |
- pull_request | |
jobs: | |
spellcheck: | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: Install codespell | |
shell: bash | |
run: sudo apt update && sudo apt install -y codespell | |
- name: Run Spellchecker | |
run: codespell | |
Linux-old-amd64: | |
name: Linux-old-amd64 | |
runs-on: ubuntu-20.04 | |
permissions: | |
security-events: write | |
contents: read | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: uname -a | |
run: uname -a | |
- name: install required packages | |
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev directx-headers-dev | |
- name: install linuxbrew packages | |
run: | | |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
/home/linuxbrew/.linuxbrew/bin/brew install imagemagick chafa ddcutil --ignore-dependencies | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: c | |
- name: configure project | |
run: PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . | |
- name: build project | |
run: cmake --build . --target package --verbose -j4 | |
- name: perform CodeQL analysis | |
uses: github/codeql-action/analyze@v3 | |
- name: list features | |
run: ./fastfetch --list-features | |
- name: run fastfetch | |
run: time ./fastfetch -c presets/ci.jsonc | |
- name: run fastfetch --format json | |
run: time ./fastfetch -c presets/ci.jsonc --format json | |
- name: run flashfetch | |
run: time ./flashfetch | |
- name: print dependencies | |
run: ldd fastfetch | |
- name: run tests | |
run: ctest | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-linux-old-amd64 | |
path: ./fastfetch-*.* | |
linux-amd64: | |
name: Linux-amd64 | |
runs-on: ubuntu-22.04 # Ubuntu 22.04 uses Glibc 2.35. Should be fine with Debian 12, which uses Glibc 2.36 (https://packages.debian.org/source/bookworm/glibc) | |
permissions: | |
security-events: write | |
contents: read | |
outputs: | |
ffversion: ${{ steps.ffversion.outputs.ffversion }} | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: uname -a | |
run: uname -a | |
- name: install required packages | |
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev libddcutil-dev libchafa-dev directx-headers-dev | |
- name: install linuxbrew packages | |
run: | | |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
/home/linuxbrew/.linuxbrew/bin/brew install imagemagick --ignore-dependencies | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: c | |
- name: configure project | |
run: PKG_CONFIG_PATH=/home/linuxbrew/.linuxbrew/lib/pkgconfig:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . | |
- name: build project | |
run: cmake --build . --target package --verbose -j4 | |
- name: perform CodeQL analysis | |
uses: github/codeql-action/analyze@v3 | |
- name: list features | |
run: ./fastfetch --list-features | |
- name: run fastfetch | |
run: time ./fastfetch -c presets/ci.jsonc | |
- name: run fastfetch --format json | |
run: time ./fastfetch -c presets/ci.jsonc --format json | |
- name: run flashfetch | |
run: time ./flashfetch | |
- name: print dependencies | |
run: ldd fastfetch | |
- name: run tests | |
run: ctest | |
- name: get fastfetch version | |
id: ffversion | |
run: echo "ffversion=$(./fastfetch --version-raw)" >> $GITHUB_OUTPUT | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-linux-amd64 | |
path: ./fastfetch-*.* | |
linux-aarch64: | |
name: Linux-aarch64 | |
runs-on: ubuntu-22.04 | |
permissions: | |
security-events: write | |
contents: read | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: run VM | |
uses: uraimo/run-on-arch-action@v2 | |
id: runcmd | |
with: | |
arch: aarch64 | |
distro: ubuntu22.04 | |
githubToken: ${{ github.token }} | |
run: | | |
uname -a | |
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev libosmesa6-dev ocl-icd-opencl-dev libnm-dev libpulse-dev libdrm-dev libddcutil-dev libchafa-dev directx-headers-dev rpm | |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . | |
cmake --build . --target package --verbose -j4 | |
./fastfetch --list-features | |
time ./fastfetch -c presets/ci.jsonc | |
time ./fastfetch -c presets/ci.jsonc --format json | |
time ./flashfetch | |
ldd fastfetch | |
ctest | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-linux-aarch64 | |
path: ./fastfetch-*.* | |
musl-amd64: | |
name: Musl-amd64 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: setup alpine linux | |
uses: jirutka/setup-alpine@master | |
- name: install dependencies | |
run: | | |
cat /etc/alpine-release | |
uname -a | |
apk add cmake samurai vulkan-loader-dev libxcb-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev xfconf-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev gcc g++ | |
shell: alpine.sh --root {0} | |
- name: build | |
run: | | |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr -DIS_MUSL=ON -GNinja . | |
cmake --build . --target package --verbose -j4 | |
shell: alpine.sh {0} | |
- name: run | |
run: | | |
./fastfetch --list-features | |
time ./fastfetch -c presets/ci.jsonc | |
time ./fastfetch -c presets/ci.jsonc --format json | |
time ./flashfetch | |
ldd fastfetch | |
ctest | |
shell: alpine.sh {0} | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-musl-amd64 | |
path: ./fastfetch-*.* | |
musl-aarch64: | |
name: Musl-aarch64 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: setup alpine linux | |
uses: jirutka/setup-alpine@master | |
with: | |
arch: aarch64 | |
- name: install dependencies | |
run: | | |
cat /etc/alpine-release | |
uname -a | |
apk add cmake samurai vulkan-loader-dev libxcb-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev xfconf-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev gcc g++ | |
shell: alpine.sh --root {0} | |
- name: build | |
run: | | |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr -DIS_MUSL=ON -GNinja . | |
cmake --build . --target package --verbose -j4 | |
shell: alpine.sh {0} | |
- name: run | |
run: | | |
./fastfetch --list-features | |
time ./fastfetch -c presets/ci.jsonc | |
time ./fastfetch -c presets/ci.jsonc --format json | |
time ./flashfetch | |
ldd fastfetch | |
ctest | |
shell: alpine.sh {0} | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-musl-aarch64 | |
path: ./fastfetch-*.* | |
macos-universal: | |
name: macOS-universal | |
runs-on: macos-latest | |
permissions: | |
security-events: write | |
contents: read | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: uname -a | |
run: uname -a | |
- name: install required packages | |
run: | | |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --overwrite vulkan-loader vulkan-headers molten-vk imagemagick chafa | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: c | |
- name: configure project | |
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64' . | |
- name: build project | |
run: cmake --build . --target package --verbose -j4 | |
- name: perform CodeQL analysis | |
uses: github/codeql-action/analyze@v3 | |
- name: list features | |
run: ./fastfetch --list-features | |
- name: run fastfetch | |
run: time ./fastfetch -c presets/ci.jsonc | |
- name: run fastfetch --format json | |
run: time ./fastfetch -c presets/ci.jsonc --format json | |
- name: run flashfetch | |
run: time ./flashfetch | |
- name: print dependencies | |
run: otool -L fastfetch | |
- name: run tests | |
run: ctest | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-macos-universal | |
path: ./fastfetch-*.* | |
freebsd-amd64: | |
name: FreeBSD-amd64 | |
runs-on: ubuntu-latest | |
permissions: | |
security-events: write | |
contents: read | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: run VM | |
uses: cross-platform-actions/action@master | |
with: | |
operating_system: freebsd | |
architecture: x86-64 | |
cpu_count: 3 | |
shell: bash | |
version: '13.2' | |
run: | | |
uname -a | |
sudo pkg update | |
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl xfce4-conf ImageMagick6 ImageMagick7 chafa egl libosmesa opencl ocl-icd v4l_compat | |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On . | |
cmake --build . --target package --verbose -j4 | |
./fastfetch --list-features | |
time ./fastfetch | |
time ./fastfetch --format json | |
time ./flashfetch | |
ldd fastfetch | |
ctest | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-freebsd-amd64 | |
path: ./fastfetch-*.* | |
freebsd-aarch64: | |
name: FreeBSD-aarch64 | |
runs-on: ubuntu-latest | |
permissions: | |
security-events: write | |
contents: read | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: run VM | |
uses: cross-platform-actions/action@master | |
with: | |
operating_system: freebsd | |
architecture: arm64 | |
cpu_count: 3 | |
shell: bash | |
version: '13.2' | |
run: | | |
uname -a | |
sudo pkg update | |
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl xfce4-conf ImageMagick6 ImageMagick7 chafa egl libosmesa opencl ocl-icd v4l_compat | |
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On . | |
cmake --build . --target package --verbose -j4 | |
./fastfetch --list-features | |
time ./fastfetch | |
time ./fastfetch --format json | |
time ./flashfetch | |
ldd fastfetch | |
ctest | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-freebsd-aarch64 | |
path: ./fastfetch-*.* | |
windows-amd64: | |
name: Windows-amd64 | |
runs-on: windows-latest | |
permissions: | |
security-events: write | |
contents: read | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: setup-msys2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: CLANG64 | |
update: true | |
install: git mingw-w64-clang-x86_64-7zip mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-vulkan-headers mingw-w64-clang-x86_64-opencl-icd | |
- name: print msys version | |
run: uname -a | |
- name: configure project | |
run: env PKG_CONFIG_PATH=/clang64/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On . | |
- name: build project | |
run: cmake --build . --verbose -j4 | |
- name: copy necessary dlls | |
run: cp /clang64/bin/{OpenCL,vulkan-1}.dll . | |
- name: list features | |
run: ./fastfetch --list-features | |
- name: run fastfetch | |
run: time ./fastfetch -c presets/ci.jsonc | |
- name: run fastfetch --format json | |
run: time ./fastfetch -c presets/ci.jsonc --format json | |
- name: run flashfetch | |
run: time ./flashfetch | |
- name: print dependencies | |
run: ldd fastfetch | |
- name: run tests | |
run: ctest | |
- name: create zip archive | |
run: 7z a -tzip -mx9 -bd -y fastfetch-windows-amd64.zip *.dll fastfetch.exe flashfetch.exe presets | |
- name: create 7z archive | |
run: 7z a -t7z -mx9 -bd -y fastfetch-windows-amd64.7z *.dll fastfetch.exe flashfetch.exe presets | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-windows-amd64 | |
path: ./fastfetch-windows-amd64.* | |
windows-i686: | |
name: Windows-i686 | |
runs-on: windows-latest | |
permissions: | |
security-events: write | |
contents: read | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: checkout repository | |
uses: actions/checkout@v4 | |
- name: setup-msys2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: CLANG32 | |
update: true | |
install: git mingw-w64-clang-i686-7zip mingw-w64-clang-i686-cmake mingw-w64-clang-i686-clang mingw-w64-clang-i686-vulkan-loader mingw-w64-clang-i686-vulkan-headers mingw-w64-clang-i686-opencl-icd | |
- name: print msys version | |
run: uname -a | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: c, cpp | |
- name: configure project | |
run: env PKG_CONFIG_PATH=/clang32/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DSET_TWEAK=Off -DBUILD_TESTS=On . | |
- name: build project | |
run: cmake --build . --verbose -j4 | |
- name: perform CodeQL analysis | |
uses: github/codeql-action/analyze@v3 | |
- name: copy necessary dlls | |
run: cp /clang32/bin/{OpenCL,vulkan-1}.dll . | |
- name: run fastfetch | |
run: time ./fastfetch -c presets/ci.jsonc | |
- name: run fastfetch --format json | |
run: time ./fastfetch -c presets/ci.jsonc --format json | |
- name: run flashfetch | |
run: time ./flashfetch | |
- name: print dependencies | |
run: ldd fastfetch | |
- name: run tests | |
run: ctest | |
- name: create zip archive | |
run: 7z a -tzip -mx9 -bd -y fastfetch-windows-i686.zip *.dll fastfetch.exe flashfetch.exe presets | |
- name: create 7z archive | |
run: 7z a -t7z -mx9 -bd -y fastfetch-windows-i686.7z *.dll fastfetch.exe flashfetch.exe presets | |
- name: upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fastfetch-windows-i686 | |
path: ./fastfetch-windows-i686.* | |
release: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'fastfetch-cli/fastfetch' | |
name: Release | |
runs-on: ubuntu-latest | |
needs: | |
- linux-amd64 | |
- linux-aarch64 | |
- musl-amd64 | |
- musl-aarch64 | |
- macos-universal | |
- freebsd-amd64 | |
- freebsd-aarch64 | |
- windows-amd64 | |
- windows-i686 | |
permissions: | |
contents: write | |
steps: | |
- name: get latest release version | |
id: get_version_release | |
uses: pozetroninc/github-action-get-latest-release@master | |
with: | |
repository: ${{ github.repository }} | |
- name: download artifacts | |
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release | |
uses: actions/download-artifact@v4 | |
- name: rm old artifacts | |
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release | |
run: | | |
rm -rf fastfetch-*-old-* | |
- name: create release | |
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: ${{ needs.linux-amd64.outputs.ffversion }} | |
commit: ${{ github.sha }} | |
artifactErrorsFailBuild: true | |
artifacts: fastfetch-*/fastfetch-* | |
body: "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-amd64.outputs.ffversion }}/CHANGELOG.md) for details." | |
- name: download source tarballs | |
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release | |
run: | | |
for i in 1 2 3 4 5; do curl -L --remote-name-all --output-dir fastfetch-source --create-dirs https://github.com/${{ github.repository }}/archive/refs/tags/${{ needs.linux-amd64.outputs.ffversion }}.{tar.gz,zip} && break || sleep 5; done | |
ls fastfetch-*/* | |
- name: generate release notes | |
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release | |
run: | | |
echo "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ needs.linux-amd64.outputs.ffversion }}/CHANGELOG.md) for details." > fastfetch-release-notes.md | |
echo -e "\n---\n\n<details><summary>SHA256SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md | |
sha256sum fastfetch-*/* >> fastfetch-release-notes.md | |
echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md | |
echo -e "\n<details><summary>SHA512SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md | |
sha512sum fastfetch-*/* >> fastfetch-release-notes.md | |
echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md | |
- name: update release body | |
if: needs.linux-amd64.outputs.ffversion != steps.get_version_release.outputs.release | |
uses: ncipollo/release-action@v1 | |
with: | |
tag: ${{ needs.linux-amd64.outputs.ffversion }} | |
commit: ${{ github.sha }} | |
bodyFile: fastfetch-release-notes.md | |
allowUpdates: true |