Remove unused code blocks and steps in GitHub Actions workflows. #159
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: 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/[email protected] | |
- name: Install Python. | |
uses: actions/[email protected] | |
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 |