Remove unused code blocks and extra whitespace from GitHub Actions wo… #155
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 dependenciesendency (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...";#echo "patching..." | |
# patchelf --add-needed \$ORIGIN/lib/libmcl.so mclbn256/libmclbn256.so | |
# # patchelf --add-needed \$ORIGIN/libmcl.so mclbn256/libmclbn256.so | |
echo "adding dependency...";#echo "patching..." | |
patchelf --add-needed lib/libmcl.so mclbn256/libmclbn256.so | |
patchelf --add-rpath \$ORIGIN/ mclbn256/libmclbn256.so | |
# patchelf --add-rpath . 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: "Lint and 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')" | |
#.venv/bin/pip install -U pylint coverage coveralls nose | |
#.venv/bin/python -m pylint mclbn256 # Check against linting rules. | |
#.venv/bin/python mclbn256/mclbn256.py -v # Run doctests. | |
#.venv/bin/python -m nose --cover-erase # Test using nose. | |
#.venv/bin/python -m coveralls --service=github # Submit to coveralls. | |
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: "Lint and 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')" | |
# venv/bin/pip install -U pip pylint coverage nose | |
# venv/bin/python -m pylint mclbn256 # Check against linting rules. | |
# venv/bin/python mclbn256/mclbn256.py -v # Run doctests. | |
# venv/bin/python -m nose --cover-erase # Test using nose. | |
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: "Lint and 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')" | |
# venv/bin/pip install -U pip pylint coverage nose | |
# venv/bin/python -m pylint mclbn256 # Check against linting rules. | |
# venv/bin/python mclbn256/mclbn256.py -v # Run doctests. | |
#venv/bin/python -m nose --cover-erase # Test using nose. # mclbn256 0.2.0 has succeeded before but but errored at end [due to nose in 3.10 bug](https://github.com/nose-devs/nose/issues/1099) | |
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 | |
# mk -d test\bls12_test.cpp && bin\bls12_test.exe | |
cd .. | |
shell: cmd | |
- name: Build wheel file. | |
run: | | |
ls mcl-*/lib/ | |
# echo | |
# echo | |
ls mcl-*/bin/ | |
# echo | |
# echo | |
ls mclbn256/ | |
cp mcl-*/bin/mclbn256.dll mclbn256/libmclbn256.dll | |
- name: Lint and test module (and compiled MCl shared library file). | |
run: | | |
# python -c "import mclbn256; mclbn256.mclbn256.assert_bilinearity(); mclbn256.mclbn256.assert_serializable(); print('pass')" | |
# python -c "exec(\"import mclbn256\n mclbn256.mclbn256.assert_bilinearity()\n mclbn256.mclbn256.assert_serializable()\n print('pass') \")" | |
# (echo "import mclbn256" ; echo "mclbn256.mclbn256.assert_bilinearity()" ; echo "mclbn256.mclbn256.assert_serializable()" ; echo "print('pass')") | python | |
# echo "import mclbn256\nmclbn256.mclbn256.assert_bilinearity()\nmclbn256.mclbn256.assert_serializable()\nprint('pass')" | python | |
# https://github.com/nthparty/mclbn256/actions/runs/6782373143/job/18434469291#step:10:62 Windows is impossible for me to test, because I don't know how to escape the test code in a string. None of the above will run without a shell-related error. | |
# python -m pip install -U pip pylint coverage nose | |
# python -m pylint mclbn256 # Check against linting rules. | |
# python mclbn256/mclbn256.py -v # Run doctests. | |
# python -m nose --cover-erase # Test using nose. | |
# - name: Upload wheel file. | |
# run: | | |
# mkdir mclbn256-wheelhouse | |
# move wheelhouse\mclbn256*.whl mclbn256-wheelhouse\ | |
# # move mcl-*\* mclbn256-wheelhouse\ | |
# # move mcl-*\lib\mclbn256.dll mclbn256-wheelhouse\ | |
# - uses: actions/upload-artifact@v1 | |
# with: | |
# name: "mclbn256-2.0.0-win-${{ matrix.WINDOWS.ARCH }}-${{ matrix.PYTHON.VERSION }}" | |
# path: mclbn256-wheelhouse |