Skip to content

Commit

Permalink
Refactor CI into seperate path-specific workflows (#174)
Browse files Browse the repository at this point in the history
* Refactor CI into seperate path-specific workflows

* Add PR builds back and include workflow files in targets

* Remove some extra dependencies in setup.sh
  • Loading branch information
twizmwazin authored Nov 10, 2022
1 parent 671653c commit 693e5cd
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 29 deletions.
41 changes: 41 additions & 0 deletions .github/workflows/setup-ps1.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Test setup.ps1

on:
workflow_call:
push:
paths:
- "setup.ps1"
- ".github/workflows/setup-ps1.yml"
pull_request:
paths:
- "setup.ps1"
- ".github/workflows/setup-ps1.yml"

jobs:
build:
strategy:
matrix:
os:
- windows-2022
python:
- "3.8"
- "3.9"
- "3.10"
fail-fast: false
name: Run setup.ps1 on ${{ matrix.os }} with python ${{ matrix.python }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3

- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}

- name: Run setup.ps1
run: .\setup.ps1

- name: Test angr import
run: python -c "import angr; print('angr imports!')"

- name: Test angr management import
run: python -c "import angrmanagement; print('angr management imports!')"
18 changes: 11 additions & 7 deletions .github/workflows/ci.yml → .github/workflows/setup-sh.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
name: CI
name: Test setup.sh

on:
workflow_call:
push:
paths:
- "setup.sh"
- ".github/workflows/setup-sh.yml"
pull_request:
paths:
- "setup.sh"
- ".github/workflows/setup-sh.yml"

jobs:
build:
strategy:
matrix:
os:
- ubuntu-20.04
- windows-2022
- ubuntu-22.04
- macos-12
python:
- "3.8"
Expand All @@ -32,12 +38,10 @@ jobs:
python-version: ${{ matrix.python }}

- name: Run setup.sh
if: matrix.os != 'windows-2022'
run: ./setup.sh -i -u

- name: Run setup.bat
if: matrix.os == 'windows-2022'
run: .\setup.ps1

- name: Test angr import
run: python -c "import angr; print('angr imports!')"

- name: Test angr management import
run: python -c "import angrmanagement; print('angr management imports!')"
43 changes: 43 additions & 0 deletions .github/workflows/simple-sh.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Test extremely-simple-setup.sh

on:
workflow_call:
push:
paths:
- "extremely-simple-setup.sh"
- ".github/workflows/simple-sh.yml"
pull_request:
paths:
- "extremely-simple-setup.sh"
- ".github/workflows/simple-sh.yml"

jobs:
build:
strategy:
matrix:
os:
- ubuntu-20.04
- ubuntu-22.04
- macos-12
python:
- "3.8"
- "3.9"
- "3.10"
fail-fast: false
name: Run extremely-simple-setup.sh on ${{ matrix.os }} with python ${{ matrix.python }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3

- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python }}

- name: Run setup.sh
run: ./extremely-simple-setup.sh

- name: Test angr import
run: python -c "import angr; print('angr imports!')"

- name: Test angrmanagement import
run: python -c "import angrmanagement; print('angr management imports!')"
24 changes: 6 additions & 18 deletions extremely-simple-setup.sh
Original file line number Diff line number Diff line change
@@ -1,34 +1,22 @@
#!/usr/bin/env bash

if [ -z "$VIRTUAL_ENV" ]; then
echo "Are you sure you want to install angr outside a python virtual environment?"
echo "It is highly recommended to use a virtualenv when working with angr."
echo -n "y/N "
read choice
if ! [ "$choice" = y -o "$choice" = Y ]; then
exit 1
fi
fi

## BEGIN VERY COMPLICATED INSTALL PROCEDURE

git clone https://github.com/angr/archinfo.git
git clone --recursive https://github.com/angr/pyvex.git
git clone https://github.com/angr/claripy.git
git clone https://github.com/angr/cle.git
git clone https://github.com/angr/angr.git
git clone https://github.com/angr/claripy.git
git clone https://github.com/angr/ailment.git
git clone https://github.com/angr/angr.git
git clone https://github.com/angr/angr-management.git
git clone https://github.com/angr/angr-doc.git
git clone https://github.com/angr/binaries.git

