Merge pull request #1289 from cnheitman/fix/fix-bitwuzla-translation #429
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 Python Package | |
on: [push, pull_request, workflow_dispatch] | |
env: | |
package-version: '1.0.0rc2' | |
jobs: | |
build-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Create Docker image | |
run: bash ./src/scripts/docker/build-docker-image.sh | |
- name: Build Wheel packages | |
run: | | |
docker run \ | |
--rm \ | |
--volume $GITHUB_WORKSPACE:/src \ | |
build-triton-linux-x86_64 bash /src/src/scripts/docker/build-wheel-linux.sh | |
- name: Upload Wheel packages (Python 3.8) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: triton_library-${{ env.package-version }}-cp38-cp38-manylinux_2_28_x86_64.whl | |
path: wheelhouse/manylinux_2_28_x86_64/triton_library-${{ env.package-version }}-cp38-cp38-manylinux_2_28_x86_64.whl | |
if-no-files-found: warn | |
- name: Upload Wheel packages (Python 3.9) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: triton_library-${{ env.package-version }}-cp39-cp39-manylinux_2_28_x86_64.whl | |
path: wheelhouse/manylinux_2_28_x86_64/triton_library-${{ env.package-version }}-cp39-cp39-manylinux_2_28_x86_64.whl | |
if-no-files-found: warn | |
- name: Upload Wheel packages (Python 3.10) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: triton_library-${{ env.package-version }}-cp310-cp310-manylinux_2_28_x86_64.whl | |
path: wheelhouse/manylinux_2_28_x86_64/triton_library-${{ env.package-version }}-cp310-cp310-manylinux_2_28_x86_64.whl | |
if-no-files-found: warn | |
- name: Upload Wheel packages (Python 3.11) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: triton_library-${{ env.package-version }}-cp311-cp311-manylinux_2_28_x86_64.whl | |
path: wheelhouse/manylinux_2_28_x86_64/triton_library-${{ env.package-version }}-cp311-cp311-manylinux_2_28_x86_64.whl | |
if-no-files-found: warn | |
# FIXME | |
# build-windows: | |
# runs-on: windows-latest | |
# strategy: | |
# matrix: | |
# python-version: ['3.8', '3.9', '3.10'] | |
# include: | |
# - python-version: 3.8 | |
# pycp: cp38-cp38 | |
# pylib: python38.lib | |
# - python-version: 3.9 | |
# pycp: cp39-cp39 | |
# pylib: python39.lib | |
# - python-version: 3.10 | |
# pycp: cp310-cp310 | |
# pylib: python310.lib | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v3 | |
# - name: Set up Python ${{ matrix.python-version }} | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: ${{ matrix.python-version }} | |
# - name: Get CMake | |
# uses: lukka/get-cmake@latest | |
# - name: Setup Windows dev environment | |
# uses: ilammy/msvc-dev-cmd@v1 | |
# with: | |
# arch: 'x64' | |
# - name: Upgrade pip version | |
# run: | | |
# python -m pip install -U pip | |
# - name: Install build package | |
# run: | | |
# python -m pip install build | |
# - name: Download and build Z3 | |
# run: | | |
# wget -UseBasicParsing https://github.com/Z3Prover/z3/releases/download/z3-4.8.17/z3-4.8.17-x64-win.zip -O z3-4.8.17-x64-win.zip | |
# tar -xf z3-4.8.17-x64-win.zip | |
# wget -UseBasicParsing https://github.com/Z3Prover/z3/archive/refs/tags/z3-4.8.17.zip -O z3-4.8.17.zip | |
# tar -xf z3-4.8.17.zip | |
# cd z3-z3-4.8.17 | |
# python scripts\mk_make.py --x64 --staticlib | |
# cd build | |
# nmake | |
# shell: powershell | |
# - name: Download Capstone | |
# run: | | |
# wget -UseBasicParsing https://github.com/capstone-engine/capstone/releases/download/4.0.2/capstone-4.0.2-win64.zip -O capstone-4.0.2-win64.zip | |
# tar -xf capstone-4.0.2-win64.zip | |
# shell: powershell | |
# - name: Build Triton Python package | |
# run: python -m build --wheel | |
# env: | |
# PYTHON_VERSION: ${{ matrix.python-version }} | |
# PYTHON_INCLUDE_DIRS: ${{ env.pythonLocation }}\include | |
# PYTHON_LIBRARIES: ${{ env.pythonLocation }}\libs\${{ matrix.pylib }} | |
# PYTHON_LIBRARY: ${{ env.pythonLocation }}\libs\${{ matrix.pylib }} | |
# Z3_INCLUDE_DIRS: ${{ github.workspace }}\z3-4.8.17-x64-win\include | |
# Z3_LIBRARIES: ${{ github.workspace }}\z3-z3-4.8.17\build\libz3-static.lib | |
# CAPSTONE_INCLUDE_DIRS: ${{ github.workspace }}\capstone-4.0.2-win64\include | |
# CAPSTONE_LIBRARIES: ${{ github.workspace }}\capstone-4.0.2-win64\capstone.lib | |
# - name: Upload | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: triton_library-${{ env.package-version }}-${{ matrix.pycp }}-win_amd64.whl | |
# path: ${{ github.workspace }}/dist/triton_library-${{ env.package-version }}-${{ matrix.pycp }}-win_amd64.whl | |
# if-no-files-found: warn | |
build-macos: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.9', '3.10'] | |
include: | |
- python-version: 3.8 | |
pycp: cp38-cp38 | |
- python-version: 3.9 | |
pycp: cp39-cp39 | |
- python-version: 3.10 | |
pycp: cp310-cp310 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install LLVM and Clang | |
uses: KyleMayes/install-llvm-action@v1.6.1 | |
with: | |
version: "14.0" | |
directory: ${{ runner.temp }}/llvm | |
- name: Upgrade pip version | |
run: | | |
sudo python -m pip install -U pip | |
- name: Install build package | |
run: | | |
sudo python -m pip install build | |
- name: Download and build GMP | |
run: | | |
wget -q https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz | |
tar -xf gmp-6.2.1.tar.xz | |
cd gmp-6.2.1 | |
./configure --enable-cxx | |
make | |
make install | |
- name: Install Ninja | |
run: | | |
brew install ninja | |
- name: Install Meson | |
run: | | |
python -m pip install meson | |
- name: Install Bitwuzla | |
run: | | |
git clone https://github.com/bitwuzla/bitwuzla.git | |
cd bitwuzla | |
git checkout -b 0.2.0 0.2.0 | |
python ./configure.py --shared --prefix $(pwd)/install | |
cd build | |
sudo ninja install | |
- name: Download Z3 | |
run: | | |
wget -q https://github.com/Z3Prover/z3/releases/download/z3-4.8.17/z3-4.8.17-x64-osx-10.16.zip | |
unzip z3-4.8.17-x64-osx-10.16.zip | |
- name: Install Capstone | |
run: | | |
wget -q https://github.com/aquynh/capstone/archive/4.0.2.tar.gz | |
tar -xf ./4.0.2.tar.gz | |
cd capstone-4.0.2 | |
bash ./make.sh | |
sudo make install | |
- name: Build Triton Python package | |
run: python -m build --wheel --outdir wheelhouse/default_x86_64 | |
env: | |
Z3_INTERFACE: On | |
Z3_INCLUDE_DIRS: ${{ github.workspace }}/z3-4.8.17-x64-osx-10.16/include | |
Z3_LIBRARIES: ${{ github.workspace }}/z3-4.8.17-x64-osx-10.16/bin/libz3.a | |
BITWUZLA_INTERFACE: On | |
BITWUZLA_INCLUDE_DIRS: ${{ github.workspace }}/bitwuzla/install/include | |
BITWUZLA_LIBRARIES: ${{ github.workspace }}/bitwuzla/install/lib/libbitwuzla.dylib | |
CAPSTONE_INCLUDE_DIRS: /usr/local/include | |
CAPSTONE_LIBRARIES: /usr/local/lib/libcapstone.a | |
LLVM_INTERFACE: On | |
CMAKE_PREFIX_PATH: ${{env.LLVM_PATH}} | |
BOOST_INTERFACE: Off | |
- name: Repair wheel package | |
run: | | |
pip install delocate | |
python ${{ github.workspace }}/src/scripts/macos/delocate-wheel-custom.py \ | |
--verbose \ | |
--wheel-dir wheelhouse/repaired_x86_64 \ | |
${{ github.workspace }}/wheelhouse/default_x86_64/triton_library-${{ env.package-version }}-${{ matrix.pycp }}-macosx_12_0_x86_64.whl | |
- name: Test wheel package | |
run: | | |
pip install virtualenv | |
virtualenv test-venv | |
source test-venv/bin/activate | |
pip install ${{ github.workspace }}/wheelhouse/repaired_x86_64/triton_library-${{ env.package-version }}-${{ matrix.pycp }}-macosx_12_0_x86_64.whl | |
python -c "import triton" | |
pip install capstone | |
pip install lief | |
pip install unicorn==2.0.0 | |
pip install z3-solver | |
cd ${{ github.workspace }}/src/testers | |
python -m unittest discover -b -v unittests | |
deactivate | |
- name: Upload wheel package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: triton_library-${{ env.package-version }}-${{ matrix.pycp }}-macosx_12_0_x86_64.whl | |
path: ${{ github.workspace }}/wheelhouse/repaired_x86_64/triton_library-${{ env.package-version }}-${{ matrix.pycp }}-macosx_12_0_x86_64.whl | |
if-no-files-found: warn |