build.yml: Fix required packages #30
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: Reusable sigrok Artifact Builder Workflows | |
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 }} | |
DEBUG: 0 | |
# When downloading python from sigrok.org, smth is wrong with the cert | |
WGET: "wget -c --quiet --no-check-certificate" | |
steps: | |
- 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 PulseView | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- 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-NIGHTLY-${{ matrix.target.target }}-${{ matrix.build_type.name }}-installer.exe | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pulseview-${{ matrix.target.target }}-${{ matrix.build_type.name }}-mxe | |
path: pulseview/build/contrib/pulseview*installer.exe | |
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" | |
steps: | |
- 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-cli | |
uses: actions/checkout@v4 | |
with: | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- 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-NIGHTLY-${{ matrix.target.target }}-debug-installer.exe | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-${{ matrix.target.target }}-mxe | |
path: sigrok-cli/contrib/sigrok-cli*installer.exe | |
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 }} | |
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" | |
# See https://github.com/actions/checkout/issues/1590#issuecomment-2219382750 | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
steps: | |
- name: Update dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get upgrade -y | |
# Temp! | |
sudo apt-get install -y python3-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 PulseView | |
uses: actions/checkout@v3 | |
with: | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- 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-NIGHTLY-${{ matrix.target.target }}-${{ matrix.build_type.name }}.appimage | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: artifact-pulseview-${{ matrix.target.target }}-appimage | |
path: sigrok-build/ci/appimage/appimage-build/pulseview-*.appimage | |
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" | |
steps: | |
- name: Update dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get upgrade -y | |
# Temp! | |
sudo apt-get install -y libffi-dev | |
# Temp! | |
sudo apt-get install -y python3-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-cli | |
uses: actions/checkout@v4 | |
with: | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- 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-NIGHTLY-${{ matrix.target.target }}-debug.appimage | |
- name: Upload artifact | |
id: upload_sigrok-cli_appimage_artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-x86_64-appimage | |
path: sigrok-build/ci/appimage/appimage-build/sigrok-cli-*.appimage | |
- name: Output artifact URL | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
run: | | |
echo 'Artifact URL is ${{ steps.upload_sigrok-cli_appimage_artifact.outputs.artifact-url }}' | |
- name: Add artifact message to pull request | |
# Only relevant for pull requests | |
if: (github.event_name == 'pull_request') | |
uses: actions/github-script@v7 | |
env: | |
PR_NOTES: | | |
sigrok-cli AppImage created: ${{ steps.upload_sigrok-cli_appimage_artifact.outputs.artifact-url }} | |
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_NOTES | |
}) | |
build_pulseview_macos: | |
name: PulseView macOS build | |
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" | |
steps: | |
- 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 PulseView | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/pulseview | |
path: pulseview | |
- 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 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-pulseview-macos | |
path: sigrok-build/ci/macos/pulseview*.dmg | |
build_sigrok-cli_macos: | |
name: sigrok-cli macOS build | |
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" | |
steps: | |
- 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-cli | |
uses: actions/checkout@v4 | |
with: | |
# TODO: Clone from sigrok.org | |
repository: sigrokproject/sigrok-cli | |
path: sigrok-cli | |
- 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 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sigrok-cli-macos | |
path: sigrok-build/ci/macos/sigrok-cli*.dmg | |
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: | |
- build_pulseview_mxe | |
- build_pulseview_appimage | |
- build_pulseview_macos | |
steps: | |
- name: Download AppImage artifacts | |
uses: actions/download-artifact@v3 | |
- name: Download all other artifacts | |
uses: actions/download-artifact@v4 | |
- name: Inspect directory after downloading artifacts | |
run: ls -alFR | |
- name: Create release | |
id: 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-appimage/pulseview-* | |
artifact-pulseview-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: | |
- build_sigrok-cli_mxe | |
- build_sigrok-cli_appimage | |
- build_sigrok-cli_macos | |
steps: | |
- name: Download AppImage artifacts | |
uses: actions/download-artifact@v3 | |
- name: Download all other artifacts | |
uses: actions/download-artifact@v4 | |
- name: Inspect directory after downloading artifacts | |
run: ls -alFR | |
- name: Create release | |
id: 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-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 | |
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 |