diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e7b8d1f..fbf429bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ name: iaito CI env: - R2V: 5.8.4 + R2V: 5.8.6 on: push: @@ -188,13 +188,13 @@ jobs: run: | pip install ninja meson wget choco install zip -# - 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 -# unzip r2.zip -# mv radare2-${{env.R2V}}-w64 radare2 -# pwd + - 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 + unzip r2.zip + mv radare2-${{env.R2V}}-w64 radare2 + pwd - name: w64-make shell: cmd run: | @@ -247,14 +247,16 @@ jobs: with: fetch-depth: 0 # Download all git history and tags - name: Extract version - run: echo "branch=`./configure -qV`" >> $GITHUB_OUTPUT + run: echo "string=`./configure -qV`" >> $GITHUB_OUTPUT id: version - name: Prepare release notes - run: echo Release > ./RELEASE_NOTES.md + run: ./scripts/release-notes.sh | tee ./RELEASE_NOTES.md - name: Download artifacts uses: actions/download-artifact@v2 with: path: dist/artifacts + - name: Display structure of downloaded files + run: ls -R - name: Create GitHub release id: create_release uses: actions/create-release@v1 @@ -262,40 +264,46 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ needs.check_release.outputs.tag_name }} - release_name: ${{ steps.version.outputs.branch }} + release_name: ${{ steps.version.outputs.string }} body_path: ./RELEASE_NOTES.md draft: false prerelease: false - publish: - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && needs.check_release.outputs.is_release == 'yes' }} - needs: - - release - runs-on: ubuntu-latest - steps: + - name: Prepare release notes + run: ./scripts/release-notes.sh | tee ./RELEASE_NOTES.md - name: Upload Linux asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: dist/artifacts/linux-acr/iaito-amd64.deb - asset_name: iaito_${{ steps.version.outputs.branch }}_amd64.deb + asset_path: dist/artifacts/iaito-amd64.deb/iaito-amd64.deb + asset_name: iaito_${{ steps.version.outputs.string }}_amd64.deb asset_content_type: application/vnd.debian.binary-package - - name: Upload macOS asset (BROKEN) + - name: Upload macOS asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: dist/artifacts/acr-macos/iaito-${{ steps.version.outputs.branch }}-macos.zip - asset_name: iaito-${{ steps.version.outputs.branch }}-macos.zip +#asset_path: dist/artifacts/acr-macos/iaito-${{ steps.version.outputs.string }}-macos.zip + asset_path: dist/artifacts/iaito.zip/iaito.zip + asset_name: iaito-${{ steps.version.outputs.string }}-macos.zip asset_content_type: application/zip - - name: Upload Windows asset (BROKEN) +# - name: Upload Windows asset +# uses: actions/upload-release-asset@v1 +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# with: +# upload_url: ${{ steps.create_release.outputs.upload_url }} +# asset_path: dist/artifacts/iaito.zip +# asset_name: iaito-${{ steps.version.outputs.string }}-w64.zip +# asset_content_type: application/zip + - name: Upload Windows executable uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: dist/artifacts/w64-meson/iaito-${{ steps.version.outputs.branch }}-w64.zip - asset_name: iaito-${{ steps.version.outputs.branch }}-w64.zip + asset_path: dist/artifacts/iaito.exe/iaito.exe + asset_name: iaito-${{ steps.version.outputs.string }}.exe asset_content_type: application/zip diff --git a/README.md b/README.md index d6a5d429..f9117a1d 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,12 @@ iaito is the official graphical interface for radare2, a libre reverse engineering framework. +* Requires radare2 and Qt-5/6 * Iaito was the original name of this GUI before being forked as Cutter. -* It's written in Qt/C++ (qt5 for now). No Qt6 support yet (contribs are welcome) -* Support latest versions, plugins and features of radare2 * Use r2 plugins (f.ex: no need for r2ghidra-iaito plugin if r2ghidra is installed) -* Focus on parity of commands, keybindings and r2-style workflows. -* Translations are community [contributed](https://crowdin.com/project/iaito)! -* Aims to support all the features from the core, not just disassembler-based ones +* Focus on simplicity, parity with commands, keybindings and r2-style workflows. +* Help with translations [contributed](https://crowdin.com/project/iaito)! +* Aims to cover other radare2 features, not just a disassembler * forensics, networking, bindiffing, solvers, ... [![Crowdin](https://badges.crowdin.net/iaito/localized.svg)](https://crowdin.com/project/iaito) @@ -19,43 +18,37 @@ iaito is the official graphical interface for radare2, a libre reverse engineeri ![Screenshot](https://raw.githubusercontent.com/radareorg/iaito/master/screenshot.png) -## Installation +## Help -There are automated CI builds and [releases](https://github.com/radareorg/iaito/releases) of iaito for Linux, macOS and Windows. +Get help, updates, meet the community or discuss about development in these channels: -Download on Flathub +- **Telegram:** https://t.me/radare +- **IRC:** #radare on irc.freenode.net +- **Twitter:** [@radareorg](https://twitter.com/radareorg) -### Translations +## Installation -Note: The flatpak/flathub version already ships the translations as an optional extension. +There are automated CI builds and [releases](https://github.com/radareorg/iaito/releases) of iaito for Linux, macOS and Windows. -To install translations please download latest version from [iaito-translations](https://github.com/radareorg/iaito-translations) repo. - -To install in your home directory, run the following: +On WSL or Linux you can use these steps to install it with Flatpak: ```sh -$ git clone https://github.com/radareorg/iaito-translations.git -$ cd iaito-translations -$ make user-install +sudo flatpak remote-add flathub https://dl.flathub.org/repo/flathub.flatpakrepo +sudo flatpak install flathub org.radare.iaito +export QT_QPA_PLATFORM=wayland # only mandatory on windows +flatpak run org.radare.iaito ``` -Alternatively, it this project makefile can be used to install them: - -```sh -$ make user-install-translations -OR -$ make install-translations # to install to system -``` +Download on Flathub ## Source Builds ### Dependencies -iaito requires [radare2](https://github.com/radareorg/radare2) and qt5: +iaito requires [radare2](https://github.com/radareorg/radare2) and qt5 (or qt6): ```sh -$ git clone https://github.com/radareorg/radare2 -$ radare2/sys/install.sh +$ git clone https://github.com/radareorg/radare2 && radare2/sys/install.sh ``` Install QT on macOS like this: @@ -72,7 +65,7 @@ sudo apt install qttools5-dev qttools5-dev-tools qtbase5-dev qtchooser qt5-qmake ``` -## Building from sources +### Compilation ```sh ./configure @@ -86,10 +79,25 @@ To install the app in your home: make install ``` -## Help +### Translations (Optional) -Get help, updates, meet the community or discuss about development in these channels: +Note: The flatpak/flathub version already ships the translations as an optional extension. + +To install translations please download latest version from [iaito-translations](https://github.com/radareorg/iaito-translations) repo. + +To install in your home directory, run the following: + +```sh +$ git clone https://github.com/radareorg/iaito-translations.git +$ cd iaito-translations +$ make user-install +``` + +Alternatively, it this project makefile can be used to install them: + +```sh +$ make user-install-translations +OR +$ make install-translations # to install to system +``` -- **Telegram:** https://t.me/radare -- **IRC:** #radare on irc.freenode.net -- **Twitter:** [@radareorg](https://twitter.com/radareorg) diff --git a/configure b/configure index 33a28ff9..3c4b1f19 100755 --- a/configure +++ b/configure @@ -112,12 +112,12 @@ done : ${INSTALL_PROGRAM_STRIP:=${INSTALL} -m 755 -s} : ${INSTALL_MAN:=${INSTALL} -m 444} : ${INSTALL_LIB:=${INSTALL} -m 755 -c} - PKGNAME='iaito' ; VERSION='5.8.4' ; VERSION_MAJOR=5; VERSION_MINOR=8; VERSION_PATCH=4; VERSION_NUMBER=50804; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake " ; + PKGNAME='iaito' ; VERSION='5.8.6' ; VERSION_MAJOR=5; VERSION_MINOR=8; VERSION_PATCH=6; VERSION_NUMBER=50806; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake " ; } show_usage() { cat <." exit 0 @@ -221,7 +221,7 @@ case $flag in show_version ; ;; -r|--r|--report) echo "PKGNAME: iaito" -echo "VERSION: 5.8.4" +echo "VERSION: 5.8.6" echo "AUTHOR: pancake" echo "EMAIL: pancake@nopcode.org" echo "LANGS: c++" diff --git a/configure.acr b/configure.acr index 3ce5ac49..32028848 100644 --- a/configure.acr +++ b/configure.acr @@ -1,5 +1,5 @@ PKGNAME iaito -VERSION 5.8.4 +VERSION 5.8.6 CONTACT pancake ; pancake@nopcode.org LANG_CXX! diff --git a/scripts/get_version.py b/scripts/get_version.py old mode 100644 new mode 100755 index de0f980f..ddd1b6fd --- a/scripts/get_version.py +++ b/scripts/get_version.py @@ -1,4 +1,4 @@ - +#!/usr/bin/env python3 import os import re diff --git a/scripts/meson_configure_qmake_in.py b/scripts/meson_configure_qmake_in.py old mode 100644 new mode 100755 index f74f0de5..dc92b420 --- a/scripts/meson_configure_qmake_in.py +++ b/scripts/meson_configure_qmake_in.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import sys import re diff --git a/scripts/meson_parse_qmake.py b/scripts/meson_parse_qmake.py index 01d00d42..753ab6ad 100644 --- a/scripts/meson_parse_qmake.py +++ b/scripts/meson_parse_qmake.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + import os import sys diff --git a/scripts/release-notes.sh b/scripts/release-notes.sh new file mode 100755 index 00000000..259cf91a --- /dev/null +++ b/scripts/release-notes.sh @@ -0,0 +1,92 @@ +#!/bin/sh +# +# This script parses the commit messages between the last 2 git tags +# if the last commit contains the word "Release", otherwise it shows +# all the changes between the last tag and HEAD. +# +# Commits are grouped in different sections specified in the commit +# message with the middle-dot character '·'. The section names are +# arbitrary and we may be careful to use them properly but having +# in mind that this may change. +# +# Commits without any middle·dot in the message are discarted and +# displayed in the "to review" section. +# +# The tool prints Markdown, no plans to support other formats. +# +# Usage: sys/release-notes.sh 4.5.1 # from HEAD to 4.5.1 +# $ sys/release-notes.sh 4.5.1 -v # same as above but include untagged commits +# $ sys/release-notes.sh 4.5.0 4.5.1 # from 4.5.0 to 4.5.1 +# +# --pancake + +if [ -n "`git log -n 1 | grep Release`" ]; then + VERS=`git tag --sort=committerdate | grep -v conti | tail -n 1` + PREV=`git tag --sort=committerdate | grep -v conti | tail -n 2 | head -n1` +else + VERS=HEAD + PREV=`git tag --sort=committerdate | grep -v conti | tail -n 1` +fi + +[ -n "$1" ] && PREV="$1" +[ -n "$2" ] && VERS="$2" + +git log ${PREV}..${VERS} > .l +# When HEAD contains a tag do this magic +if [ ! -s .l ]; then + VERS=$PREV + PREV=`git tag --sort=committerdate | grep -v conti | tail -n 2 | head -n1` + git log ${PREV}..${VERS} > .l +fi +grep ^Author .l | cut -d : -f 2- | sed -e 's,radare,pancake,' | sort -u > .A + +echo "## Release Notes" +echo +echo "Version: ${VERS}" +echo "Previous: ${PREV}" +printf "Commits: " +grep ^commit .l | wc -l | xargs echo +echo "Contributors: `wc -l .A | awk '{print $1}'`" +echo +echo "## Flatpak Installation (WSL / Linux)" +echo +echo "\`\`\`sh" +echo "sudo flatpak remote-add flathub https://dl.flathub.org/repo/flathub.flatpakrepo" +echo "sudo flatpak install flathub org.radare.iaito" +echo "export QT_QPA_PLATFORM=wayland # only mandatory on windows" +echo "flatpak run org.radare.iaito" +echo "\`\`\`" +echo +echo "## Source Installation" +echo +echo "\`\`\`sh" +echo "curl -sL https://github.com/radareorg/radare2/releases/download/${VERS}/radare2-${VERS}.tar.xz | tar xzv" +echo "radare2-${VERS}/sys/install.sh" +echo "\`\`\`" +echo +echo "## Highlights" + +echo "
More details

