Skip to content

RzSearch refactor #23244

RzSearch refactor

RzSearch refactor #23244

Workflow file for this run

name: "Mixed linter and checks"
on:
push:
branches:
- 'master'
- 'dev'
- 'stable'
- 'container-*'
pull_request:
# Automatically cancel any previous workflow on new push.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-22.04
outputs:
yaml: ${{ steps.filter.outputs.yaml }}
clang-format: ${{ steps.filter.outputs.clang-format }}
bindgen-linter: ${{ steps.filter.outputs.bindgen-linter }}
prettier: ${{ steps.filter.outputs.prettier }}
python: ${{ steps.filter.outputs.python }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
yaml:
- '**.yml'
- '**.yaml'
- '.github/workflows/linter.yml'
bindgen-linter:
- '**.c'
- '**.h'
- '**.inc'
- '.github/workflows/linter.yml'
clang-format:
- '**.c'
- '**.h'
- '**.in'
- '**.inc'
- '.github/workflows/linter.yml'
- 'sys/clang-format.py'
- '.clang-format'
prettier:
- '**.js'
- '.github/workflows/linter.yml'
python:
- '**.py'
- '.github/workflows/linter.yml'
- '.pylintrc'
cmd_descs_yaml_check:
needs: changes
runs-on: ubuntu-22.04
if: ${{ needs.changes.outputs.yaml == 'true' }}
steps:
- uses: actions/checkout@v4
- name: Install tools
run: sudo apt-get install yamllint python3-yaml
- name: Check YamlLint
run: |
yamllint -d "{rules: {line-length: {max: 120}}}" ./librz/core/cmd_descs/*.yaml
- name: Check sync between yaml and C/H files
run: |
./librz/core/cmd_descs/cmd_descs_generate.py --output-dir /tmp ./librz/core/cmd_descs/*.yaml
diff /tmp/cmd_descs.c ./librz/core/cmd_descs/cmd_descs.c && diff /tmp/cmd_descs.h ./librz/core/cmd_descs/cmd_descs.h
bindgen-linter:
needs: changes
runs-on: ubuntu-22.04
if: ${{ needs.changes.outputs.bindgen-linter == 'true' }}
steps:
- name: Checkout rizin
uses: actions/checkout@v4
with:
path: rizin
- name: Checkout rz-bindgen
uses: actions/checkout@v4
with:
repository: rizinorg/rz-bindgen
path: rz-bindgen
- name: Install dependencies
run: |
sudo pip install meson ninja
sudo apt update
sudo apt install libclang-14-dev
- name: Build rizin
working-directory: rizin
run: |
meson setup build
ninja -C build
- name: Run rz-bindgen linter
run: |
python3 rz-bindgen/src/lint.py \
--clang-path "/usr/lib/llvm-14/lib" \
--clang-args "-resource-dir=$(clang -print-resource-dir) " \
--rizin-path rizin
clang-format:
needs: changes
runs-on: ubuntu-22.04
if: ${{ needs.changes.outputs.clang-format == 'true' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install wget, software-properties-common, lsb-release (dependencies of LLVM install script)
run: sudo apt --assume-yes install wget software-properties-common lsb-release
- name: Uninstall old conflicting packages
run: sudo apt purge --assume-yes --auto-remove llvm python3-lldb-14 llvm-14
- name: Install automatic LLVM 16
run: wget https://apt.llvm.org/llvm.sh -O /tmp/llvm-install.sh; chmod +x /tmp/llvm-install.sh; sudo /tmp/llvm-install.sh 16
- name: Install clang-format-16
run: sudo apt --assume-yes install clang-format-16
- name: Install gitpython
run: sudo pip install gitpython
- name: Run clang-format
run: |
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-16 160
clang-format --version
python sys/clang-format.py --check --verbose
prettier:
needs: changes
runs-on: ubuntu-22.04
if: ${{ needs.changes.outputs.prettier == 'true' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install prettier
run: |
sudo apt --assume-yes install npm
npm install prettier
- name: Run prettier
run: find . -name "*.js" | grep -v "bindings/node/index.js\|subprojects/tree-sitter" | xargs npx prettier --print-width 120 --check
python:
needs: changes
runs-on: ubuntu-22.04
if: ${{ needs.changes.outputs.python == 'true' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install pylint, black, isort
run: pip install pylint black isort
- name: Run black
run: |
export PATH=${HOME}/Library/Python/3.9/bin:${HOME}/Library/Python/3.10/bin:${HOME}/.local/bin:${PATH}
find . -name "*.py" | grep -v "subprojects" | xargs black --check
- name: Run pylint
run: |
export PATH=${HOME}/Library/Python/3.9/bin:${HOME}/Library/Python/3.10/bin:${HOME}/.local/bin:${PATH}
find . -name "*.py" | grep -v "subprojects" | grep -v "librz/bin/format/xnu/scripts/" | xargs -I % pylint --disable=R1737 '%'
licenses:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v1