Skip to content

Remove unused code blocks and steps in GitHub Actions workflows. #159

Remove unused code blocks and steps in GitHub Actions workflows.

Remove unused code blocks and steps in GitHub Actions workflows. #159

name: lint-test-build-upload
on:
push
jobs:
manylinux:
container: quay.io/pypa/manylinux2014_x86_64
name: "Python ${{ matrix.PYTHON }} on manylinux2014"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: "Install Python."
run: |
yum -y install wget libffi-devel patchelf
/opt/python/${{ matrix.PYTHON }}/bin/python -m pip install virtualenv
/opt/python/${{ matrix.PYTHON }}/bin/python -m virtualenv .venv
- name: "Install Python dependencies for build process."
run: ".venv/bin/pip install -U pip setuptools wheel build"
- name: "Download mcl source tree archive and extract it."
run: |
wget https://github.com/herumi/mcl/archive/refs/tags/v1.61.tar.gz
tar -xvzf *.tar.gz
- name: "Build wheel file."
run: |
# Compile platform-dependent binaries.
cd mcl*
make
ls lib
cd ..
# Remove prebuilt binaries (if any are leftover from an old build).
rm -f mclbn256/libmclbn256.*
rm -f mclbn256/lib/libmcl.*
# Copy binaries into Python module.
cp mcl-*/lib/libmclbn256.so mclbn256
cp mcl-*/lib/libmcl.so mclbn256/lib
# Allow relative linking of libmcl.so dependency (also likely unused, but changing a link is easier than deleting one).
echo "Files linked to from lib/libmcl.so"
patchelf --print-needed mclbn256/lib/libmcl.so # Dependency has only standard system dependencies (also likely unused, but changing a link is easier than deleting one).
echo "Files linked to from libmclbn256.so"
patchelf --print-needed mclbn256/libmclbn256.so # The BN254 build depends on lib/libmcl.so, which may not be in any environment folder.
echo "patching..."
patchelf --replace-needed lib/libmcl.so \$ORIGIN/lib/libmcl.so mclbn256/libmclbn256.so
echo "Files linked to from libmclbn256.so"
patchelf --print-needed mclbn256/libmclbn256.so # The lib/libmcl.so dependency should be relative now.
echo "patching..."
patchelf --replace-needed libmcl.so \$ORIGIN/lib/libmcl.so mclbn256/libmclbn256.so
echo "Files linked to from libmclbn256.so"
patchelf --print-needed mclbn256/libmclbn256.so # The lib/libmcl.so dependency should be relative now.
echo "adding dependency...";
patchelf --add-needed lib/libmcl.so mclbn256/libmclbn256.so
patchelf --add-rpath \$ORIGIN/ mclbn256/libmclbn256.so
echo "Files linked to from libmclbn256.so"
patchelf --print-needed mclbn256/libmclbn256.so # The lib/libmcl.so dependency should be relative now.
mkdir lib; cp mcl-*/lib/libmcl.so lib
- env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
name: "Test module (and compiled MCl shared library files)."
run: |
.venv/bin/python -c "import mclbn256; mclbn256.mclbn256.assert_bilinearity(); mclbn256.mclbn256.assert_serializable(); print('pass')"
strategy:
matrix:
PYTHON:
- cp37-cp37m
- cp38-cp38
- cp39-cp39
- cp310-cp310
- cp311-cp311
macos:
name: "Python ${{ matrix.PYTHON.VERSION }} for ABI ${{ matrix.PYTHON.ABI_VERSION }} on macOS"
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- env:
PYTHON_DOWNLOAD_URL: "${{ matrix.PYTHON.DOWNLOAD_URL }}"
name: "Install Python."
run: |
curl "$PYTHON_DOWNLOAD_URL" -o python.pkg
sudo installer -pkg python.pkg -target /
${{ matrix.PYTHON.BIN_PATH }} -m pip install -U virtualenv
${{ matrix.PYTHON.BIN_PATH }} -m virtualenv venv
- name: "Install Python dependencies for build process."
run: "venv/bin/pip install -U pip setuptools wheel build"
- name: "Download MCl source tree archive and extract it."
run: |
wget https://github.com/herumi/mcl/archive/refs/tags/v1.61.tar.gz
tar -xvzf *.tar.gz
- env:
PYTHON_VERSION: "${{ matrix.PYTHON.ABI_VERSION }}"
name: "Build wheel file."
run: |
# Compile platform-dependent binaries.
cd mcl*
make
ls lib
cd ..
# Remove prebuilt binaries (if any are leftover from an old build).
rm -f mclbn256/libmclbn256.*
rm -f mclbn256/lib/libmcl.*
# Copy binaries into Python module.
cp mcl-*/lib/libmclbn256.dylib mclbn256
cp mcl-*/lib/libmcl.dylib mclbn256/lib
# Allow relative linking of libmcl.dylib dependency (also likely unused, but changing a link is easier than deleting one)
otool -L mclbn256/lib/libmcl.dylib # Dependency has only standard system dependencies.
otool -L mclbn256/libmclbn256.dylib # The BN254 build depends on lib/libmcl.so which may not be in any environment folder.
install_name_tool -change lib/libmcl.dylib @loader_path/lib/libmcl.dylib mclbn256/libmclbn256.dylib
- name: "Test module (and compiled MCl shared library files)."
run: |
venv/bin/python -c "import mclbn256; mclbn256.mclbn256.assert_bilinearity(); mclbn256.mclbn256.assert_serializable(); print('pass')"
strategy:
matrix:
PYTHON:
- ABI_VERSION: "3.6"
BIN_PATH: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3
DOWNLOAD_URL: "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg"
VERSION: "3.9"
- ABI_VERSION: "3.6"
BIN_PATH: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3
DOWNLOAD_URL: "https://www.python.org/ftp/python/3.10.5/python-3.10.5-macos11.pkg"
VERSION: "3.10"
- ABI_VERSION: "3.6"
BIN_PATH: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3
DOWNLOAD_URL: "https://www.python.org/ftp/python/3.11.6/python-3.11.6-macos11.pkg"
VERSION: "3.11"
macos-arm:
name: "Python ${{ matrix.PYTHON.VERSION }} for ABI ${{ matrix.PYTHON.ABI_VERSION }} on macOS ARM"
runs-on: [self-hosted, macos, ARM64]
steps:
- uses: actions/checkout@v2
- env:
PYTHON_DOWNLOAD_URL: "${{ matrix.PYTHON.DOWNLOAD_URL }}"
name: "Install Python."
run: |
curl "$PYTHON_DOWNLOAD_URL" -o python.pkg
sudo installer -pkg python.pkg -target /
${{ matrix.PYTHON.BIN_PATH }} -m pip install -U virtualenv
${{ matrix.PYTHON.BIN_PATH }} -m virtualenv venv
- name: "Install Python dependencies for build process."
run: "venv/bin/pip install -U pip setuptools wheel build"
- name: "Download mcl source tree archive and extract it."
run: |
wget https://github.com/herumi/mcl/archive/refs/tags/v1.61.tar.gz
tar -xvzf *.tar.gz
- env:
PYTHON_VERSION: "${{ matrix.PYTHON.ABI_VERSION }}"
name: "Build wheel file."
run: |
# Compile platform-dependent binaries.
cd mcl*
make
ls lib
cd ..
# Remove prebuilt binaries (if any are leftover from an old build).
rm -f mclbn256/libmclbn256.*
rm -f mclbn256/lib/libmcl.*
# Copy binaries into Python module.
cp mcl-*/lib/libmclbn256.dylib mclbn256
cp mcl-*/lib/libmcl.dylib mclbn256/lib
# Allow relative linking of libmcl.dylib dependency (also likely unused, but changing a link is easier than deleting one).
otool -L mclbn256/lib/libmcl.dylib # dependency has only standard system dependencies
otool -L mclbn256/libmclbn256.dylib # the BN254 build depends on lib/libmcl.so which may not be in any environment folder
install_name_tool -change lib/libmcl.dylib @loader_path/lib/libmcl.dylib mclbn256/libmclbn256.dylib
- name: "Test module (and compiled MCl shared library files)."
run: |
venv/bin/python -c "import mclbn256; mclbn256.mclbn256.assert_bilinearity(); mclbn256.mclbn256.assert_serializable(); print('pass')"
strategy:
matrix:
PYTHON:
- ABI_VERSION: "3.6"
BIN_PATH: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3
DOWNLOAD_URL: "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg"
VERSION: "3.9"
- ABI_VERSION: "3.6"
BIN_PATH: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3
DOWNLOAD_URL: "https://www.python.org/ftp/python/3.10.5/python-3.10.5-macos11.pkg"
VERSION: "3.10"
- ABI_VERSION: "3.6"
BIN_PATH: /Library/Frameworks/Python.framework/Versions/3.11/bin/python3
DOWNLOAD_URL: "https://www.python.org/ftp/python/3.11.6/python-3.11.6-macos11.pkg"
VERSION: "3.11"
windows:
runs-on: windows-latest
strategy:
matrix:
WINDOWS:
- {ARCH: 'x86', MCL_ARCH: 'Win32', VS_ARCH: 'x86'}
- {ARCH: 'x64', MCL_ARCH: 'x64', VS_ARCH: 'amd64'}
PYTHON:
- {VERSION: "3.9", MCL_MSVC_VERSION: "v142", "USE_ABI3": "true", "ABI_VERSION": "cp36"}
- {VERSION: "3.10", MCL_MSVC_VERSION: "v142", "USE_ABI3": "true", "ABI_VERSION": "cp36"}
- {VERSION: "3.11", MCL_MSVC_VERSION: "v142", "USE_ABI3": "true", "ABI_VERSION": "cp36"}
name: "Python ${{ matrix.PYTHON.VERSION }} for ABI ${{ matrix.PYTHON.ABI_VERSION }} on Windows ${{ matrix.WINDOWS.ARCH }}"
steps:
- uses: actions/checkout@v2
- name: Enable Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1.10.0
- name: Install Python.
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ matrix.PYTHON.VERSION }}
architecture: ${{ matrix.WINDOWS.ARCH }}
- name: Install Python dependencies for build process.
run: python -m pip install -U pip setuptools wheel cffi
shell: bash
- name: Download and extract mcl dynamic library file.
run: |
wget -O c:\msvc-mcl-v1.61.zip https://github.com/herumi/mcl/archive/refs/tags/v1.61.zip
Expand-Archive c:\msvc-mcl-v1.61.zip -DestinationPath d:\a\mclbn256\mclbn256
dir .
dir c:\
shell: powershell
- name: Add environment variables for MCl.
run: |
echo "INCLUDE=C:/MCl/include;$INCLUDE" >> $GITHUB_ENV
echo "LIB=C:/MCl/${{ matrix.WINDOWS.MCL_ARCH }}/release/${{ matrix.PYTHON.MCL_MSVC_VERSION }}/static;$LIB" >> $GITHUB_ENV
shell: bash
- name: Build DLL.
run: |
ls
cd mcl-*
ls
mklib dll
cd ..
shell: cmd
- name: Build wheel file.
run: |
ls mcl-*/lib/
ls mcl-*/bin/
ls mclbn256/
cp mcl-*/bin/mclbn256.dll mclbn256/libmclbn256.dll