Skip to content

Do not upload the macOS ida 9 32bits builds #214

Do not upload the macOS ida 9 32bits builds

Do not upload the macOS ida 9 32bits builds #214

Workflow file for this run

name: quokka-build
on: [push]
env:
BUILD_TYPE: Release
permissions: {}
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
ida_sdk: [74, 77, 80, 81, 82, 83, 84, 90, 90sp1]
include:
- ida_sdk: 74
sdk_password: IDA_SDK74_PASSWORD
- ida_sdk: 77
sdk_password: IDA_SDK77_PASSWORD
- ida_sdk: 80
sdk_password: IDA_SDK80_PASSWORD
- ida_sdk: 81
sdk_password: IDA_SDK81_PASSWORD
- ida_sdk: 82
sdk_password: IDA_SDK82_PASSWORD
- ida_sdk: 83
sdk_password: IDA_SDK83_PASSWORD
- ida_sdk: 84
sdk_password: IDA_SDK84_PASSWORD
- ida_sdk: 90
sdk_password: IDA_SDK90_PASSWORD
- ida_sdk: 90sp1
sdk_password: IDA_SDK90sp1_PASSWORD
- os: ubuntu-latest
ext: so
- os: windows-latest
ext: dll
- os: macos-latest
ext: dylib
exclude:
# We exclude these because ARM libraries were not available in 7.4 and the latest macos runner on GitHub are Mx machines
- os: macos-latest
ida_sdk: 74
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache third_party folder
id: cache-sdk
uses: actions/cache@v4
with:
path: third_party
key: ${{ matrix.os }}-third-party-${{ hashFiles('sdk_lockfile') }}
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2.0
with:
cmake-version: 'latest'
- name: Install Ninja (Linux / MacOS)
if: ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' }}
uses: seanmiddleditch/gha-setup-ninja@v6
- name: Fetch IDA SDKs (Linux / MacOS)
if: ${{ (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') && steps.cache-sdk.outputs.cache-hit != 'true' }}
run: |
cd scripts
./fetch_sdk.sh
- name: Fetch IDA SDKs (Windows)
if: ${{ matrix.os == 'windows-latest' && steps.cache-sdk.outputs.cache-hit != 'true' }}
run: |
cd scripts
.\fetch_sdk.bat
- name: Prepare build environment (Linux)
if: ${{ matrix.os == 'ubuntu-latest' }}
env:
IDA_SDK_VERSION: idasdk${{ matrix.ida_sdk }}
IDA_SDK_PASSWORD: ${{ secrets[matrix.sdk_password] }}
CMAKE_BUILD_DIR: build${{ matrix.ida_sdk }}
run: |
[ ! -d third_party/$IDA_SDK_VERSION ] && unzip -d third_party -P $IDA_SDK_PASSWORD third_party/$IDA_SDK_VERSION.zip
[ -f third_party/$IDA_SDK_VERSION/include/regex.h ] && mv third_party/$IDA_SDK_VERSION/include/regex.h third_party/$IDA_SDK_VERSION/include/regex.bak
cmake -B $CMAKE_BUILD_DIR -S $GITHUB_WORKSPACE -G Ninja -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DIdaSdk_ROOT_DIR=${GITHUB_WORKSPACE}/third_party/$IDA_SDK_VERSION
# We need to differentiate MacOS build from Linux because we want to use a specific compiler on MacOS
- name: Prepare build environment (MacOS)
if: ${{ matrix.os == 'macos-latest' }}
env:
IDA_SDK_VERSION: idasdk${{ matrix.ida_sdk }}
IDA_SDK_PASSWORD: ${{ secrets[matrix.sdk_password] }}
CMAKE_BUILD_DIR: build${{ matrix.ida_sdk }}
run: |
[ ! -d third_party/$IDA_SDK_VERSION ] && unzip -d third_party -P $IDA_SDK_PASSWORD third_party/$IDA_SDK_VERSION.zip
[ -f third_party/$IDA_SDK_VERSION/include/regex.h ] && mv third_party/$IDA_SDK_VERSION/include/regex.h third_party/$IDA_SDK_VERSION/include/regex.bak
cmake -B $CMAKE_BUILD_DIR \
-S $GITHUB_WORKSPACE \
-G Ninja \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DIdaSdk_ROOT_DIR=${GITHUB_WORKSPACE}/third_party/$IDA_SDK_VERSION \
-DCMAKE_C_COMPILER=$(brew --prefix llvm@15)/bin/clang \
-DCMAKE_CXX_COMPILER=$(brew --prefix llvm@15)/bin/clang++
- name: Prepare build environment (Windows)
if: ${{ matrix.os == 'windows-latest' }}
env:
IDA_SDK_VERSION: idasdk${{ matrix.ida_sdk }}
IDA_SDK_PASSWORD: ${{ secrets[matrix.sdk_password] }}
CMAKE_BUILD_DIR: build${{ matrix.ida_sdk }}
run: |
7z.exe x -p"${env:IDA_SDK_PASSWORD}" -y -o"third_party" "third_party\${env:IDA_SDK_VERSION}.zip"
rm "third_party\${env:IDA_SDK_VERSION}\include\regex.h"
cmake -B "${env:CMAKE_BUILD_DIR}" -S "${env:GITHUB_WORKSPACE}" -DIdaSdk_ROOT_DIR="${env:GITHUB_WORKSPACE}/third_party/${env:IDA_SDK_VERSION}"
- name: Build
env:
CMAKE_BUILD_DIR: build${{ matrix.ida_sdk }}
shell: bash
run: |
cmake --build $CMAKE_BUILD_DIR --config $BUILD_TYPE
cmake --install $CMAKE_BUILD_DIR
- name: Rename Plugin
shell: bash
run: |
mv build${{ matrix.ida_sdk }}/quokka-install/quokka_plugin64.${{ matrix.ext }} ${{ matrix.ida_sdk }}-quokka_plugin0064.${{ matrix.ext }}
[[ -e "build${{ matrix.ida_sdk }}/quokka-install/quokka_plugin.${{ matrix.ext }}" ]] && mv build${{ matrix.ida_sdk }}/quokka-install/quokka_plugin.${{ matrix.ext }} ${{ matrix.ida_sdk }}-quokka_plugin0032.${{ matrix.ext }} || echo "Skipping 32 bit plugin"
# We need one action per file
# See https://github.com/actions/upload-artifact/issues/331
- name: Upload Artifacts (64)
uses: actions/upload-artifact@v4.3.1
with:
name: idaplugin-${{ matrix.os }}-${{ matrix.ida_sdk }}
path: ${{ matrix.ida_sdk }}-quokka_plugin0064.${{ matrix.ext }}
if-no-files-found: error
- name: Upload Artifacts (32)
if: ${{ contains('74,77,80,81,82,83,84', matrix.ida_sdk) }}
uses: actions/upload-artifact@v4.3.1
with:
name: idaplugin-${{ matrix.os }}-${{ matrix.ida_sdk }}-32
path: ${{ matrix.ida_sdk }}-quokka_plugin0032.${{ matrix.ext }}
if-no-files-found: error
upload:
name: Upload artifacts for Release
needs: [build]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
ida_sdk: [74, 77, 80, 81, 82, 83, 84, 90, 90sp1]
bitness: ['', '-32']
include:
- os: windows-latest
ext: dll
- os: ubuntu-latest
ext: so
- os: macos-latest
ext: dylib
exclude:
- os: macos-latest
ida_sdk: 74
- os: macos-latest
ida_sdk: 90
bitness: '-32'
- os: macos-latest
ida_sdk: 90sp1
bitness: '-32'
steps:
- name: Download Artefact
uses: actions/download-artifact@v4
with:
name: idaplugin-${{ matrix.os }}-${{ matrix.ida_sdk }}${{ matrix.bitness }}
- name: Release
uses: softprops/action-gh-release@v2.2.1
with:
files: ${{ matrix.ida_sdk }}-quokka_*
fail_on_unmatched_files: true