Fix null derefs in the RBin.io plugin ##bin #13589
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 | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
jobs: | |
# WASI | |
linux-wasi: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Installing with symlinks | |
run: sys/wasi.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: linux-wasi | |
path: radare2-*-wasi.zip | |
# WASI API | |
linux-wasi-api: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Installing with symlinks | |
run: sys/wasi-api.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: linux-wasi-api | |
path: radare2-*-wasi-api.zip | |
# capstone-next | |
linux-csnext: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Installing with symlinks | |
run: | | |
cp -f dist/plugins-cfg/plugins.cs6.cfg plugins.cfg | |
./configure-plugins | |
sys/install.sh --with-capstone-next | |
linux-ssl-crypto: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Installing with ssl crypto | |
run: | | |
sys/install.sh --with-ssl-crypto | |
# Source Tarballs | |
tarball: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Creating zip and tarball | |
run: sys/tarball.sh | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: tarball | |
path: radare2-?.?.?.* | |
# Linux | |
linux-static: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Installing the musl runtime | |
run: | | |
sudo apt update --assume-yes | |
sudo apt install --assume-yes musl-tools | |
- name: Building static r2 with acr | |
run: | | |
cp -f dist/plugins-cfg/plugins.static.nogpl.cfg plugins.cfg | |
NOLTO=1 sys/static.sh | |
# NOLTO=1 sys/static.sh | |
make -C binr/blob | |
tar cJvf radare2-${{ steps.r2v.outputs.branch }}-static.tar.xz r2-static | |
- name: Pub | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-static | |
path: radare2-*-static.tar.xz | |
linux-acr-rpm-64: | |
# if: contains(github.ref, 'master') || contains(github.ref, 'ci-') | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Packaging for RPM | |
run: make -C dist/rpm | |
- name: Pub | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-acr-rpm-64 | |
path: dist/rpm/*.rpm | |
linux-acr-deb: | |
# if: contains(github.ref, 'master') || contains(github.ref, 'ci-') | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- amd64 | |
- arm64 | |
- i386 | |
include: | |
- arch: arm64 | |
gcc: aarch64-linux-gnu | |
- arch: i386 | |
gcc: multilib | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- if: ${{ matrix.gcc }} | |
name: Installing crosscompiler | |
run: | | |
sudo apt update --assume-yes | |
sudo apt install --assume-yes gcc-${{ matrix.gcc }} gperf | |
- name: Packaging for Debian | |
run: | | |
gcc -v | |
sys/debian.sh ${{ matrix.arch }} | |
mv -v dist/debian/*/radare2*.deb . | |
- name: Pub | |
uses: actions/upload-artifact@v4 | |
with: | |
name: linux-acr-deb-${{ matrix.arch }} | |
path: radare2*.deb | |
## RPM PACKAGES DISABLED | |
# linux-meson-rpm: | |
# runs-on: ubuntu:20.04 | |
# container: centos:8 | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v4 | |
# - name: Prepare Skeleton | |
# run: | | |
# mkdir -p SOURCES SPECS | |
# cp -f dist/rpm/*spec SPECS | |
# wget -O https://github.com/radareorg/radare2/archive/master/radare2-5.1.0-git.tar.gz | |
# - name: rpmbuild | |
# uses: robertdebock/rpmbuild-action@1.1.1 | |
# - name: Organize artifacts | |
# run: mv -v RPMS/*/*.rpm dist/rpm/*.rpm . | |
# - name: Pub | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: linux-meson-rpm | |
# path: *.rpm | |
# | |
# centos-meson-rpm: | |
# runs-on: ubuntu:20.04 | |
# container: centos:8 | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v4 | |
# - name: Install tools for CentOS:8 | |
# run: | | |
# yum install -y patch unzip git gcc make python38 python38-pip rpm-build rpmdevtools wget | |
# pip3.8 install meson ninja r2pipe | |
# - name: Building with Meson | |
# run: | | |
# meson build | |
# ninja -C build | |
# ninja -C build install | |
# - name: RPM Packaging | |
# run: | | |
# cp -f dist/rpm/radare2.spec . | |
# rpmdev-setuptree | |
# mkdir -p rpmbuild/SOURCES | |
# cd rpmbuild/SOURCES | |
# wget https://github.com/radareorg/radare2/archive/5860c3efc12d4b75e72bdce4b1d3834599620913/radare2-5.1.0-git.tar.gz | |
# cd - | |
# rpmbuild -ba radare2.spec | |
# mv -v rpmbuild/RPMS/*/*.rpm . | |
# - name: Pub | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: centos-meson-rpm | |
# path: *.rpm | |
# | |
# macOS | |
macos-acr: | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- arm64 | |
- x86_64 | |
runs-on: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install pkg-config with Homebrew | |
run: brew install pkg-config | |
- name: Packaging | |
env: | |
ARCHFLAGS: '-arch ${{ matrix.arch }}' | |
CC: gcc -arch ${{ matrix.arch }} | |
run: make -C dist/macos | |
- name: Pub | |
uses: actions/upload-artifact@v4 | |
with: | |
path: dist/macos/*.pkg | |
name: macos-acr-${{ matrix.arch }} | |
ios: | |
if: contains(github.ref, 'master') || contains(github.ref, 'ci-') | |
strategy: | |
fail-fast: false | |
matrix: | |
type: | |
- cydia | |
- cydia32 | |
include: | |
- type: cydia | |
sdk: true | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install pkg-config/ldid2 with Homebrew | |
run: brew install pkg-config ldid | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Create ${{ matrix.type }} package | |
run: ./sys/ios-${{ matrix.type }}.sh | |
- if: ${{ matrix.sdk }} | |
name: Create iOS SDK | |
run: | | |
./sys/ios-sdk.sh | |
pushd /tmp/r2ios | |
zip -r /tmp/r2ios-sdk.zip * | |
popd | |
mv /tmp/r2ios-sdk.zip dist/cydia/radare2/r2ios-sdk-${{ steps.r2v.outputs.branch }}.zip | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ios-${{ matrix.type }} | |
path: | | |
./dist/cydia/radare2/r2ios-sdk-*.zip | |
./dist/cydia/radare2/*.deb | |
# Android | |
android-acr: | |
if: contains(github.ref, 'master') || contains(github.ref, 'ci-') | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- aarch64 | |
- arm | |
include: # Force API 16 only for ARM (32 bits) | |
- arch: arm | |
api: 16 | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get --assume-yes update | |
sudo apt-get --assume-yes install pax wget gperf cabextract unzip python3-wheel python3-setuptools python3-pip | |
sudo pip3 install --user meson ninja --break-system-packages | |
- name: Compile with acr | |
run: | | |
sys/android-ndk-install.sh "${{ matrix.api }}" "${{ matrix.arch }}" | |
sys/android-build.sh "${{ matrix.arch }}" | |
ls -l | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: android-acr-${{ matrix.arch }} | |
path: radare2*android*${{ matrix.arch }}.tar.gz | |
# disabled because the ndk link is broken for a while | |
android-meson: | |
if: contains(github.ref, 'android') | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: | |
- x86_64 | |
# - aarch64 | |
# - arm | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get --assume-yes update | |
sudo apt-get --assume-yes install pax wget cabextract unzip python3-wheel python3-setuptools python3-pip | |
sudo pip3 install --user meson ninja --break-system-packages | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Compile with meson | |
run: | | |
export PATH=${HOME}/.local/bin:${PATH} | |
CFLAGS="-static" LDFLAGS="-static" meson --buildtype release --default-library static --prefix=/tmp/android-dir -Dblob=true build --cross-file .github/meson-android-${{ matrix.arch }}.ini | |
ninja -C build && ninja -C build install | |
- name: Create radare2-${{ steps.r2v.outputs.branch }}-android-${{ matrix.arch }}.tar.gz | |
run: | | |
cd /tmp | |
rm -rf android-dir/include android-dir/lib | |
tar --transform 's/android-dir/data\/data\/org.radareorg.radare2installer/g' -czvf radare2-${{ steps.r2v.outputs.branch }}-android-${{ matrix.arch }}.tar.gz android-dir/ | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: android-meson-${{ matrix.arch }} | |
path: /tmp/radare2-${{ steps.r2v.outputs.branch }}-android-${{ matrix.arch }}.tar.gz | |
# Windows | |
w32-meson: | |
runs-on: windows-2019 | |
steps: | |
- name: Win configure Pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 16GB | |
maximum-size: 16GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
pip install meson ninja r2pipe wget --break-system-packages | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Build with meson + ninja | |
shell: pwsh | |
run: | | |
.github\vsdevenv.ps1 | |
meson --buildtype=release --prefix=$PWD\radare2-${{ steps.r2v.outputs.branch }}-w32 -Dc_std=c11 build | |
ninja -C build -j1 install | |
- name: Create zip artifact | |
run: 7z a radare2-${{ steps.r2v.outputs.branch }}-w32.zip $PWD\radare2-${{ steps.r2v.outputs.branch }}-w32 | |
# - uses: actions/checkout@v4 | |
# with: | |
# repository: radareorg/radare2-win-installer | |
# path: ./radare2-win-installer | |
# - name: Create installer | |
# shell: pwsh | |
# run: iscc radare2-win-installer\radare2.iss /DRadare2Location=..\radare2-install\* /DLicenseLocation=..\COPYING.LESSER /DIcoLocation=radare2.ico /DMyAppVersion=${{ steps.r2v.outputs.branch }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: w32-meson | |
path: | | |
radare2-${{ steps.r2v.outputs.branch }}-w32.zip | |
# radare2-win-installer\Output\radare2.exe | |
w64-static-2022: | |
runs-on: windows-2022 | |
steps: | |
- name: Win configure Pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 16GB | |
maximum-size: 16GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Preparing nmake | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: Install dependencies | |
run: | | |
pip install meson ninja r2pipe wget r2env --break-system-packages | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: preconfigure | |
continue-on-error: true | |
shell: cmd | |
run: preconfigure | |
- name: Build with meson + ninja | |
shell: cmd | |
run: | | |
call configure static | |
call make | |
- name: Test executable | |
continue-on-error: true | |
shell: cmd | |
run: | | |
cd prefix\bin | |
r2blob -v | |
- name: Zipping Executable | |
shell: cmd | |
run: | | |
cd prefix\bin | |
dir | |
7z a r2blob-${{ steps.r2v.outputs.branch }}-w64-2022.zip r2blob.static.exe | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: w64-static-2022 | |
path: prefix\bin\r2blob-${{ steps.r2v.outputs.branch }}-w64-2022.zip | |
w64-static: | |
runs-on: windows-2019 | |
steps: | |
- name: Win configure Pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 16GB | |
maximum-size: 16GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Preparing nmake | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: Install dependencies | |
run: | | |
pip install meson ninja r2pipe wget r2env --break-system-packages | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Build with meson + ninja | |
shell: cmd | |
run: | | |
REM preconfigure | |
call configure static | |
call make | |
- name: Test executable | |
continue-on-error: true | |
shell: cmd | |
run: | | |
cd prefix\bin | |
r2blob -v | |
- name: Zipping Executable | |
shell: cmd | |
run: | | |
cd prefix\bin | |
dir | |
7z a r2blob-${{ steps.r2v.outputs.branch }}-w64.zip r2blob.static.exe | |
- uses: actions/upload-artifact@v4 | |
continue-on-error: true | |
with: | |
name: w64-static | |
path: prefix\bin\r2blob-${{ steps.r2v.outputs.branch }}-w64.zip | |
w64-meson: | |
runs-on: windows-2019 | |
steps: | |
- name: Win configure Pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 16GB | |
maximum-size: 16GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Preparing nmake | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: Install dependencies | |
run: | | |
pip install meson ninja r2pipe wget --break-system-packages | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Build with meson + ninja | |
shell: pwsh | |
run: | | |
# cmd '/c call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" "x86_64"' | |
bash sys/source_bat.bash 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat' "x86_64" | |
# meson_options: --default-library=shared|static -Dstatic_runtime=true --backend vs2019 | |
meson --buildtype=release --prefix=$PWD\radare2-${{ steps.r2v.outputs.branch }}-w64 -Dc_std=c11 build | |
ninja -C build -j 1 | |
ninja -C build install | |
- name: Create zip artifact | |
run: 7z a radare2-${{ steps.r2v.outputs.branch }}-w64.zip $PWD\radare2-${{ steps.r2v.outputs.branch }}-w64 | |
# - uses: actions/checkout@v4 | |
# with: | |
# repository: radareorg/radare2-win-installer | |
# path: ./radare2-win-installer | |
# - name: Create installer | |
# shell: pwsh | |
# run: iscc radare2-win-installer\radare2.iss /DRadare2Location=..\radare2-install\* /DLicenseLocation=..\COPYING.LESSER /DIcoLocation=radare2.ico /DMyAppVersion=${{ steps.r2v.outputs.branch }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: w64-meson | |
path: | | |
radare2-${{ steps.r2v.outputs.branch }}-w64.zip | |
# radare2-win-installer\Output\radare2.exe | |
msys2-w64-meson: | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: [MINGW64, UCRT64] | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{ matrix.sys }} | |
update: true | |
install: base-devel git | |
pacboy: >- | |
cc:p | |
meson:p | |
ninja:p | |
- name: Configure Build | |
shell: msys2 {0} | |
run: | | |
prefix=$(case "${{ matrix.sys }}" in | |
MINGW64) echo /mingw64 ;; | |
UCRT64) echo /ucrt64 ;; | |
esac) | |
meson setup build --prefix=$prefix | |
- name: Compile Project | |
shell: msys2 {0} | |
run: meson compile -C build | |
# FreeBSD | |
# freebsd: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Extract r2 version | |
# shell: bash | |
# run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
# id: r2v | |
# - name: Build r2 in FreeBSD | |
# id: build | |
# uses: vmactions/freebsd-vm@v1 | |
# with: | |
# usesh: true | |
# prepare: pkg install -y curl gmake patch git python gawk | |
# run: | | |
# cd work || true | |
# pwd | |
# ls -lah | |
# whoami | |
# env | |
# freebsd-version | |
# echo DATE: ; date | |
# pip install r2pipe | |
# sys/install.sh | |
# gmake install DESTDIR=/tmp/prefix | |
# (cd /tmp/prefix ; tar czvf /tmp/radare2-freebsd.tgz *) | |
# r2r test/db/cmd | |
# rm -rf * .git* | |
# cp /tmp/radare2-freebsd.tgz radare2-${{ steps.r2v.outputs.branch }}-freebsd.tgz | |
# echo DATE: ; date | |
# - uses: actions/upload-artifact@v4 | |
# with: | |
# name: freebsd | |
# path: radare2-*-freebsd.tgz | |
check_abi_compatibility: | |
if: contains(github.ref, 'de345ee04d0777b462f2f98ac383c883') | |
needs: | |
- linux-static | |
runs-on: ubuntu-24.04 | |
defaults: | |
run: | |
shell: bash | |
working-directory: /tmp | |
steps: | |
- name: Install dependencies | |
run: | | |
# sudo apt install --assume-yes abigail-tools wget | |
# ubuntu-latest is TOO OLD and it ships abigail 2.0 which is known to be buggy | |
wget https://ftp.fau.de/debian/pool/main/liba/libabigail/libabigail0_2.2-2_amd64.deb | |
sudo dpkg -i libabigail0_2.2-2_amd64.deb | |
wget https://ftp.fau.de/debian/pool/main/liba/libabigail/libabigail-dev_2.2-2_amd64.deb | |
sudo dpkg -i libabigail-dev_2.2-2_amd64.deb | |
wget https://ftp.fau.de/debian/pool/main/liba/libabigail/abigail-tools_2.2-2_amd64.deb | |
sudo dpkg -i abigail-tools_2.2-2_amd64.deb | |
- name: Download Build | |
uses: actions/download-artifact@v4 | |
with: | |
name: linux-static | |
path: /tmp | |
- name: Download latest release | |
run: | | |
DOWNLOAD_URL=$(curl -s \ | |
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ | |
https://api.github.com/repos/radareorg/radare2/releases/latest \ | |
| jq -r '.assets[] | select(.name | startswith("radare2")) | select(.name | endswith("static.tar.xz")) | .browser_download_url') | |
wget -O r2-static-latest.tar.xz $DOWNLOAD_URL | |
- name: Untar | |
run: | | |
mkdir r2-static | |
tar -xvf radare2-*-static.tar.xz -C r2-static --strip-components=1 | |
mkdir r2-static-latest | |
tar -xvf r2-static-latest.tar.xz -C r2-static-latest --strip-components=1 | |
- name: ABI compatibility check | |
run: | | |
A=abidiff.conf | |
echo '[suppress_function]' > $A | |
echo 'name_regexp = .*java.*' >> $A | |
echo '[suppress_function]' >> $A | |
echo 'name_not_regexp = ^r_.*' >> $A | |
echo '[suppress_function]' >> $A | |
echo 'name_regexp = r_bin_add_import' >> $A | |
echo '[suppress_variable]' >> $A | |
echo 'name_not_regexp = ^r_.*' >> $A | |
for lib in r2-static-latest/usr/lib/libr_*.so; do | |
echo $lib ; abidiff --suppr $A ${lib} r2-static/usr/lib/$(basename ${lib}); | |
done | |
# Release creation | |
check_release: | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
outputs: | |
is_release: ${{ steps.release.outputs.is }} | |
tag_name: ${{ steps.release.outputs.tag }} | |
needs: | |
- linux-wasi | |
- tarball | |
- linux-static | |
# - linux-acr-rpm-64 | |
- linux-acr-deb | |
- macos-acr | |
- ios | |
- android-acr | |
# - android-meson | |
- w32-meson | |
- w64-meson | |
- w64-static | |
# - freebsd | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Download all git history and tags | |
- name: Check if is a release | |
run: | | |
TAG="`git describe --exact-match --tags ${{ github.sha }} || true`" | |
if [ -n "$TAG" ]; then | |
echo "tag=$TAG" >> $GITHUB_OUTPUT | |
echo "is=yes" >> $GITHUB_OUTPUT | |
else | |
echo "is=no" >> $GITHUB_OUTPUT | |
fi | |
id: release | |
release: | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.check_release.outputs.is_release == 'yes' }} | |
needs: | |
- check_release | |
runs-on: ubuntu-24.04 | |
env: | |
ASSET_FILES: | | |
dist/artifacts/tarball/*.tar.xz | |
dist/artifacts/linux-acr-deb-*/radare2_*.deb | |
dist/artifacts/w64-meson/*.zip | |
dist/artifacts/w32-meson/*.zip | |
dist/artifacts/macos-acr-*/*.pkg | |
dist/artifacts/ios-cydia/*.deb | |
dist/artifacts/ios-cydia32/*.deb | |
dist/artifacts/ios-cydia/r2ios-sdk-*.zip | |
dist/artifacts/android-acr-*/*.tar.gz | |
dist/artifacts/linux-static/*.tar.xz | |
dist/artifacts/linux-acr-deb-*/radare2-dev_*.deb | |
dist/artifacts/linux-wasi/*.zip | |
dist/artifacts/linux-wasi-api/*.zip | |
dist/artifacts/w64-static/*.zip | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Download all git history and tags | |
- name: Extract r2 version | |
shell: bash | |
run: echo "branch=`sys/version.py -n`" >> $GITHUB_OUTPUT | |
id: r2v | |
- name: Prepare release notes | |
run: ./sys/release-notes.sh | tee ./RELEASE_NOTES.md | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: dist/artifacts | |
- name: Generate checksums | |
run: sha256sum $ASSET_FILES | awk '{sub(".*/", "", $2); print $1" "$2}' > checksums.txt | |
- name: Create GitHub release | |
id: create_release | |
uses: softprops/action-gh-release@975c1b265e11dd76618af1c374e7981f9a6ff44a | |
with: | |
name: ${{ steps.r2v.outputs.branch }} | |
tag_name: ${{ needs.check_release.outputs.tag_name }} | |
body_path: ./RELEASE_NOTES.md | |
draft: false | |
prerelease: false | |
generate_release_notes: false | |
files: | | |
${{ env.ASSET_FILES }} | |
checksums.txt |