Skip to content

Commit

Permalink
meta setup and remove mpir
Browse files Browse the repository at this point in the history
  • Loading branch information
wjblanke committed Apr 18, 2020
1 parent 837418d commit d939d5e
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 152 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ jobs:
CIBW_BEFORE_BUILD_MACOS: brew install boost && python -m pip install --upgrade pip
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.14
CIBW_BUILD_VERBOSITY_MACOS: 0
CIBW_BEFORE_BUILD_WINDOWS: python -m pip install --upgrade pip && pwd && git clone https://github.com/Chia-Network/relic_x64.git && ls -l relic_x64 && git clone https://github.com/Chia-Network/mpir_gc_x64.git && ls -l mpir_gc_x64 && cp setupwin.py setup.py
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "ls -l mpir_gc_x64 && pip uninstall -y delocate && pip install git+https://github.com/Chia-Network/delocate.git && delocate-wheel -v -i mpir_gc_x64/mpir.dll {wheel} && delocate-wheel -v -i relic_x64/lib/Release/relic.dll {wheel} && cp {wheel} {dest_dir} && ls -l {dest_dir} && pwd && ls -l dist && rm -fr mpir_gc_x64 && rm -fr relic_x64"
CIBW_BEFORE_BUILD_WINDOWS: python -m pip install --upgrade pip && pwd && git clone https://github.com/Chia-Network/relic_x64.git && ls -l relic_x64
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "pip uninstall -y delocate && pip install git+https://github.com/Chia-Network/delocate.git && delocate-wheel -v -i relic_x64/lib/Release/relic.dll {wheel} && cp {wheel} {dest_dir} && ls -l {dest_dir} && pwd && ls -l dist && rm -fr relic_x64"
CIBW_TEST_COMMAND: python {project}/python-bindings/test.py
CIBW_ENVIRONMENT_LINUX: "PATH=/project/cmake-3.17.0-Linux-`uname -m`/bin:$PATH BUILD_VDF_CLIENT=N"
CIBW_REPAIR_WHEEL_COMMAND_MACOS: "pip uninstall -y delocate && pip install git+https://github.com/Chia-Network/delocate.git && delocate-listdeps {wheel} && delocate-wheel -v {wheel} && cp {wheel} {dest_dir} && ls -l {dest_dir} && pwd && ls -l dist"
Expand Down
158 changes: 145 additions & 13 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,148 @@ def build_extension(self, ext):
build_args, cwd=self.build_temp)


setup(
name='blspy',
version='0.1.14',
author='Mariano Sorgente',
author_email='[email protected]',
description='BLS signatures in c++ (python bindings)',
python_requires='>3.1',
install_requires=["wheel"],
long_description='BLS signatures with aggregation. Uses fast c++ implementation. See https://github.com/Chia-Network/bls-signatures for more details',
ext_modules=[CMakeExtension('blspy', '.')],
cmdclass=dict(build_ext=CMakeBuild),
zip_safe=False,
)
class get_pybind_include(object):
"""Helper class to determine the pybind11 include path
The purpose of this class is to postpone importing pybind11
until it is actually installed, so that the ``get_include()``
method can be invoked. """

def __init__(self, user=False):
import subprocess
try:
import pybind11
except ImportError:
if subprocess.call([sys.executable, '-m', 'pip', 'install', 'pybind11']):
raise RuntimeError('pybind11 install failed.')
self.user = user

def __str__(self):
import pybind11
return pybind11.get_include(self.user)


ext_modules = [
Extension(
'blspy',
[
'src/chaincode.cpp',
'src/extendedpublickey.cpp',
'src/extendedprivatekey.cpp',
'src/chaincode.cpp',
'src/signature.cpp',
'src/publickey.cpp',
'src/privatekey.cpp',
'src/bls.cpp',
'src/aggregationinfo.cpp',
'src/threshold.cpp',
'python-bindings/pythonbindings.cpp',
],
include_dirs=[
# Path to pybind11 headers
get_pybind_include(),
get_pybind_include(user=True),
'mpir_gc_x64',
'relic_x64/include',
],
library_dirs=['mpir_gc_x64','relic_x64/lib/Release'],
libraries=['mpir','relic_s','Advapi32'],
language='c++'
),
]


# As of Python 3.6, CCompiler has a `has_flag` method.
# cf http://bugs.python.org/issue26689
def has_flag(compiler, flagname):
"""Return a boolean indicating whether a flag name is supported on
the specified compiler.
"""
import tempfile
with tempfile.NamedTemporaryFile('w', suffix='.cpp') as f:
f.write('int main (int argc, char **argv) { return 0; }')
try:
compiler.compile([f.name], extra_postargs=[flagname])
except setuptools.distutils.errors.CompileError:
return False
return True


def cpp_flag(compiler):
"""Return the -std=c++[11/14/17] compiler flag.
The newer version is prefered over c++11 (when it is available).
"""
flags = ['-std=c++17', '-std=c++14', '-std=c++11']

for flag in flags:
if has_flag(compiler, flag): return flag

raise RuntimeError('Unsupported compiler -- at least C++11 support '
'is needed!')


class BuildExt(build_ext):
"""A custom build extension for adding compiler-specific options."""
c_opts = {
'msvc': ['/EHsc','/std:c++17'],
'unix': [],
}
l_opts = {
'msvc': [],
'unix': [],
}

if sys.platform == 'darwin':
darwin_opts = ['-stdlib=libc++', '-mmacosx-version-min=10.14']
c_opts['unix'] += darwin_opts
l_opts['unix'] += darwin_opts

def build_extensions(self):
ct = self.compiler.compiler_type
opts = self.c_opts.get(ct, [])
link_opts = self.l_opts.get(ct, [])
if ct == 'unix':
opts.append('-DVERSION_INFO="%s"' % self.distribution.get_version())
opts.append(cpp_flag(self.compiler))
if has_flag(self.compiler, '-fvisibility=hidden'):
opts.append('-fvisibility=hidden')
elif ct == 'msvc':
opts.append('/DVERSION_INFO=\\"%s\\"' % self.distribution.get_version())
for ext in self.extensions:
ext.extra_compile_args = opts
ext.extra_link_args = link_opts
build_ext.build_extensions(self)

import platform

if platform.system()=="Windows":
setup(
name='blspy',
author='Mariano Sorgente',
author_email='[email protected]',
description='BLS signatures in c++ (python bindings)',
long_description='BLS signatures with aggregation. Uses fast c++ implementation. See https://github.com/Chia-Network/bls-signatures for more details',
license='Apache License',
python_requires='>=3.7',
setup_requires=['pybind11>=2.4'],
install_requires=['pybind11>=2.4'],
build_requires=["pybind11>=2.4"],
ext_modules=ext_modules,
cmdclass={'build_ext': BuildExt},
zip_safe=False,
)
else:
setup(
name='blspy',
version='0.1.14',
author='Mariano Sorgente',
author_email='[email protected]',
description='BLS signatures in c++ (python bindings)',
python_requires='>3.1',
install_requires=["wheel"],
long_description='BLS signatures with aggregation. Uses fast c++ implementation. See https://github.com/Chia-Network/bls-signatures for more details',
ext_modules=[CMakeExtension('blspy', '.')],
cmdclass=dict(build_ext=CMakeBuild),
zip_safe=False,
)
137 changes: 0 additions & 137 deletions setupwin.py

This file was deleted.

0 comments on commit d939d5e

Please sign in to comment.