Skip to content

Build sigrok artifacts #52

Build sigrok artifacts

Build sigrok artifacts #52

Workflow file for this run

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