diff --git a/.github/workflows/Nuget-publishing.yml b/.github/workflows/Nuget-publishing.yml index 8d997938..521f07f5 100644 --- a/.github/workflows/Nuget-publishing.yml +++ b/.github/workflows/Nuget-publishing.yml @@ -428,14 +428,13 @@ jobs: with: path: ${{ github.workspace }}/bindings/dotnet/UnicornEngine/bin/Release/UnicornEngine.Unicorn.*.nupkg - # We often exceed limit so just release on tags - name: 📦 Publish to Github Packages if: startsWith(github.ref, 'refs/tags') working-directory: bindings/dotnet/UnicornEngine run: dotnet nuget push "bin/Release/UnicornEngine.Unicorn.*.nupkg" --source "github" --api-key "${{ secrets.GHPR_TOKEN }}" - # Nuget is more tolerate so let's release every commit - name: 📦 Publish Nuget package + if: startsWith(github.ref, 'refs/tags') working-directory: bindings/dotnet/UnicornEngine run: dotnet nuget push "bin/Release/UnicornEngine.Unicorn.*.nupkg" -k "$NUGET_AUTH_TOKEN" -s https://api.nuget.org/v3/index.json env: diff --git a/.github/workflows/PyPI-publishing.yml b/.github/workflows/PyPI-publishing.yml index 4a1840d4..8b6a9cdc 100644 --- a/.github/workflows/PyPI-publishing.yml +++ b/.github/workflows/PyPI-publishing.yml @@ -34,6 +34,12 @@ jobs: python-ver: '3.8', name: 'win32' } + - { + os: ubuntu-latest, + arch: x64, + python-ver: '3.8', + name: 'musllinux' + } - { os: ubuntu-latest, arch: x64, @@ -129,6 +135,8 @@ jobs: docker run --rm -v `pwd`/:/work dockcross/manylinux2014-x64 > ./dockcross chmod +x ./dockcross ./dockcross bindings/python/build_wheel.sh + elif [ ${{ matrix.config.name }} == 'musllinux' ]; then + docker run --rm -v `pwd`:/work -w /work python:3.7-alpine sh /work/bindings/python/musl_wheel.sh elif [ ${{ matrix.config.name }} == 'sdist' ]; then cd bindings/python && python setup.py sdist else diff --git a/bindings/python/musl_wheel.sh b/bindings/python/musl_wheel.sh new file mode 100644 index 00000000..efc6d853 --- /dev/null +++ b/bindings/python/musl_wheel.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# TODO: use cibuildwheel +apk update +apk add gcc make cmake pkgconfig linux-headers git musl-dev patchelf + +python3 -m pip install -U pip setuptools auditwheel + +cd bindings/python && python3 setup.py bdist_wheel && auditwheel repair dist/*.whl && mv -f wheelhouse/*.whl . \ No newline at end of file diff --git a/bindings/python/setup.py b/bindings/python/setup.py index 244bc6e7..3d97897c 100755 --- a/bindings/python/setup.py +++ b/bindings/python/setup.py @@ -180,24 +180,28 @@ cmdclass['build'] = custom_build cmdclass['sdist'] = custom_sdist cmdclass['bdist_egg'] = custom_bdist_egg -# if 'bdist_wheel' in sys.argv and '--plat-name' not in sys.argv: -# idx = sys.argv.index('bdist_wheel') + 1 -# sys.argv.insert(idx, '--plat-name') -# name = get_platform() -# if 'linux' in name: -# # linux_* platform tags are disallowed because the python ecosystem is fubar -# # linux builds should be built in the centos 5 vm for maximum compatibility -# # see https://github.com/pypa/manylinux -# # see also https://github.com/angr/angr-dev/blob/master/bdist.sh -# sys.argv.insert(idx + 1, 'manylinux1_' + platform.machine()) -# elif 'mingw' in name: -# if IS_64BITS: -# sys.argv.insert(idx + 1, 'win_amd64') -# else: -# sys.argv.insert(idx + 1, 'win32') -# else: -# # https://www.python.org/dev/peps/pep-0425/ -# sys.argv.insert(idx + 1, name.replace('.', '_').replace('-', '_')) +if 'bdist_wheel' in sys.argv and '--plat-name' not in sys.argv: + idx = sys.argv.index('bdist_wheel') + 1 + + name = get_platform() + if 'linux' in name: + # linux_* platform tags are disallowed because the python ecosystem is fubar + # linux builds should be built in the centos 5 vm for maximum compatibility + # see https://github.com/pypa/manylinux + # see also https://github.com/angr/angr-dev/blob/master/bdist.sh + # sys.argv.insert(idx + 1, 'manylinux1_' + platform.machine()) + # Let auditwheel repair it + pass + elif 'mingw' in name: + sys.argv.insert(idx, '--plat-name') + if IS_64BITS: + sys.argv.insert(idx + 1, 'win_amd64') + else: + sys.argv.insert(idx + 1, 'win32') + else: + sys.argv.insert(idx, '--plat-name') + # https://www.python.org/dev/peps/pep-0425/ + sys.argv.insert(idx + 1, name.replace('.', '_').replace('-', '_')) try: from setuptools.command.develop import develop