update plugin bundling scheme #19
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: Build btop | |
on: | |
workflow_dispatch: | |
inputs: | |
debug_build: | |
required: false | |
type: boolean | |
debug_link: | |
required: false | |
type: boolean | |
push: | |
branches: ["main"] | |
pull_request: | |
workflow_call: | |
jobs: | |
build: | |
name: Build btop | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Load cosmocc version | |
run: | | |
version=$(cat .github/cosmocc_version.txt) | |
echo "cosmocc_version=${version}" >> "$GITHUB_ENV" | |
- name: Setup cosmocc | |
uses: bjia56/[email protected] | |
with: | |
version: ${{ env.cosmocc_version }} | |
- name: Build btop | |
run: | | |
export CC=cosmocc | |
export CXX=cosmoc++ | |
cmake -B build | |
cmake --build build --parallel 4 | |
- name: Upload btop | |
uses: actions/upload-artifact@v4 | |
with: | |
name: btop | |
path: ./build/btop | |
- name: Interactive debugging | |
uses: fawazahmed0/action-debug-vscode@v3 | |
if: ${{ always() && inputs.debug_build }} | |
build_linux_plugin: | |
name: Build plugin Linux ${{ matrix.arch }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x86_64, aarch64] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up zig | |
uses: mlugg/setup-zig@v1 | |
with: | |
version: 0.13.0 | |
- name: Build plugin | |
shell: bash | |
run: | | |
export CC="zig cc -target ${{ matrix.arch }}-linux-gnu.2.17" | |
export CXX="zig c++ -target ${{ matrix.arch }}-linux-gnu.2.17" | |
cmake -B build -DBTOP_TARGET=plugin | |
cmake --build build --parallel 4 | |
cp build/libbtop.so ${{ github.workspace }}/btop-linux-${{ matrix.arch }}.so | |
- name: Upload plugin | |
uses: actions/upload-artifact@v4 | |
with: | |
name: plugin-linux-${{ matrix.arch }} | |
path: ./btop-linux-${{ matrix.arch }}.so | |
bundle: | |
name: Bundle plugins with btop | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
- build_linux_plugin | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Load cosmocc version | |
run: | | |
version=$(cat .github/cosmocc_version.txt) | |
echo "cosmocc_version=${version}" >> "$GITHUB_ENV" | |
- name: Setup cosmocc | |
uses: bjia56/[email protected] | |
with: | |
version: ${{ env.cosmocc_version }} | |
- name: Download btop | |
uses: actions/download-artifact@v4 | |
with: | |
name: btop | |
path: . | |
- name: Download plugins | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: plugin-* | |
path: /tmp/btop-plugin/ | |
merge-multiple: true | |
- name: Bundle | |
run: | | |
tree /tmp/btop-plugin || true | |
mv btop btop.com | |
sudo mkdir -p /zip/ | |
sudo cp /tmp/btop-plugin/btop-linux-x86_64.so /zip/ | |
sudo cp /tmp/btop-plugin/btop-linux-aarch64.so /zip/ | |
cd /zip | |
zip ${{ github.workspace }}/btop.com * | |
cd ${{ github.workspace }} | |
mv btop.com btop.exe | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: btop.exe | |
path: ./btop.exe | |
- name: Interactive debugging | |
uses: fawazahmed0/action-debug-vscode@v3 | |
if: ${{ always() && inputs.debug_link }} | |
check: | |
name: Check btop.exe ${{ matrix.os }} ${{ matrix.arch }} | |
needs: bundle | |
runs-on: ${{ matrix.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runner: macos-13 | |
arch: x86_64 | |
os: MacOS | |
- runner: macos-14 | |
arch: arm64 | |
os: MacOS | |
- runner: ubuntu-latest | |
arch: x86_64 | |
os: Linux | |
- runner: windows-latest | |
arch: x86_64 | |
os: Windows | |
- runner: ubuntu-latest | |
arch: x86_64 | |
os: FreeBSD | |
- runner: ubuntu-latest | |
arch: aarch64 | |
os: FreeBSD | |
- runner: ubuntu-latest | |
arch: x86_64 | |
os: NetBSD | |
- runner: ubuntu-latest | |
arch: x86_64 | |
os: OpenBSD | |
steps: | |
- name: Set up cosmocc | |
if: ${{ matrix.os == 'Linux' }} | |
uses: bjia56/[email protected] | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: btop.exe | |
path: . | |
- name: Mark executable | |
shell: bash | |
run: | | |
chmod +x btop.exe | |
- name: Configure Windows | |
if: ${{ matrix.os == 'Windows' }} | |
shell: powershell | |
run: | | |
Remove-MpPreference -ExclusionPath (Get-MpPreference).ExclusionPath | |
Set-Service -Name wuauserv -StartupType Manual -Status Running | |
- name: Scan with Windows Defender | |
if: ${{ matrix.os == 'Windows' }} | |
shell: cmd | |
run: | | |
copy btop.exe C: | |
"C:\Program Files\Windows Defender\MpCmdRun.exe" -SignatureUpdate | |
"C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File C:\btop.exe | |
- name: Check btop.exe | |
if: ${{ !contains(matrix.os, 'BSD') }} | |
shell: bash | |
run: | | |
./btop.exe --version | |
- name: Start VM | |
if: ${{ matrix.os == 'FreeBSD' }} | |
uses: vmactions/freebsd-vm@v1 | |
with: | |
sync: nfs | |
arch: ${{ matrix.arch }} | |
- name: Start VM | |
if: ${{ matrix.os == 'NetBSD' }} | |
uses: vmactions/netbsd-vm@v1 | |
with: | |
sync: nfs | |
- name: Start VM | |
if: ${{ matrix.os == 'OpenBSD' }} | |
uses: vmactions/openbsd-vm@v1 | |
with: | |
sync: nfs | |
release: 7.3 | |
- name: Check btop.exe | |
if: ${{ matrix.os == 'FreeBSD' }} | |
shell: freebsd {0} | |
run: | | |
cd ${{ github.workspace }} | |
./btop.exe --version | |
- name: Check btop.exe | |
if: ${{ matrix.os == 'NetBSD' }} | |
shell: netbsd {0} | |
run: | | |
cd ${{ github.workspace }} | |
./btop.exe --version | |
- name: Check btop.exe | |
if: ${{ matrix.os == 'OpenBSD' }} | |
shell: openbsd {0} | |
run: | | |
cd ${{ github.workspace }} | |
./btop.exe --version |