python -m pip install -U pip wheel setuptools cffi "unicorn==2.0.1"

pip install -e ./ailment
pip install -e ./archinfo
pip install -e ./pyvex
pip install -e ./claripy
pip install -e ./cle
pip install -e ./claripy
pip install -e ./ailment
pip install --no-build-isolation -e ./angr

## END VERY COMPLICATED INSTALL PROCEDURE
pip install -e ./angr-management

8 changes: 4 additions & 4 deletions setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ then
fi


DEBS=${DEBS-python3-pip python3-dev python3-setuptools build-essential libxml2-dev libxslt1-dev git libffi-dev cmake libreadline-dev libtool debootstrap debian-archive-keyring libglib2.0-dev libpixman-1-dev qtdeclarative5-dev binutils-multiarch nasm libssl-dev libc6:i386 libgcc1:i386 libstdc++6:i386 libtinfo5:i386 zlib1g:i386 openjdk-8-jdk}
DEBS=${DEBS-python3-pip python3-dev python3-setuptools build-essential libxml2-dev libxslt1-dev git libffi-dev cmake libreadline-dev libtool debootstrap debian-archive-keyring libglib2.0-dev libpixman-1-dev qtdeclarative5-dev binutils-multiarch nasm libssl-dev}
HOMEBREW_DEBS=${HOMEBREW_DEBS-python3 libxml2 libxslt libffi cmake libtool glib binutils nasm patchelf}
ARCHDEBS=${ARCHDEBS-python-pip libxml2 libxslt git libffi cmake readline libtool debootstrap glib2 pixman qt5-base binutils nasm lib32-glibc lib32-gcc-libs lib32-zlib lib32-ncurses}
ARCHDEBS=${ARCHDEBS-python-pip libxml2 libxslt git libffi cmake readline libtool debootstrap glib2 pixman qt5-base binutils nasm}
ARCHCOMDEBS=${ARCHCOMDEBS}
RPMS=${RPMS-gcc gcc-c++ make python3-pip python3-devel python3-setuptools libxml2-devel libxslt-devel git libffi-devel cmake readline-devel libtool debootstrap debian-keyring glib2-devel pixman-devel qt5-qtdeclarative-devel binutils-x86_64-linux-gnu nasm openssl-devel python2.7 glibc.i686 libgcc.i686 libstdc++.i686 ncurses-compat-libs.i686 zlib.i686 java-1.8.0-openjdk-devel}
OPENSUSE_RPMS=${OPENSUSE_RPMS-gcc gcc-c++ make python3-pip python3-devel python3-setuptools libxml2-devel libxslt-devel git libffi-devel cmake readline-devel libtool debootstrap glib2-devel libpixman-1-0-devel libQt5Core5 libqt5-qtdeclarative-devel binutils nasm libopenssl-devel python glibc-32bit libgcc_s1-32bit libstdc++6-32bit libncurses5-32bit libz1-32bit java-1_8_0-openjdk-devel}
RPMS=${RPMS-gcc gcc-c++ make python3-pip python3-devel python3-setuptools libxml2-devel libxslt-devel git libffi-devel cmake readline-devel libtool debootstrap debian-keyring glib2-devel pixman-devel qt5-qtdeclarative-devel binutils-x86_64-linux-gnu nasm openssl-devel}
OPENSUSE_RPMS=${OPENSUSE_RPMS-gcc gcc-c++ make python3-pip python3-devel python3-setuptools libxml2-devel libxslt-devel git libffi-devel cmake readline-devel libtool debootstrap glib2-devel libpixman-1-0-devel libQt5Core5 libqt5-qtdeclarative-devel binutils nasm libopenssl-devel}
REPOS=${REPOS-archinfo pyvex cle claripy ailment angr angr-doc binaries}
REPOS_CPYTHON=${REPOS_CPYTHON-angr-management}
# archr is Linux only because of shellphish-qemu dependency
Expand Down

0 comments on commit 693e5cd

Please sign in to comment.