" +echo +echo "## Authors" +echo +cat .A | perl -ne '/([^<]+)(.*)$/;$a=$1;$b=$2;$a=~s/^\s+|\s+$//g;$b=~s/[<>\s]//g;print "[$a](mailto:$b) "' +echo +echo + +cat .x | grep -v '##' | sed -e 's,^ *,,g' | grep -v "^$" | \ + perl -ne 'if (/^\*/) { print "$_"; } else { print "* $_";}' + +# echo "## Changes" +# echo +# cat .l | grep -v ^commit | grep -v ^Author | grep -v ^Date > .x +# cat .x | grep '##' | perl -ne '/##([^ ]*)/; if ($1) {print "$1\n";}' | sort -u > .y +# for a in `cat .y` ; do +# echo "**$a**" +# echo +# cat .x | grep "##$a" | sed -e 's/##.*//g' | perl -ne '{ s/^\s+//; print "* $_"; }' +# echo +# done +# rm -f .x .y .l .A + +echo '

' diff --git a/src/Iaito.pro b/src/Iaito.pro index 814bb8e8..3c9c1040 100644 --- a/src/Iaito.pro +++ b/src/Iaito.pro @@ -4,7 +4,7 @@ TARGET = iaito IAITO_VERSION_MAJOR = 5 IAITO_VERSION_MINOR = 8 -IAITO_VERSION_PATCH = 4 +IAITO_VERSION_PATCH = 6 CONFIG+=app_bundle LIBS+= -dead_strip diff --git a/src/org.radare.iaito.appdata.xml b/src/org.radare.iaito.appdata.xml index eb2c4fd2..a0a9deee 100644 --- a/src/org.radare.iaito.appdata.xml +++ b/src/org.radare.iaito.appdata.xml @@ -24,6 +24,14 @@ pancake radare2 + + +

Build fixes

+

Disable debugger projects

+

Better qt6 support

+

File selection is required to fix a crash

+
+

Complete port to Qt6