git: dcbef540c8b0 - main - science/py-pyqubo: New port: DWave: Python DSL for constructing QUBOs from mathematical expressions

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 15 Aug 2022 21:12:24 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=dcbef540c8b0f5002152f31989474d6189a94cec

commit dcbef540c8b0f5002152f31989474d6189a94cec
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-08-15 21:11:35 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-08-15 21:12:19 +0000

    science/py-pyqubo: New port: DWave: Python DSL for constructing QUBOs from mathematical expressions
---
 science/Makefile                             |  1 +
 science/py-pyqubo/Makefile                   | 43 ++++++++++++++++++++++++++++
 science/py-pyqubo/distinfo                   |  3 ++
 science/py-pyqubo/files/patch-CMakeLists.txt | 20 +++++++++++++
 science/py-pyqubo/pkg-descr                  |  8 ++++++
 5 files changed, 75 insertions(+)

diff --git a/science/Makefile b/science/Makefile
index 94401dcf6aec..ce9926eeff35 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -346,6 +346,7 @@
     SUBDIR += py-pymol
     SUBDIR += py-pyosf
     SUBDIR += py-pyprecice
+    SUBDIR += py-pyqubo
     SUBDIR += py-pysal
     SUBDIR += py-pyscf
     SUBDIR += py-pyteomics
diff --git a/science/py-pyqubo/Makefile b/science/py-pyqubo/Makefile
new file mode 100644
index 000000000000..d3e9b27683a8
--- /dev/null
+++ b/science/py-pyqubo/Makefile
@@ -0,0 +1,43 @@
+PORTNAME=	pyqubo
+DISTVERSION=	1.2.0
+CATEGORIES=	science python # quantum-computing
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	DWave: Python DSL for constructing QUBOs from mathematical expressions
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+PY_DEPENDS=	${PYTHON_PKGNAMEPREFIX}deprecated>=1.2.10:devel/py-deprecated@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dimod>=0.9.14:science/py-dimod@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dwave-neal>=0.5.7:science/py-dwave-neal@${PY_FLAVOR} \
+		${PYNUMPY} \
+		${PYTHON_PKGNAMEPREFIX}six>=1.15.0:devel/py-six@${PY_FLAVOR}
+BUILD_DEPENDS=	${PY_DEPENDS} \
+		${PYTHON_PKGNAMEPREFIX}codecov>=2.1.9:devel/py-codecov@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}coverage>=4.5.1:devel/py-coverage@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}nbsphinx>=0.8.3:textproc/py-nbsphinx@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}scikit-build>=0.11.1:devel/py-scikit-build@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0.36.2:devel/py-wheel@${PY_FLAVOR} \
+		boost-libs>0:devel/boost-libs \
+		cimod>0:math/cimod \
+		cmake:devel/cmake \
+		ninja:devel/ninja \
+		pybind11>0:devel/pybind11 \
+		robin-hood-hashing>0:devel/robin-hood-hashing
+RUN_DEPENDS=	${PY_DEPENDS}
+
+USES=		eigen:3 python:3.8+
+USE_PYTHON=	distutils cython autoplist unittest
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	recruit-communications
+
+CXXFLAGS+=	-I${LOCALBASE}/include/cimod \
+		-I${LOCALBASE}/include/eigen3
+
+TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+TEST_WRKSRC=	${WRKSRC}/tests
+
+.include <bsd.port.mk>
diff --git a/science/py-pyqubo/distinfo b/science/py-pyqubo/distinfo
new file mode 100644
index 000000000000..575f89b6f16b
--- /dev/null
+++ b/science/py-pyqubo/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1660514425
+SHA256 (recruit-communications-pyqubo-1.2.0_GH0.tar.gz) = a967dc7e4f94aa6d02b21badf5f5b3a95de0dbd435ce98435cc8078e14af73bc
+SIZE (recruit-communications-pyqubo-1.2.0_GH0.tar.gz) = 207142
diff --git a/science/py-pyqubo/files/patch-CMakeLists.txt b/science/py-pyqubo/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..4c2ba0ac35ab
--- /dev/null
+++ b/science/py-pyqubo/files/patch-CMakeLists.txt
@@ -0,0 +1,20 @@
+--- CMakeLists.txt.orig	2022-01-08 04:45:42 UTC
++++ CMakeLists.txt
+@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.20)
+ 
+ project(cpp_pyqubo)
+ 
++if (FALSE)
+ include(external/boost_assert.cmake)
+ include(external/boost_config.cmake)
+ include(external/boost_container.cmake)
+@@ -17,6 +18,9 @@ include(external/cimod.cmake)
+ include(external/eigen.cmake)
+ include(external/pybind11.cmake)
+ include(external/robin_hood.cmake)
++endif()
++
++find_package(pybind11)
+ 
+ pybind11_add_module(cpp_pyqubo src/main.cpp)
+ 
diff --git a/science/py-pyqubo/pkg-descr b/science/py-pyqubo/pkg-descr
new file mode 100644
index 000000000000..af60236d0664
--- /dev/null
+++ b/science/py-pyqubo/pkg-descr
@@ -0,0 +1,8 @@
+PyQUBO allows you to create QUBOs or Ising models from flexible mathematical
+expressions easily. Some of the features of PyQUBO:
+* python based (C++ backend)
+* fully integrated with Ocean SDK
+* automatic validation of constraints
+* placeholder for parameter tuning
+
+WWW: https://pyqubo.readthedocs.io/en/latest/