mirror of
https://github.com/radareorg/r2ghidra.git
synced 2026-11-07 06:25:57 -10:00
344 lines
12 KiB
YAML
344 lines
12 KiB
YAML
name: ci
|
|
|
|
env:
|
|
R2V: 6.2.6
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
tags:
|
|
- '[0-9]*.*.*'
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
r2git:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Installing radare2 from git
|
|
run: ( git clone --depth=1 https://github.com/radareorg/radare2 && cd radare2 && sys/install.sh /usr )
|
|
- name: Building r2ghidra with acr
|
|
run: ./preconfigure && ./configure --prefix=/usr && make -j4 ; make user-install
|
|
- name: Testing r2ghidra oneliner on home setup
|
|
run: R2_DEBUG=1 r2 -qc 'af;pdg' /bin/ls | tee a.txt && grep entry0 a.txt
|
|
- name: System-wide installation
|
|
run: make user-uninstall && sudo make install
|
|
- name: Testing r2ghidra oneliner on system wide install
|
|
run: R2_DEBUG=1 r2 -qc 'af;pdg' /bin/ls | tee a.txt && grep entry0 a.txt
|
|
- name: Packaging r2ghidra for Debian
|
|
run: make -C dist/debian
|
|
# - name: Running Testsuite
|
|
# run: make -C test
|
|
|
|
linux-deb:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Installing radare2 from deb
|
|
run: |
|
|
wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2_${{env.R2V}}_amd64.deb
|
|
wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2-dev_${{env.R2V}}_amd64.deb
|
|
sudo dpkg -i *.deb
|
|
- name: Building r2ghidra with acr
|
|
run: ./preconfigure && ./configure --prefix=/usr && make -j4 ; make user-install
|
|
- name: Testing r2ghidra oneliner on home setup
|
|
run: R2_DEBUG=1 r2 -qc 'af;pdg' /bin/ls | tee a.txt && grep entry0 a.txt
|
|
- name: Packaging r2pm binary
|
|
run: make bindist
|
|
- name: Uploading r2pm binary
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-linux-x86-64
|
|
path: r2ghidra-*.zip
|
|
if-no-files-found: error
|
|
- name: System-wide installation
|
|
run: make user-uninstall && sudo make install
|
|
- name: Testing r2ghidra oneliner on system wide install
|
|
run: R2_DEBUG=1 r2 -qc 'af;pdg' /bin/ls | tee a.txt && grep entry0 a.txt
|
|
- name: Running testsuite
|
|
timeout-minutes: 30
|
|
run: make -C test
|
|
- name: Packaging r2ghidra for Debian using Dockcross
|
|
run: make -C dist/debian
|
|
- name: Uploading debs
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
# path: radare2/dist/debian/*/*.deb r2ghidra/dist/debian/*.deb
|
|
name: linux-deb
|
|
path: dist/debian/*.deb
|
|
- name: Precompiling the sleigh
|
|
run: make dist
|
|
- name: Uploading sleigh
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: linux-acr-ok
|
|
path: r2ghidra_sleigh-*.zip
|
|
|
|
linux-arm:
|
|
runs-on: ubuntu-24.04-arm
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Installing radare2 from deb
|
|
run: |
|
|
wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2_${{env.R2V}}_arm64.deb
|
|
wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2-dev_${{env.R2V}}_arm64.deb
|
|
sudo dpkg -i *.deb
|
|
- name: Building r2ghidra with acr
|
|
run: ./preconfigure && ./configure --prefix=/usr && make -j4 ; make user-install
|
|
- name: Testing r2ghidra oneliner on home setup
|
|
run: R2_DEBUG=1 r2 -qc 'af;pdg' /bin/ls | tee a.txt && grep entry0 a.txt
|
|
- name: Packaging r2pm binary
|
|
run: make bindist
|
|
- name: Uploading r2pm binary
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-linux-arm-64
|
|
path: r2ghidra-*.zip
|
|
if-no-files-found: error
|
|
|
|
tarball:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Large >99KB files in test/bins are not allowed
|
|
run: \[ "$(find test/bins -type f -size +99123c | wc -l)" -eq 0 \]
|
|
- name: Installing radare2 from deb
|
|
run: |
|
|
wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2_${{env.R2V}}_amd64.deb
|
|
wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2-dev_${{env.R2V}}_amd64.deb
|
|
sudo dpkg -i *.deb
|
|
rm *.deb
|
|
- name: Building tars
|
|
run: make -C dist/tarball
|
|
- name: Uploading balls
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: tarball
|
|
path: dist/tarball/r2ghidra-*
|
|
|
|
linux-asan:
|
|
if: ${{ false }} # disable for now
|
|
# The type of runner that the job will run on
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Installing radare2
|
|
# run: ( git clone --depth=1 --branch "${R2V}" https://github.com/radareorg/radare2 && cd radare2 && sys/sanitize.sh --install /usr )
|
|
run: ( git clone --depth=1 --branch "${R2V}" https://github.com/radareorg/radare2 && cd radare2 && sys/install.sh --install )
|
|
- name: Building r2ghidra with acr
|
|
run: ./preconfigure && ./configure && make asan && make -C src sleigh-build && make user-install
|
|
- name: Testing r2ghidra oneliner
|
|
run: |
|
|
r2 -qc 'af;pdg' /bin/ls | tee a.txt
|
|
grep entry0 a.txt
|
|
|
|
linux-meson:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Downloading Radare2 Debian packages
|
|
run: |
|
|
wget -O r2.deb https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2_${{env.R2V}}_amd64.deb
|
|
wget -O r2-dev.deb https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2-dev_${{env.R2V}}_amd64.deb
|
|
- name: Installing Radare2
|
|
run: sudo dpkg -i r2.deb r2-dev.deb
|
|
- name: Installing User's Meson Ninja
|
|
run: pip install ninja meson && ninja --version && meson --version
|
|
- name: Installing System's Meson Ninja
|
|
run: sudo pip install ninja meson && sudo ninja --version && sudo meson --version
|
|
- name: Building r2ghidra with meson
|
|
run: ./preconfigure && meson setup b && ninja -C b && sudo ninja -C b install
|
|
- name: Cannot test meson builds, because those cant be installed yet
|
|
run: echo nada
|
|
# - name: Testing r2ghidra oneliner
|
|
# run: |
|
|
# r2 -H
|
|
# r2 -L
|
|
# R2_DEBUG=1 r2 -qc 'af;pdg' /bin/ls | tee a.txt
|
|
# grep entry0 a.txt
|
|
|
|
macos-pkg:
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os }}
|
|
# Build each architecture natively
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- os: macos-15-intel
|
|
arch: x86_64
|
|
- os: macos-latest
|
|
arch: arm64
|
|
env:
|
|
ARCH: ${{ matrix.arch }}
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Cloning radare2
|
|
run: git clone --depth=1 --branch "${R2V}" https://github.com/radareorg/radare2
|
|
- name: Building Radare2 pkg for macOS
|
|
run: |
|
|
echo "Building radare2 for architecture: $ARCH"
|
|
make -C radare2/dist/macos ARCH=$ARCH
|
|
- name: Install radare2 Package
|
|
run: sudo installer -pkg radare2/dist/macos/*.pkg -target /
|
|
- name: Building r2ghidra with acr
|
|
run: |
|
|
./preconfigure
|
|
./configure
|
|
make -j4
|
|
make user-install
|
|
- name: Packaging r2ghidra
|
|
run: |
|
|
make -C dist/macos ARCH=$ARCH
|
|
make install DESTDIR=/tmp/r2ghidra
|
|
cd /tmp/r2ghidra
|
|
tar czvf ../r2ghidra-macos-${ARCH}.tar.gz *
|
|
- name: Testing r2ghidra
|
|
run: |
|
|
r2 -qc 'af;pdg' test/bins/rec | tee a.txt
|
|
grep csu_init a.txt
|
|
- name: Packaging r2pm binary
|
|
run: make bindist
|
|
- name: Uploading r2pm binary
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: bindist-macos-${{ env.ARCH }}
|
|
path: r2ghidra-*.zip
|
|
if-no-files-found: error
|
|
- name: Uploading artifacts
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: macos-pkg-${{ env.ARCH }}
|
|
path: dist/macos/r2ghidra-${{ env.R2V }}-macos-${{ env.ARCH }}.zip
|
|
|
|
w64:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- uses: actions/setup-python@v7
|
|
with:
|
|
python-version: 3.12.x
|
|
- name: Preparing msvc toolchain
|
|
uses: TheMrMilchmann/setup-msvc-dev@v4
|
|
with:
|
|
arch: x64
|
|
- name: dependencies
|
|
shell: bash
|
|
run: |
|
|
pip install ninja meson wget
|
|
- name: install r2
|
|
shell: bash
|
|
run: |
|
|
python -m wget https://github.com/radareorg/radare2/releases/download/${{env.R2V}}/radare2-${{env.R2V}}-w64.zip -o r2.zip
|
|
python3 -m zipfile -e r2.zip .
|
|
mv radare2-${{env.R2V}}-w64 radare2
|
|
# XXX workaround for r2-6.2.4 headers not being msvc c++ friendly (fixed in r2 master)
|
|
sed -i 's/(RStrs) { NULL, NULL }/r_strs_new (NULL, NULL)/' radare2/include/libr/r_cmd.h
|
|
pwd
|
|
- name: batmake
|
|
shell: cmd
|
|
run: |
|
|
call preconfigure.bat
|
|
call configure.bat
|
|
call make.bat
|
|
- name: Rename artifact with version
|
|
shell: bash
|
|
run: mv destdir/r2ghidra-w64.zip destdir/r2ghidra-${{env.R2V}}-w64.zip
|
|
- uses: actions/upload-artifact@v7
|
|
with:
|
|
name: w64
|
|
path: destdir/r2ghidra-${{env.R2V}}-w64.zip
|
|
|
|
check_release:
|
|
# Run on tag pushes; filter tags starting with a digit in the release step
|
|
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
|
|
outputs:
|
|
is_release: ${{ steps.release.outputs.is }}
|
|
tag_name: ${{ steps.release.outputs.tag }}
|
|
needs:
|
|
- linux-deb
|
|
- linux-arm
|
|
- macos-pkg
|
|
- tarball
|
|
- w64
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0 # Download all git history and tags
|
|
- name: Check if is a release
|
|
run: git describe --exact-match --tags ${{ github.sha }} | awk 'BEGIN{tag="-";r="no"}/^[0-9]+\.[0-9]+/{tag=$0;r="yes"};END{print "is="r;print "tag="tag}' >> ${GITHUB_OUTPUT}
|
|
id: release
|
|
release:
|
|
# Only create a release for numeric tags that passed check_release
|
|
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && needs.check_release.outputs.is_release == 'yes' }}
|
|
needs:
|
|
- check_release
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0 # Download all git history and tags
|
|
- name: Extract r2g version
|
|
run: echo "branch=`./configure -qV`" >> $GITHUB_OUTPUT
|
|
id: r2gv
|
|
- name: Prepare release notes
|
|
run: echo Release > ./RELEASE_NOTES.md
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
path: dist/artifacts
|
|
- name: Packaging r2pm Windows binary
|
|
run: |
|
|
V=${{ steps.r2gv.outputs.branch }}
|
|
mkdir -p w64/plugins
|
|
unzip -q dist/artifacts/w64/r2ghidra-$V-w64.zip -d w64/plugins
|
|
unzip -q dist/artifacts/linux-acr-ok/r2ghidra_sleigh-$V.zip -d w64/plugins
|
|
mv w64/plugins/r2ghidra_sleigh-$V w64/plugins/r2ghidra_sleigh
|
|
cd w64 && zip -qr ../dist/artifacts/r2ghidra-$V-windows-x86-64.zip plugins
|
|
- name: Create GitHub release and upload assets
|
|
uses: softprops/action-gh-release@v3
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ needs.check_release.outputs.tag_name }}
|
|
name: ${{ steps.r2gv.outputs.branch }}
|
|
body_path: ./RELEASE_NOTES.md
|
|
draft: false
|
|
prerelease: false
|
|
files: |
|
|
dist/artifacts/linux-deb/r2ghidra_${{ steps.r2gv.outputs.branch }}_amd64.deb
|
|
dist/artifacts/macos-pkg-x86_64/r2ghidra-${{ steps.r2gv.outputs.branch }}-macos-x86_64.zip
|
|
dist/artifacts/macos-pkg-arm64/r2ghidra-${{ steps.r2gv.outputs.branch }}-macos-arm64.zip
|
|
dist/artifacts/w64/r2ghidra-${{ steps.r2gv.outputs.branch }}-w64.zip
|
|
dist/artifacts/tarball/r2ghidra-${{ steps.r2gv.outputs.branch }}.zip
|
|
dist/artifacts/tarball/r2ghidra-${{ steps.r2gv.outputs.branch }}.tar.xz
|
|
dist/artifacts/linux-acr-ok/r2ghidra_sleigh-${{ steps.r2gv.outputs.branch }}.zip
|
|
dist/artifacts/bindist-*/r2ghidra-${{ steps.r2gv.outputs.branch }}-*.zip
|
|
dist/artifacts/r2ghidra-${{ steps.r2gv.outputs.branch }}-windows-x86-64.zip
|