From 3485fa7f5dcf3d1fa9bbb8cd36e25d8570b43cb7 Mon Sep 17 00:00:00 2001 From: Yotam Nachum Date: Fri, 21 Oct 2022 19:53:37 +0300 Subject: [PATCH] ci: Build binary wheels in CI --- .github/workflows/package.yml | 97 +++++++++++++++++++++++++++++++++++ setup.cfg | 2 + 2 files changed, 99 insertions(+) create mode 100644 .github/workflows/package.yml create mode 100644 setup.cfg diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 00000000..340cf34d --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,97 @@ +name: package +on: [push, pull_request] +jobs: + linux_wheels: + strategy: + matrix: + arch: [x86, x86_64, arm64, armhf, mips] + runs-on: ubuntu-latest + container: ghcr.io/frida/x-tools-linux-${{ matrix.arch }}:latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - run: cd agents/tracer && npm install && npm run build + - run: | + LDFLAGS="-L/opt/x-tools/$XTOOLS_HOST/$XTOOLS_HOST/sysroot/usr/lib" CPPFLAGS="-I/opt/x-tools/$XTOOLS_HOST/$XTOOLS_HOST/sysroot/usr/include/python3.10" python3 -m pip install tree_sitter + - run: | + case ${{ matrix.arch }} in + x86) + py_arch=i686 + ;; + armhf) + py_arch=armv7l + ;; + arm64) + py_arch=aarch64 + ;; + *) + py_arch=${{ matrix.arch }} + ;; + esac + case ${{ matrix.arch }} in + x86*) + py_platform=manylinux_2_5_${py_arch}.manylinux1_${py_arch} + ;; + arm*|ppc*|s390x) + py_platform=manylinux_2_17_${py_arch}.manylinux2014_${py_arch} + ;; + *) + py_platform=manylinux_2_5_${py_arch} + ;; + esac + bdist_wheel_py=/usr/lib/python3/dist-packages/wheel/bdist_wheel.py + sed "s/plat_name = plat_name\\.lower()\\.replace('-', '_')\\.replace('.', '_')/plat_name = plat_name.lower().replace('-', '_')/" \ + $bdist_wheel_py > $bdist_wheel_py.patched + if cmp -s $bdist_wheel_py $bdist_wheel_py.patched; then + rm -f $bdist_wheel_py.patched + echo 'Unable to patch bdist_wheel.py' > /dev/stderr + exit 1 + else + mv $bdist_wheel_py.patched $bdist_wheel_py + fi + export _PYTHON_HOST_PLATFORM=linux-$py_arch + echo "plat_name = $py_platform" >> setup.cfg + pip wheel -w ./dist --no-deps . + - uses: actions/upload-artifact@v3 + with: + name: frida_tools_linux + path: dist + + macos_wheels: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + - run: cd agents/tracer && npm install && npm run build + - run: python3 -m pip install wheel + - run: python3 -m pip install tree_sitter + - run: python3 setup.py bdist_wheel --plat-name=macosx_10_9_x86_64 + - run: python3 setup.py bdist_wheel --plat-name=macosx_11_0_x86_64 + - uses: actions/upload-artifact@v3 + with: + name: frida_tools_macos + path: dist + + windows_wheels: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + - run: cd agents/tracer && npm install && npm run build + - run: python3 -m pip install wheel + - run: python3 -m pip install tree_sitter + - run: python3 setup.py bdist_wheel --plat-name=win_amd64 + - run: python3 setup.py bdist_wheel --plat-name=win32 + - uses: actions/upload-artifact@v3 + with: + name: frida_tools_windows + path: dist diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..08a438ab --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[bdist_wheel] +py_limited_api = cp37