diff --git a/finance/py-chiapos/Makefile b/finance/py-chiapos/Makefile new file mode 100644 index 0000000..0f0cc1a --- /dev/null +++ b/finance/py-chiapos/Makefile @@ -0,0 +1,55 @@ +# $FreeBSD$ + +PORTNAME= chiapos +DISTVERSION= 1.0.3 +CATEGORIES= finance python +MASTER_SITES= CHEESESHOP +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +DISTFILES= ${DISTNAME}${EXTRACT_SUFX} + +MAINTAINER= risner@stdio.com +COMMENT= Chia proof of space plotting, proving, and verifying (wraps C++) + +LICENSE= APACHE20 BSD2CLAUSE MIT +LICENSE_COMB= multi +LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE +LICENSE_FILE_BSD2CLAUSE= ${WRKSRC}/lib/FiniteStateEntropy/LICENSE +LICENSE_FILE_MIT= ${WRKSRC}/MIT-LICENSES +LICENSE_DISTFILES_APACHE20= ${DISTNAME}${EXTRACT_SUFX} +LICENSE_DISTFILES_BSD2CLAUSE= ${DISTNAME}${EXTRACT_SUFX} +LICENSE_DISTFILES_MIT= ${DISTNAME}${EXTRACT_SUFX} ${DISTFILE_c} \ + ${DISTFILE_g} + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools_scm>=3.5.0:devel/py-setuptools_scm@${PY_FLAVOR} \ + ${PYTHON_SITELIBDIR}/pybind11:devel/py-pybind11@${PY_FLAVOR} \ +TEST_DEPENDS= mypy:devel/py-mypy@${PY_FLAVOR} \ + flake8:devel/py-flake8@${PY_FLAVOR} \ + py.test:devel/py-pytest@${PY_FLAVOR} + +USES= python:3.7+ +USE_GITHUB= nodefault +GH_TUPLE= jarro2783:cxxopts:302302b30839505703d37fb82f536c53cf9172fa:c/src-ext/cxxopts \ + gulrak:filesystem:4e21ab305794f5309a1454b4ae82ab9a0f5e0d25:g/src-ext/gulrak +USE_PYTHON= autoplist concurrent distutils + +PYDISTUTILS_INSTALLARGS+= --skip-build + +post-extract: +# Remove extraneous unused files to prevent confusion + @${RM} ${WRKSRC}/lib/FiniteStateEntropy/fetch-content-CMakeLists.txt + @${RM} ${WRKSRC}/pyproject.toml +# Concatenate the MIT licenses + @( ${ECHO_MSG} "uint128_t license:"; \ + ${CAT} ${WRKSRC}/uint128_t/LICENSE; \ + ${ECHO_MSG} ""; ${ECHO_MSG} ""; \ + ${ECHO_MSG} "cxxopts license:"; \ + ${CAT} ${WRKSRC}/src-ext/cxxopts/LICENSE; \ + ${ECHO_MSG} ""; ${ECHO_MSG} ""; \ + ${ECHO_MSG} "gulrak license:"; \ + ${CAT} ${WRKSRC}/src-ext/gulrak/LICENSE ) \ + > ${WRKSRC}/MIT-LICENSES + +do-test: stage + @(cd ${WRKSRC}; ${LOCALBASE}/bin/py.test ./tests -s -v) + +.include diff --git a/finance/py-chiapos/distinfo b/finance/py-chiapos/distinfo new file mode 100644 index 0000000..004b2ba --- /dev/null +++ b/finance/py-chiapos/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1623067298 +SHA256 (chiapos-1.0.3.tar.gz) = d987b481a3acbff1e0d77eb713af8d99ecec2bd11c2c465528a5078a433686bd +SIZE (chiapos-1.0.3.tar.gz) = 1291513 +SHA256 (jarro2783-cxxopts-302302b30839505703d37fb82f536c53cf9172fa_GH0.tar.gz) = 74e21646f3278243c9466665794d45410e63453ab7f3652acdae1d62efc4b21d +SIZE (jarro2783-cxxopts-302302b30839505703d37fb82f536c53cf9172fa_GH0.tar.gz) = 89640 +SHA256 (gulrak-filesystem-4e21ab305794f5309a1454b4ae82ab9a0f5e0d25_GH0.tar.gz) = fef3e809d584b77fd3ec677bd0d40cbe6737bbb3dbb1570fe1b2025262ea82c2 +SIZE (gulrak-filesystem-4e21ab305794f5309a1454b4ae82ab9a0f5e0d25_GH0.tar.gz) = 175696 diff --git a/finance/py-chiapos/files/patch-CMakeLists.txt b/finance/py-chiapos/files/patch-CMakeLists.txt new file mode 100644 index 0000000..1a818c0 --- /dev/null +++ b/finance/py-chiapos/files/patch-CMakeLists.txt @@ -0,0 +1,94 @@ +--- CMakeLists.txt.orig 2021-05-28 02:40:44 UTC ++++ CMakeLists.txt +@@ -14,29 +14,8 @@ endif() + project(chiapos C CXX ASM) + + # CMake 3.14+ +-include(FetchContent) ++include(${CMAKE_INSTALL_PREFIX}/share/cmake/pybind11/pybind11Config.cmake) + +-FetchContent_Declare( +- pybind11-src +- GIT_REPOSITORY https://github.com/pybind/pybind11.git +- GIT_TAG v2.6.2 +-) +-FetchContent_MakeAvailable(pybind11-src) +- +-FetchContent_Declare( +- cxxopts +- GIT_REPOSITORY https://github.com/jarro2783/cxxopts.git +- GIT_TAG v2.2.1 +-) +-FetchContent_MakeAvailable(cxxopts) +- +-FetchContent_Declare( +- gulrak +- GIT_REPOSITORY https://github.com/gulrak/filesystem.git +- GIT_TAG v1.5.6 +-) +-FetchContent_MakeAvailable(gulrak) +- + set(FSE_LIB ${CMAKE_CURRENT_SOURCE_DIR}/lib/FiniteStateEntropy/lib) + set(FSE_FILES + ${FSE_LIB}/fse_compress.c +@@ -48,8 +27,8 @@ set(FSE_FILES + include_directories( + ${INCLUDE_DIRECTORIES} + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/include +- ${cxxopts_SOURCE_DIR}/include +- ${gulrak_SOURCE_DIR}/include/ghc ++ ${CMAKE_CURRENT_SOURCE_DIR}/src-ext/cxxopts/include ++ ${CMAKE_CURRENT_SOURCE_DIR}/src-ext/gulrak/include/ghc + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/FiniteStateEntropy/lib + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/test +@@ -132,19 +111,6 @@ ENDIF() + + pybind11_add_module(chiapos ${CMAKE_CURRENT_SOURCE_DIR}/python-bindings/chiapos.cpp src/chacha8.c ${BLAKE3_SRC}) + +-add_executable(ProofOfSpace +- src/cli.cpp +- src/chacha8.c +- ${BLAKE3_SRC} +-) +- +-add_executable(RunTests +- tests/test-main.cpp +- tests/test.cpp +- src/chacha8.c +- ${BLAKE3_SRC} +-) +- + find_package(Threads REQUIRED) + + add_library(uint128 STATIC uint128_t/uint128_t.cpp) +@@ -152,29 +118,15 @@ target_include_directories(uint128 PUBLIC uint128_t) + + target_compile_features(fse PUBLIC cxx_std_17) + target_compile_features(chiapos PUBLIC cxx_std_17) +-target_compile_features(RunTests PUBLIC cxx_std_17) + + if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + target_link_libraries(chiapos PRIVATE fse Threads::Threads) +- target_link_libraries(ProofOfSpace fse Threads::Threads) +- target_link_libraries(RunTests fse Threads::Threads) + elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") + target_link_libraries(chiapos PRIVATE fse Threads::Threads) +- target_link_libraries(ProofOfSpace fse Threads::Threads) +- target_link_libraries(RunTests fse Threads::Threads) + elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + target_link_libraries(chiapos PRIVATE fse Threads::Threads) +- target_link_libraries(ProofOfSpace fse Threads::Threads) +- target_link_libraries(RunTests fse Threads::Threads) + elseif (MSVC) + target_link_libraries(chiapos PRIVATE fse Threads::Threads uint128) +- target_link_libraries(ProofOfSpace fse Threads::Threads uint128) +- target_link_libraries(RunTests fse Threads::Threads uint128) + else() + target_link_libraries(chiapos PRIVATE fse stdc++fs Threads::Threads) +- target_link_libraries(ProofOfSpace fse stdc++fs Threads::Threads) +- target_link_libraries(RunTests fse stdc++fs Threads::Threads) + endif() +- +-enable_testing() +-add_test(NAME RunTests COMMAND RunTests) diff --git a/finance/py-chiapos/files/patch-setup.py b/finance/py-chiapos/files/patch-setup.py new file mode 100644 index 0000000..acb8a1f --- /dev/null +++ b/finance/py-chiapos/files/patch-setup.py @@ -0,0 +1,95 @@ +--- setup.py.orig 2021-05-28 02:40:44 UTC ++++ setup.py +@@ -6,6 +6,11 @@ import platform + import subprocess + + from setuptools import setup, setuptools, Extension ++if platform.machine() == "amd64": ++ # Patch the unix compiler to accept ASM ++ from distutils.unixccompiler import UnixCCompiler ++ UnixCCompiler.src_extensions.append('.S') ++ del UnixCCompiler + from setuptools.command.build_ext import build_ext + from distutils.version import LooseVersion + +@@ -87,24 +92,34 @@ class get_pybind_include(object): + + return pybind11.get_include(self.user) + ++fse = ('fse', {'sources': [ ++ "lib/FiniteStateEntropy/lib/entropy_common.c", ++ "lib/FiniteStateEntropy/lib/fse_compress.c", ++ "lib/FiniteStateEntropy/lib/fse_decompress.c", ++ "lib/FiniteStateEntropy/lib/hist.c"]}) + ++if platform.machine() == "amd64": ++ blake = ('blake', {'sources': [ ++ "src/b3/blake3.c", ++ "src/b3/blake3_portable.c", ++ "src/b3/blake3_dispatch.c", ++ "src/b3/blake3_avx2_x86-64_unix.S", ++ "src/b3/blake3_avx512_x86-64_unix.S", ++ "src/b3/blake3_sse41_x86-64_unix.S"]}) ++else: ++ blake = ('blake', {'sources': [ ++ "src/b3/blake3.c", ++ "src/b3/blake3_portable.c", ++ "src/b3/blake3_dispatch.c"]}) ++ ++chacha = ('chacha', {'sources': ["src/chacha8.c"]}) ++ + ext_modules = [ + Extension( + "chiapos", + [ +- "lib/FiniteStateEntropy/lib/entropy_common.c", +- "lib/FiniteStateEntropy/lib/fse_compress.c", +- "lib/FiniteStateEntropy/lib/fse_decompress.c", +- "lib/FiniteStateEntropy/lib/hist.c", + "python-bindings/chiapos.cpp", + "uint128_t/uint128_t.cpp", +- "src/b3/blake3.c", +- "src/b3/blake3_portable.c", +- "src/b3/blake3_dispatch.c", +- "src/b3/blake3_avx2.c", +- "src/b3/blake3_avx512.c", +- "src/b3/blake3_sse41.c", +- "src/chacha8.c", + ], + include_dirs=[ + # Path to pybind11 headers +@@ -161,6 +176,12 @@ class BuildExt(build_ext): + "unix": [""], + } + ++ if "WITH_DEBUG" in os.environ: ++ c_opts["unix"] += ["-g"] ++ l_opts["unix"] += ["-g"] ++ else: ++ l_opts["unix"] += ["-s"] ++ + if sys.platform == "darwin": + darwin_opts = ["-stdlib=libc++", "-mmacosx-version-min=10.14"] + c_opts["unix"] += darwin_opts +@@ -202,6 +223,7 @@ if platform.system() == "Windows": + else: + setup( + name="chiapos", ++ version="1.0.3", + author="Mariano Sorgente", + author_email="mariano@chia.net", + description="Chia proof of space plotting, proving, and verifying (wraps C++)", +@@ -209,8 +231,10 @@ else: + python_requires=">=3.7", + long_description=open("README.md").read(), + long_description_content_type="text/markdown", +- url="https://github.com/Chia-Network/chiavdf", +- ext_modules=[CMakeExtension("chiapos", ".")], +- cmdclass=dict(build_ext=CMakeBuild), ++ url="https://github.com/Chia-Network/chiapos", ++ scripts=['tools/parse_disk.py'], ++ libraries=[fse, blake, chacha], ++ ext_modules=ext_modules, ++ cmdclass={"build_ext": BuildExt}, + zip_safe=False, + ) diff --git a/finance/py-chiapos/pkg-descr b/finance/py-chiapos/pkg-descr new file mode 100644 index 0000000..2aba498 --- /dev/null +++ b/finance/py-chiapos/pkg-descr @@ -0,0 +1,10 @@ +Chia's proof of space is written in C++. Includes a plotter, prover, and +verifier. It exclusively runs on 64 bit architectures. Read the Proof of +Space document to learn about what proof of space is and how it works. + +Notes: +i386 is not supported, and would be too slow for practical use if supported. + +This port is for the Python module (library). + +WWW: https://github.com/Chia-Network/chiapos