Skip to content

Merge pull request #1381 from cnheitman/update/update-ci-macos #592

Merge pull request #1381 from cnheitman/update/update-ci-macos

Merge pull request #1381 from cnheitman/update/update-ci-macos #592

Workflow file for this run

name: Build Python Package
on: [push, pull_request, workflow_dispatch]
env:
package-version: '1.0.0rc4'
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create Docker image
run: bash ./src/scripts/docker/build-docker-image.sh
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v2
with:
version: "14.0"
directory: ${{ runner.temp }}/llvm
- name: Build Wheel packages
run: |
docker run \
--rm \
--volume $GITHUB_WORKSPACE:/src \
--volume ${{env.LLVM_PATH}}:/llvm \
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@v4
with:
name: triton_library-${{ env.package-version }}-cp38-cp38-manylinux_2_31_x86_64.whl
path: wheelhouse/manylinux_2_31_x86_64/triton_library-${{ env.package-version }}-cp38-cp38-manylinux_2_31_x86_64.whl
if-no-files-found: warn
- name: Upload Wheel packages (Python 3.9)
uses: actions/upload-artifact@v4
with:
name: triton_library-${{ env.package-version }}-cp39-cp39-manylinux_2_31_x86_64.whl
path: wheelhouse/manylinux_2_31_x86_64/triton_library-${{ env.package-version }}-cp39-cp39-manylinux_2_31_x86_64.whl
if-no-files-found: warn
- name: Upload Wheel packages (Python 3.10)
uses: actions/upload-artifact@v4
with:
name: triton_library-${{ env.package-version }}-cp310-cp310-manylinux_2_31_x86_64.whl
path: wheelhouse/manylinux_2_31_x86_64/triton_library-${{ env.package-version }}-cp310-cp310-manylinux_2_31_x86_64.whl
if-no-files-found: warn
- name: Upload Wheel packages (Python 3.11)
uses: actions/upload-artifact@v4
with:
name: triton_library-${{ env.package-version }}-cp311-cp311-manylinux_2_31_x86_64.whl
path: wheelhouse/manylinux_2_31_x86_64/triton_library-${{ env.package-version }}-cp311-cp311-manylinux_2_31_x86_64.whl
if-no-files-found: warn
- name: Upload Wheel packages (Python 3.12)
uses: actions/upload-artifact@v4
with:
name: triton_library-${{ env.package-version }}-cp312-cp312-manylinux_2_31_x86_64.whl
path: wheelhouse/manylinux_2_31_x86_64/triton_library-${{ env.package-version }}-cp312-cp312-manylinux_2_31_x86_64.whl
if-no-files-found: warn
- name: Upload Wheel packages (Python 3.13)
uses: actions/upload-artifact@v4
with:
name: triton_library-${{ env.package-version }}-cp313-cp313-manylinux_2_31_x86_64.whl
path: wheelhouse/manylinux_2_31_x86_64/triton_library-${{ env.package-version }}-cp313-cp313-manylinux_2_31_x86_64.whl
if-no-files-found: warn
build-windows:
runs-on: windows-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
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
- python-version: 3.11
pycp: cp311-cp311
pylib: python311.lib
- python-version: 3.12
pycp: cp312-cp312
pylib: python312.lib
- python-version: 3.13
pycp: cp313-cp313
pylib: python313.lib
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
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.12.2/z3-4.12.2-x64-win.zip -O z3-4.12.2-x64-win.zip
tar -xf z3-4.12.2-x64-win.zip
shell: powershell
- name: Download and build Capstone
run: |
wget -UseBasicParsing https://github.com/capstone-engine/capstone/archive/refs/tags/5.0.3.zip -O capstone-5.0.3.zip
tar -xf capstone-5.0.3.zip
mkdir -p capstone-5.0.3/build
cd capstone-5.0.3/build
../nmake.bat
shell: powershell
- name: Build Triton Python package
run: python -m build --wheel --outdir ${{ github.workspace }}\wheelhouse\windows_x86_64_tmp
env:
PYTHON_VERSION: ${{ matrix.python-version }}
PYTHON_INCLUDE_DIRS: ${{ env.pythonLocation }}\include
PYTHON_LIBRARY: ${{ env.pythonLocation }}\libs\${{ matrix.pylib }}
Z3_INCLUDE_DIRS: ${{ github.workspace }}\z3-4.12.2-x64-win\include
Z3_LIBRARIES: ${{ github.workspace }}\z3-4.12.2-x64-win\bin\libz3.lib
CAPSTONE_INCLUDE_DIRS: ${{ github.workspace }}\capstone-5.0.3\include
CAPSTONE_LIBRARIES: ${{ github.workspace }}\capstone-5.0.3\build\capstone.lib
- name: Repair wheel package
run: |
python -m pip install delvewheel
delvewheel repair --add-path ${{ github.workspace }}\z3-4.12.2-x64-win\bin --wheel-dir ${{ github.workspace }}\wheelhouse\windows_x86_64 -v ${{ github.workspace }}\wheelhouse\windows_x86_64_tmp\triton_library-${{ env.package-version }}-${{ matrix.pycp }}-win_amd64.whl
- name: Upload
uses: actions/upload-artifact@v4
with:
name: triton_library-${{ env.package-version }}-${{ matrix.pycp }}-win_amd64.whl
path: ${{ github.workspace }}\wheelhouse\windows_x86_64\triton_library-${{ env.package-version }}-${{ matrix.pycp }}-win_amd64.whl
if-no-files-found: warn
# NOTE Temporarily disabled until issues with macos-14 get resolved.
# build-macos:
# # macos-13 = x86
# # macos-14 = arm (M1)
# runs-on: macos-12
# 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
# # - python-version: 3.11
# # pycp: cp311-cp311
# # - python-version: 3.12
# # pycp: cp312-cp312
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/setup-python@v5
# with:
# python-version: ${{ matrix.python-version }}
# - name: Install LLVM and Clang
# uses: KyleMayes/install-llvm-action@v2
# 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: 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.4.0 0.4.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.12.2/z3-4.12.2-x64-osx-10.16.zip -O z3-4.12.2-x64-osx-10.16.zip
# unzip z3-4.12.2-x64-osx-10.16.zip
# - name: Install Capstone
# run: |
# wget -q https://github.com/capstone-engine/capstone/archive/refs/tags/5.0.1.tar.gz -O capstone-5.0.1.tar.gz
# tar xf capstone-5.0.1.tar.gz
# cd ./capstone-5.0.1
# ./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.12.2-x64-osx-10.16/include
# Z3_LIBRARIES: ${{ github.workspace }}/z3-4.12.2-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==0.10.4
# 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==4.12.2
# cd ${{ github.workspace }}/src/testers
# python -m unittest discover -b -v unittests
# deactivate
# - name: Upload wheel package
# uses: actions/upload-artifact@v4
# 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