Build sigrok artifacts #53
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 sigrok artifacts | |
on: | |
push: | |
workflow_dispatch: | |
workflow_call: | |
defaults: | |
run: | |
shell: bash | |
env: | |
# The path where the compiled packages will be installed. | |
INSTALL_DIR: "${{ github.workspace }}/sr" | |
# Git URL for the libserialport dependency | |
LIBSERIALPORT_REPO: "git://sigrok.org/libserialport" | |
# Git URL for the libsigrok dependency | |
LIBSIGROK_REPO: "git://sigrok.org/libsigrok" | |
# Git branch for the libsigrok dependency | |
LIBSIGROK_BRANCH: "master" | |
# Git URL for the libsigrokdecode dependency | |
LIBSIGROKDECODE_REPO: "git://sigrok.org/libsigrokdecode" | |
# Git URL for the sigrok-firmware dependency | |
SIGROK_FIRMWARE_REPO: "git://sigrok.org/sigrok-firmware" | |
# Git URL for the sigrok-firmware-fx2lafw dependency | |
SIGROK_FIRMWARE_FX2LAFW_REPO: "git://sigrok.org/sigrok-firmware-fx2lafw" | |
# Git URL for the sigrok-dumps dependency | |
SIGROK_DUMPS_REPO: "git://sigrok.org/sigrok-dumps" | |
# Misc commands | |
WGET: "wget -c --quiet" | |
GIT_CLONE: "git clone --depth=1" | |
jobs: | |
build_pulseview_mxe: | |
name: PulseView MXE build (${{ matrix.target.target }}) (${{ matrix.build_type.type }}) | |
if: | | |
((endsWith(github.repository, 'pulseview')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/sigrokproject/sigrok-mxe:latest | |
strategy: | |
matrix: | |
target: | |
- { target: "i686", nsis_param: "" } | |
- { target: "x86_64", nsis_param: "-DPE64=1" } | |
build_type: | |
- { type: "Release", name: "release" } | |
- { type: "Debug", name: "debug" } | |
env: | |
TARGET: ${{ matrix.target.target }} | |
BUILD_TYPE: ${{ matrix.build_type.name }} | |
DEBUG: 0 | |
# When downloading python from sigrok.org, smth is wrong with the cert | |
WGET: "wget -c --quiet --no-check-certificate" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/mxe | |
source sigrok-mxe-init-toolchain.sh | |
./sigrok-mxe-build-dependencies.sh | |
- name: Checkout sigrok's PulseView | |
# Check out default PV repository unless we're processing a pull request | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- name: Checkout PulseView from PR | |
# Check out PV branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: pulseview | |
fetch-depth: 0 | |
- name: Build PulseView | |
run: | | |
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | |
mkdir -p pulseview/build | |
cd pulseview/build | |
$CMAKE \ | |
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type.type }} \ | |
-DDISABLE_WERROR=FALSE \ | |
-DENABLE_TESTS=FALSE \ | |
.. | |
make $PARALLEL $V | |
make install/strip $V | |
- name: Build NSIS installer | |
run: | | |
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | |
# Zadig (we ship this with frontends for easy driver switching). | |
$WGET https://github.com/pbatard/libwdi/releases/download/b721/zadig-2.4.exe -O $INSTALL_DIR/zadig.exe | |
$WGET https://github.com/pbatard/libwdi/releases/download/v1.2.5/zadig_xp-2.2.exe -O $INSTALL_DIR/zadig_xp.exe | |
cp sigrok-build/ci/mxe/contrib-mxe/FileAssociation.nsh pulseview/build/contrib | |
makensis ${{ matrix.target.nsis_param }} pulseview/build/contrib/pulseview_cross.nsi | |
- name: Rename artifact | |
run: | | |
cd pulseview/build/contrib | |
mv pulseview-*installer.exe pulseview-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-${{ matrix.build_type.name }}-installer.exe | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-mxe | |
path: pulseview/build/contrib/pulseview*installer.exe | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[pulseview-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-${{ matrix.build_type.name }}-installer.exe](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_sigrok-cli_mxe: | |
name: sigrok-cli MXE build (${{ matrix.target.target }}) | |
if: | | |
((endsWith(github.repository, 'sigrok-cli')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/sigrokproject/sigrok-mxe:latest | |
strategy: | |
matrix: | |
target: | |
- { target: "i686", nsis_param: "" } | |
- { target: "x86_64", nsis_param: "-DPE64=1" } | |
env: | |
TARGET: ${{ matrix.target.target }} | |
DEBUG: 0 | |
# When downloading python from sigrok.org, smth is wrong with the cert | |
WGET: "wget -c --quiet --no-check-certificate" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/mxe | |
source sigrok-mxe-init-toolchain.sh | |
./sigrok-mxe-build-dependencies.sh | |
- name: Checkout sigrok's sigrok-cli | |
# Check out default sigrok-cli repository unless we're processing a pull request | |
if: (github.event_name != 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- name: Checkout sigrok-cli from PR | |
# Check out sigrok-cli branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: sigrok-cli | |
fetch-depth: 0 | |
- name: Build sigrok-cli | |
run: | | |
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | |
cd sigrok-cli | |
./autogen.sh | |
./configure $C | |
make $PARALLEL $V | |
make install $V | |
- name: Build NSIS installer | |
run: | | |
source sigrok-build/ci/mxe/sigrok-mxe-init-toolchain.sh | |
# Zadig (we ship this with frontends for easy driver switching). | |
$WGET https://github.com/pbatard/libwdi/releases/download/b721/zadig-2.4.exe -O $INSTALL_DIR/zadig.exe | |
$WGET https://github.com/pbatard/libwdi/releases/download/v1.2.5/zadig_xp-2.2.exe -O $INSTALL_DIR/zadig_xp.exe | |
cp sigrok-build/ci/mxe/contrib-mxe/FileAssociation.nsh sigrok-cli/contrib | |
makensis ${{ matrix.target.nsis_param }} sigrok-cli/contrib/sigrok-cli_cross.nsi | |
- name: Rename artifact | |
run: | | |
cd sigrok-cli/contrib | |
mv sigrok-cli-*installer.exe sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug-installer.exe | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-${{ matrix.target.target }}-mxe | |
path: sigrok-cli/contrib/sigrok-cli*installer.exe | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug-installer.exe](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_pulseview_appimage: | |
name: PulseView AppImage build (${{ matrix.target.target }}) (${{ matrix.build_type.type }}) | |
if: | | |
((endsWith(github.repository, 'pulseview')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/sigrokproject/sigrok-appimage-${{ matrix.target.container }}:latest | |
strategy: | |
matrix: | |
target: | |
# - target: "i386" | |
# container: "x86_64-i386" | |
# cc: "gcc -m32" | |
# cxx: "g++ -m32" | |
# ld: "ld -melf_i386" | |
# ldflags: "-m32" | |
- target: "x86_64" | |
container: "x86_64" | |
cc: "gcc" | |
cxx: "g++" | |
ld: "ld" | |
ldflags: "" | |
build_type: | |
- { type: "Release", name: "release" } | |
- { type: "Debug", name: "debug" } | |
env: | |
TARGET: ${{ matrix.target.target }} | |
BUILD_TYPE: ${{ matrix.build_type.name }} | |
CC: ${{ matrix.target.cc }} | |
CXX: ${{ matrix.target.cxx }} | |
LD: ${{ matrix.target.ld }} | |
LDFLAGS: ${{ matrix.target.ldflags }} | |
APP_DIR: "${{ github.workspace }}/AppDir" | |
# Artifact infos | |
ARTIFACT_TITLE: "PulseView" | |
ARTIFACT_BIN_NAME: "pulseview" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Update dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get upgrade -y | |
# Version must match the one in ci/appimage/sigrok-appimage-create-appimage.sh | |
sudo apt-get install -y python3.8-dev | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/appimage | |
source sigrok-appimage-init-toolchain.sh | |
./sigrok-appimage-build-dependencies.sh | |
- name: Checkout sigrok's PulseView | |
# Check out default PV repository unless we're processing a pull request | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- name: Checkout PulseView from PR | |
# Check out PV branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: pulseview | |
fetch-depth: 0 | |
- name: Build PulseView | |
run: | | |
source sigrok-build/ci/appimage/sigrok-appimage-init-toolchain.sh | |
mkdir -p "$APP_DIR" | |
mkdir -p pulseview/build | |
cd pulseview/build | |
PKG_CONFIG_PATH=$P cmake \ | |
-DCMAKE_INSTALL_PREFIX:PATH="$APP_DIR"/usr \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type.type }} \ | |
-DDISABLE_WERROR=FALSE \ | |
-DENABLE_TESTS=FALSE \ | |
.. | |
make $PARALLEL $V | |
make install/strip $V | |
- name: Build AppImage | |
run: | | |
cd sigrok-build/ci/appimage | |
source sigrok-appimage-init-toolchain.sh | |
./sigrok-appimage-create-appimage.sh | |
- name: Rename artifact | |
run: | | |
cd sigrok-build/ci/appimage/appimage-build | |
mv PulseView-*.AppImage pulseview-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-${{ matrix.build_type.name }}.appimage | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-appimage | |
path: sigrok-build/ci/appimage/appimage-build/pulseview-*.appimage | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-appimage](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_sigrok-cli_appimage: | |
name: sigrok-cli AppImage build (${{ matrix.target.target }}) | |
if: | | |
((endsWith(github.repository, 'sigrok-cli')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/sigrokproject/sigrok-appimage-${{ matrix.target.container }}:latest | |
strategy: | |
matrix: | |
target: | |
# - target: "i386" | |
# container: "x86_64-i386" | |
# cc: "gcc -m32" | |
# cxx: "g++ -m32" | |
# ld: "ld -melf_i386" | |
# ldflags: "-m32" | |
- target: "x86_64" | |
container: "x86_64" | |
cc: "gcc" | |
cxx: "g++" | |
ld: "ld" | |
ldflags: "" | |
env: | |
TARGET: ${{ matrix.target.target }} | |
CC: ${{ matrix.target.cc }} | |
CXX: ${{ matrix.target.cxx }} | |
LD: ${{ matrix.target.ld }} | |
LDFLAGS: ${{ matrix.target.ldflags }} | |
APP_DIR: "${{ github.workspace }}/AppDir" | |
# Artifact infos | |
ARTIFACT_TITLE: "sigrok-cli" | |
ARTIFACT_BIN_NAME: "sigrok-cli" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Update dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get upgrade -y | |
# Temp! | |
sudo apt-get install -y libffi-dev | |
# Version must match the one in ci/appimage/sigrok-appimage-create-appimage.sh | |
sudo apt-get install -y python3.8-dev | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/appimage | |
source sigrok-appimage-init-toolchain.sh | |
./sigrok-appimage-build-dependencies.sh | |
- name: Checkout sigrok's sigrok-cli | |
# Check out default sigrok-cli repository unless we're processing a pull request | |
if: (github.event_name != 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- name: Checkout sigrok-cli from PR | |
# Check out sigrok-cli branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: sigrok-cli | |
fetch-depth: 0 | |
- name: Build sigrok-cli | |
run: | | |
source sigrok-build/ci/appimage/sigrok-appimage-init-toolchain.sh | |
mkdir -p "$APP_DIR" | |
cd sigrok-cli | |
./autogen.sh | |
PKG_CONFIG_PATH=$P ./configure --prefix="$APP_DIR"/usr | |
make $PARALLEL $V | |
make install $V | |
- name: Build AppImage | |
run: | | |
cd sigrok-build/ci/appimage | |
source sigrok-appimage-init-toolchain.sh | |
./sigrok-appimage-create-appimage.sh | |
- name: Rename artifact | |
run: | | |
cd sigrok-build/ci/appimage/appimage-build | |
mv sigrok-cli-*.AppImage sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug.appimage | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-${{ matrix.target.target }}-appimage | |
path: sigrok-build/ci/appimage/appimage-build/sigrok-cli-*.appimage | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ matrix.target.target }}-debug.appimage](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_pulseview_macos_arm: | |
name: PulseView macOS build for ARM | |
if: | | |
((endsWith(github.repository, 'pulseview')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
# See https://github.com/actions/runner-images/issues/9254 | |
runs-on: macos-14 | |
# Note: For now, we only supply debug builds | |
# strategy: | |
# matrix: | |
# build_type: | |
# - { type: "Release", name: "release" } | |
# - { type: "Debug", name: "debug" } | |
env: | |
TARGET: "arm" | |
BREW_PYTHON_VERSION: "python@3" | |
BREW_QT_VERSION: "qt" | |
# Artifact infos | |
ARTIFACT_TITLE: "pulseview" | |
ARTIFACT_BIN_NAME: "pulseview" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Install dependencies | |
run: | | |
brew install autoconf automake autoconf-archive pkg-config libtool \ | |
libzip libusb libftdi hidapi nettle check doxygen swig \ | |
glib [email protected] cmake boost sdcc $BREW_PYTHON_VERSION $BREW_QT_VERSION | |
# - name: Provide qt also in prefix directory as qt is using a keg | |
# run: | | |
# brew link -f $BREW_QT_VERSION | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-build-dependencies.sh | |
- name: Checkout sigrok's PulseView | |
# Check out default PV repository unless we're processing a pull request | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- name: Checkout PulseView from PR | |
# Check out PV branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: pulseview | |
fetch-depth: 0 | |
- name: Build PulseView | |
run: | | |
source sigrok-build/ci/macos/sigrok-macos-init-toolchain.sh | |
mkdir -p pulseview/build | |
cd pulseview/build | |
PKG_CONFIG_PATH=$P cmake \ | |
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DDISABLE_WERROR=FALSE \ | |
-DENABLE_TESTS=FALSE \ | |
.. | |
make $PARALLEL $V | |
make install $V | |
- name: Build DMG | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-create-dmg.sh | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pulseview-arm-macos | |
path: sigrok-build/ci/macos/pulseview*.dmg | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[pulseview-${{ env.ARTIFACT_VERSION }}-${{ env.TARGET }}.dmg](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_pulseview_macos_x86: | |
name: PulseView macOS build for x86 | |
if: | | |
((endsWith(github.repository, 'pulseview')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
runs-on: macos-12 | |
# Note: For now, we only supply debug builds | |
# strategy: | |
# matrix: | |
# build_type: | |
# - { type: "Release", name: "release" } | |
# - { type: "Debug", name: "debug" } | |
env: | |
TARGET: "x86" | |
BREW_PYTHON_VERSION: "python@3" | |
BREW_QT_VERSION: "qt" | |
# Artifact infos | |
ARTIFACT_TITLE: "pulseview" | |
ARTIFACT_BIN_NAME: "pulseview" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Install dependencies | |
run: | | |
brew install autoconf automake autoconf-archive pkg-config libtool \ | |
libzip libusb libftdi hidapi nettle check doxygen swig \ | |
glib [email protected] cmake boost sdcc $BREW_PYTHON_VERSION $BREW_QT_VERSION | |
# - name: Provide qt also in prefix directory as qt is using a keg | |
# run: | | |
# brew link -f $BREW_QT_VERSION | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-build-dependencies.sh | |
- name: Checkout sigrok's PulseView | |
# Check out default PV repository unless we're processing a pull request | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- name: Checkout PulseView from PR | |
# Check out PV branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: pulseview | |
fetch-depth: 0 | |
- name: Build PulseView | |
run: | | |
source sigrok-build/ci/macos/sigrok-macos-init-toolchain.sh | |
mkdir -p pulseview/build | |
cd pulseview/build | |
PKG_CONFIG_PATH=$P cmake \ | |
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DDISABLE_WERROR=FALSE \ | |
-DENABLE_TESTS=FALSE \ | |
.. | |
make $PARALLEL $V | |
make install $V | |
- name: Build DMG | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-create-dmg.sh | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pulseview-x86-macos | |
path: sigrok-build/ci/macos/pulseview*.dmg | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[pulseview-${{ env.ARTIFACT_VERSION }}-${{ env.TARGET }}.dmg](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_sigrok-cli_macos_arm: | |
name: sigrok-cli macOS build for ARM | |
if: | | |
((endsWith(github.repository, 'sigrok-cli')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
# See https://github.com/actions/runner-images/issues/9254 | |
runs-on: macos-14 | |
env: | |
TARGET: "arm" | |
BREW_QT_VERSION: "qt" | |
BREW_PYTHON_VERSION: "python@3" | |
# Artifact infos | |
ARTIFACT_TITLE: "sigrok-cli" | |
ARTIFACT_BIN_NAME: "sigrok-cli" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Install dependencies | |
run: | | |
brew install autoconf automake autoconf-archive pkg-config sdcc \ | |
libtool libzip libusb libftdi hidapi nettle check doxygen swig \ | |
glib "$BREW_PYTHON_VERSION" "$BREW_QT_VERSION" | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-build-dependencies.sh | |
- name: Checkout sigrok's sigrok-cli | |
# Check out default sigrok-cli repository unless we're processing a pull request | |
if: (github.event_name != 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- name: Checkout sigrok-cli from PR | |
# Check out sigrok-cli branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: sigrok-cli | |
fetch-depth: 0 | |
- name: Build sigrok-cli | |
run: | | |
source sigrok-build/ci/macos/sigrok-macos-init-toolchain.sh | |
cd sigrok-cli | |
./autogen.sh | |
PKG_CONFIG_PATH=$P ./configure $C | |
make $PARALLEL $V | |
make install $V | |
- name: Build DMG | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-create-dmg.sh | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-arm-macos | |
path: sigrok-build/ci/macos/sigrok-cli*.dmg | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ env.TARGET }}.dmg](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
build_sigrok-cli_macos_x86: | |
name: sigrok-cli macOS build for x86 | |
if: | | |
((endsWith(github.repository, 'sigrok-cli')) || | |
(endsWith(github.repository, 'sigrok-build'))) | |
runs-on: macos-12 | |
env: | |
TARGET: "x86" | |
BREW_QT_VERSION: "qt" | |
BREW_PYTHON_VERSION: "python@3" | |
# Artifact infos | |
ARTIFACT_TITLE: "sigrok-cli" | |
ARTIFACT_BIN_NAME: "sigrok-cli" | |
ARTIFACT_VERSION: "NIGHTLY" | |
outputs: | |
pr_links: ${{ steps.pr_links.outputs.PR_LINKS }} | |
steps: | |
- name: Set artifact version to PR | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "ARTIFACT_VERSION=pr${{ github.event.pull_request.number }}" >> $GITHUB_ENV | |
- name: Install dependencies | |
run: | | |
brew install autoconf automake autoconf-archive pkg-config sdcc \ | |
libtool libzip libusb libftdi hidapi nettle check doxygen swig \ | |
glib "$BREW_PYTHON_VERSION" "$BREW_QT_VERSION" | |
- name: Checkout sigrok-build | |
# Cannot use actions/checkout because it always checks out the calling actions' repo, not the one specified | |
run: | | |
git clone https://github.com/sigrokproject/sigrok-build.git | |
- name: Build dependencies | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-build-dependencies.sh | |
- name: Checkout sigrok's sigrok-cli | |
# Check out default sigrok-cli repository unless we're processing a pull request | |
if: (github.event_name != 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- name: Checkout sigrok-cli from PR | |
# Check out sigrok-cli branch of the pull request we're processing | |
if: (github.event_name == 'pull_request') | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
path: sigrok-cli | |
fetch-depth: 0 | |
- name: Build sigrok-cli | |
run: | | |
source sigrok-build/ci/macos/sigrok-macos-init-toolchain.sh | |
cd sigrok-cli | |
./autogen.sh | |
PKG_CONFIG_PATH=$P ./configure $C | |
make $PARALLEL $V | |
make install $V | |
- name: Build DMG | |
run: | | |
cd sigrok-build/ci/macos | |
source sigrok-macos-init-toolchain.sh | |
./sigrok-macos-create-dmg.sh | |
- name: Upload artifact | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-x86-macos | |
path: sigrok-build/ci/macos/sigrok-cli*.dmg | |
- name: Add artifact to pull request message | |
id: pr_links | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo "PR_LINKS=[sigrok-cli-${{ env.ARTIFACT_VERSION }}-${{ env.TARGET }}.dmg](${{ steps.upload.outputs.artifact-url }})" >> $GITHUB_OUTPUT | |
continuous_release_pulseview: | |
name: Create continuous PulseView release and add artifacts to it | |
if: | | |
(endsWith(github.repository, 'pulseview') || endsWith(github.repository, 'sigrok-build')) && | |
((github.event_name == 'push' && github.ref == 'refs/heads/master') || | |
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master')) | |
runs-on: ubuntu-latest | |
needs: | |
# Keep in sync with job announce_pv_builds_in_pr | |
- build_pulseview_mxe | |
- build_pulseview_appimage | |
- build_pulseview_macos_x86 | |
- build_pulseview_macos_arm | |
steps: | |
- name: Download all other artifacts | |
uses: actions/download-artifact@v4 | |
- name: Inspect directory after downloading artifacts | |
run: ls -alFR | |
- name: Create release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
artifact-pulseview-i686-debug-mxe/pulseview-* | |
artifact-pulseview-i686-release-mxe/pulseview-* | |
artifact-pulseview-x86_64-debug-mxe/pulseview-* | |
artifact-pulseview-x86_64-release-mxe/pulseview-* | |
artifact-pulseview-x86_64-debug-appimage/pulseview-* | |
artifact-pulseview-x86_64-release-appimage/pulseview-* | |
artifact-pulseview-x86-macos/pulseview-* | |
artifact-pulseview-arm-macos/pulseview-* | |
tag_name: continuous | |
generate_release_notes: false | |
draft: false | |
fail_on_unmatched_files: true | |
continuous_release_sigrok-cli: | |
name: Create continuous sigrok-cli release and add artifacts to it | |
if: | | |
(endsWith(github.repository, 'sigrok-cli') || endsWith(github.repository, 'sigrok-build')) && | |
((github.event_name == 'push' && github.ref == 'refs/heads/master') || | |
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master')) | |
runs-on: ubuntu-latest | |
needs: | |
# Keep in sync with job announce_sigrok-cli_builds_in_pr | |
- build_sigrok-cli_mxe | |
- build_sigrok-cli_appimage | |
- build_sigrok-cli_macos_x86 | |
- build_sigrok-cli_macos_arm | |
steps: | |
- name: Download all other artifacts | |
uses: actions/download-artifact@v4 | |
- name: Inspect directory after downloading artifacts | |
run: ls -alFR | |
- name: Create release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
artifact-sigrok-cli-i686-mxe/sigrok-cli-* | |
artifact-sigrok-cli-x86_64-mxe/sigrok-cli-* | |
artifact-sigrok-cli-x86_64-appimage/sigrok-cli-* | |
artifact-sigrok-cli-x86-macos/sigrok-cli-* | |
artifact-sigrok-cli-arm-macos/sigrok-cli-* | |
tag_name: continuous | |
generate_release_notes: false | |
draft: false | |
fail_on_unmatched_files: true | |
continuous_release_all: | |
name: Create continuous release and add artifacts to it | |
if: | | |
(endsWith(github.repository, 'sigrok-build')) && | |
(github.event_name == 'push' && github.ref == 'refs/heads/master') || | |
(github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master') | |
runs-on: ubuntu-latest | |
needs: | |
- continuous_release_pulseview | |
- continuous_release_sigrok-cli | |
steps: | |
- name: Debug output | |
run: echo | |
announce_pv_builds_in_pr: | |
name: Announce PV builds in PR | |
if: (github.event_name == 'pull_request') | |
runs-on: ubuntu-latest | |
needs: | |
# Keep in sync with job continuous_release_pulseview | |
- build_pulseview_mxe | |
- build_pulseview_appimage | |
- build_pulseview_macos_x86 | |
- build_pulseview_macos_arm | |
steps: | |
- name: Post comment to PR | |
uses: actions/github-script@v7 | |
env: | |
PR_COMMENT: |- | |
## PulseView binaries created | |
${{ needs.build_pulseview_appimage.outputs.pr_links }} | |
${{ needs.build_pulseview_mxe.outputs.pr_links }} | |
${{ needs.build_pulseview_macos_x86.outputs.pr_links }} | |
${{ needs.build_pulseview_macos_arm.outputs.pr_links }} | |
Note: Binaries are removed after 90 days. If necessary, re-trigger a build by commenting '/build'. | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: ${{ github.event.pull_request.number }}, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: process.env.PR_COMMENT | |
}) | |
announce_sigrok-cli_builds_in_pr: | |
name: Announce sigrok-cli builds in PR | |
if: (github.event_name == 'pull_request') | |
runs-on: ubuntu-latest | |
needs: | |
# Keep in sync with job continuous_release_sigrok-cli | |
- build_sigrok-cli_mxe | |
- build_sigrok-cli_appimage | |
- build_sigrok-cli_macos_x86 | |
- build_sigrok-cli_macos_arm | |
steps: | |
- name: Post comment to PR | |
uses: actions/github-script@v7 | |
env: | |
PR_COMMENT: |- | |
## sigrok-cli binaries created | |
${{ needs.build_sigrok-cli_appimage.outputs.pr_links }} | |
${{ needs.build_sigrok-cli_mxe.outputs.pr_links }} | |
${{ needs.build_sigrok-cli_macos_x86.outputs.pr_links }} | |
${{ needs.build_sigrok-cli_macos_arm.outputs.pr_links }} | |
Note: Binaries are removed after 90 days. If necessary, re-trigger a build by commenting '/build'. | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: ${{ github.event.pull_request.number }}, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: process.env.PR_COMMENT | |
}) | |
debug_output: | |
name: Debug output | |
runs-on: ubuntu-latest | |
steps: | |
- name: Debug output | |
env: | |
GH_REPO: ${{ github.repository }} | |
GH_EVENT_NAME: ${{ github.event_name }} | |
GH_REF: ${{ github.ref }} | |
run: echo "Repo $GH_REPO, Event $GH_EVENT_NAME, Ref $GH_REF" | |
- name: Runner debug output | |
run: ldd --version |