git: 07127db7c9b3 - main - math/py-rustworkx: New port: High performance Python graph library implemented in Rust

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 08 Aug 2022 17:55:52 UTC
The branch main has been updated by yuri:

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

commit 07127db7c9b357eb05c3c5d8c76bbfd78d169f2a
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-08-08 17:55:20 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-08-08 17:55:48 +0000

    math/py-rustworkx: New port: High performance Python graph library implemented in Rust
---
 math/Makefile               |   1 +
 math/py-rustworkx/Makefile  | 106 ++++++++++++++++++++++++++++++++++
 math/py-rustworkx/distinfo  | 137 ++++++++++++++++++++++++++++++++++++++++++++
 math/py-rustworkx/pkg-descr |   6 ++
 4 files changed, 250 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index db5740bf6eea..8920297d9a16 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -959,6 +959,7 @@
     SUBDIR += py-random2
     SUBDIR += py-roman
     SUBDIR += py-rpy2
+    SUBDIR += py-rustworkx
     SUBDIR += py-rvlib
     SUBDIR += py-scikit-umfpack
     SUBDIR += py-scs
diff --git a/math/py-rustworkx/Makefile b/math/py-rustworkx/Makefile
new file mode 100644
index 000000000000..1a58b4147417
--- /dev/null
+++ b/math/py-rustworkx/Makefile
@@ -0,0 +1,106 @@
+PORTNAME=	rustworkx
+DISTVERSION=	0.11.0-51
+DISTVERSIONSUFFIX=	-ge9edfdc
+CATEGORIES=	math python
+#MASTER_SITES=	CHEESESHOP
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	High performance Python graph library implemented in Rust
+
+LICENSE=	BSD3CLAUSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools-rust>0:devel/py-setuptools-rust@${PY_FLAVOR}
+RUN_DEPENDS=	${PYNUMPY}
+
+USES=		cargo python:3.7+
+USE_PYTHON=	autoplist concurrent distutils pytest # all tests fail to run, see https://github.com/Qiskit/rustworkx/issues/655
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	Qiskit
+
+CARGO_CRATES=	ahash-0.7.6 \
+		autocfg-1.1.0 \
+		bitflags-1.3.2 \
+		cfg-if-1.0.0 \
+		crossbeam-channel-0.5.4 \
+		crossbeam-deque-0.8.1 \
+		crossbeam-epoch-0.9.8 \
+		crossbeam-utils-0.8.8 \
+		either-1.6.1 \
+		fixedbitset-0.4.2 \
+		getrandom-0.2.6 \
+		hashbrown-0.11.2 \
+		hermit-abi-0.1.19 \
+		indexmap-1.7.0 \
+		indoc-1.0.6 \
+		instant-0.1.12 \
+		itoa-1.0.2 \
+		lazy_static-1.4.0 \
+		libc-0.2.126 \
+		lock_api-0.4.7 \
+		matrixmultiply-0.2.4 \
+		memchr-2.5.0 \
+		memoffset-0.6.5 \
+		ndarray-0.13.1 \
+		num-bigint-0.4.3 \
+		num-complex-0.2.4 \
+		num-complex-0.4.1 \
+		num-integer-0.1.45 \
+		num-traits-0.2.15 \
+		num_cpus-1.13.1 \
+		numpy-0.16.2 \
+		once_cell-1.12.0 \
+		parking_lot-0.11.2 \
+		parking_lot_core-0.8.5 \
+		petgraph-0.6.2 \
+		ppv-lite86-0.2.16 \
+		proc-macro2-1.0.39 \
+		pyo3-0.16.5 \
+		pyo3-build-config-0.16.5 \
+		pyo3-ffi-0.16.5 \
+		pyo3-macros-0.16.5 \
+		pyo3-macros-backend-0.16.5 \
+		quick-xml-0.22.0 \
+		quote-1.0.18 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.3 \
+		rand_pcg-0.3.1 \
+		rawpointer-0.2.1 \
+		rayon-1.5.3 \
+		rayon-core-1.9.3 \
+		redox_syscall-0.2.13 \
+		ryu-1.0.10 \
+		scopeguard-1.1.0 \
+		serde-1.0.142 \
+		serde_derive-1.0.142 \
+		serde_json-1.0.83 \
+		smallvec-1.8.0 \
+		syn-1.0.96 \
+		target-lexicon-0.12.4 \
+		unicode-ident-1.0.0 \
+		unindent-0.1.9 \
+		version_check-0.9.4 \
+		wasi-0.10.2+wasi-snapshot-preview1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0
+
+CARGO_BUILD=	no
+CARGO_INSTALL=	no
+CARGO_TEST=	no
+CARGO_TARGET_DIR=	${WRKSRC}/target
+
+MAKE_ENV=	${CARGO_ENV}
+TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+TEST_WRKSRC=	${BUILD_WRKDIR}
+
+PLIST_FILES=	${PYTHON_SITELIBDIR}/rustworkx/rustworkx${PYTHON_EXT_SUFFIX}.so # workaround for https://github.com/Qiskit/rustworkx/issues/654
+
+BINARY_ALIAS=	python3=${PYTHON_CMD}
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/rustworkx/rustworkx.cpython-${PYTHON_SUFFIX}.so
+
+.include <bsd.port.mk>
diff --git a/math/py-rustworkx/distinfo b/math/py-rustworkx/distinfo
new file mode 100644
index 000000000000..8c4aeba19f18
--- /dev/null
+++ b/math/py-rustworkx/distinfo
@@ -0,0 +1,137 @@
+TIMESTAMP = 1659975865
+SHA256 (rust/crates/ahash-0.7.6.crate) = fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47
+SIZE (rust/crates/ahash-0.7.6.crate) = 38030
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/crossbeam-channel-0.5.4.crate) = 5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53
+SIZE (rust/crates/crossbeam-channel-0.5.4.crate) = 88237
+SHA256 (rust/crates/crossbeam-deque-0.8.1.crate) = 6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e
+SIZE (rust/crates/crossbeam-deque-0.8.1.crate) = 20852
+SHA256 (rust/crates/crossbeam-epoch-0.9.8.crate) = 1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c
+SIZE (rust/crates/crossbeam-epoch-0.9.8.crate) = 46012
+SHA256 (rust/crates/crossbeam-utils-0.8.8.crate) = 0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38
+SIZE (rust/crates/crossbeam-utils-0.8.8.crate) = 39681
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/fixedbitset-0.4.2.crate) = 0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80
+SIZE (rust/crates/fixedbitset-0.4.2.crate) = 15954
+SHA256 (rust/crates/getrandom-0.2.6.crate) = 9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad
+SIZE (rust/crates/getrandom-0.2.6.crate) = 28043
+SHA256 (rust/crates/hashbrown-0.11.2.crate) = ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e
+SIZE (rust/crates/hashbrown-0.11.2.crate) = 85713
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/indexmap-1.7.0.crate) = bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5
+SIZE (rust/crates/indexmap-1.7.0.crate) = 50363
+SHA256 (rust/crates/indoc-1.0.6.crate) = 05a0bd019339e5d968b37855180087b7b9d512c5046fbd244cf8c95687927d6e
+SIZE (rust/crates/indoc-1.0.6.crate) = 14312
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/itoa-1.0.2.crate) = 112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d
+SIZE (rust/crates/itoa-1.0.2.crate) = 11112
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.126.crate) = 349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836
+SIZE (rust/crates/libc-0.2.126.crate) = 590481
+SHA256 (rust/crates/lock_api-0.4.7.crate) = 327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53
+SIZE (rust/crates/lock_api-0.4.7.crate) = 25371
+SHA256 (rust/crates/matrixmultiply-0.2.4.crate) = 916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1
+SIZE (rust/crates/matrixmultiply-0.2.4.crate) = 32929
+SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
+SIZE (rust/crates/memchr-2.5.0.crate) = 65812
+SHA256 (rust/crates/memoffset-0.6.5.crate) = 5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce
+SIZE (rust/crates/memoffset-0.6.5.crate) = 7686
+SHA256 (rust/crates/ndarray-0.13.1.crate) = ac06db03ec2f46ee0ecdca1a1c34a99c0d188a0d83439b84bf0cb4b386e4ab09
+SIZE (rust/crates/ndarray-0.13.1.crate) = 213899
+SHA256 (rust/crates/num-bigint-0.4.3.crate) = f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f
+SIZE (rust/crates/num-bigint-0.4.3.crate) = 97799
+SHA256 (rust/crates/num-complex-0.2.4.crate) = b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95
+SIZE (rust/crates/num-complex-0.2.4.crate) = 24679
+SHA256 (rust/crates/num-complex-0.4.1.crate) = 97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790
+SIZE (rust/crates/num-complex-0.4.1.crate) = 25872
+SHA256 (rust/crates/num-integer-0.1.45.crate) = 225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9
+SIZE (rust/crates/num-integer-0.1.45.crate) = 22529
+SHA256 (rust/crates/num-traits-0.2.15.crate) = 578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd
+SIZE (rust/crates/num-traits-0.2.15.crate) = 49262
+SHA256 (rust/crates/num_cpus-1.13.1.crate) = 19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1
+SIZE (rust/crates/num_cpus-1.13.1.crate) = 14752
+SHA256 (rust/crates/numpy-0.16.2.crate) = 383ae168529a39fc97cbc1d9d4fa865377731a519bc27553ed96f50594de7c45
+SIZE (rust/crates/numpy-0.16.2.crate) = 51574
+SHA256 (rust/crates/once_cell-1.12.0.crate) = 7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225
+SIZE (rust/crates/once_cell-1.12.0.crate) = 31549
+SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
+SIZE (rust/crates/parking_lot-0.11.2.crate) = 39869
+SHA256 (rust/crates/parking_lot_core-0.8.5.crate) = d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216
+SIZE (rust/crates/parking_lot_core-0.8.5.crate) = 32466
+SHA256 (rust/crates/petgraph-0.6.2.crate) = e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143
+SIZE (rust/crates/petgraph-0.6.2.crate) = 182513
+SHA256 (rust/crates/ppv-lite86-0.2.16.crate) = eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872
+SIZE (rust/crates/ppv-lite86-0.2.16.crate) = 22245
+SHA256 (rust/crates/proc-macro2-1.0.39.crate) = c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f
+SIZE (rust/crates/proc-macro2-1.0.39.crate) = 41663
+SHA256 (rust/crates/pyo3-0.16.5.crate) = 1e6302e85060011447471887705bb7838f14aba43fcb06957d823739a496b3dc
+SIZE (rust/crates/pyo3-0.16.5.crate) = 363266
+SHA256 (rust/crates/pyo3-build-config-0.16.5.crate) = b5b65b546c35d8a3b1b2f0ddbac7c6a569d759f357f2b9df884f5d6b719152c8
+SIZE (rust/crates/pyo3-build-config-0.16.5.crate) = 28880
+SHA256 (rust/crates/pyo3-ffi-0.16.5.crate) = c275a07127c1aca33031a563e384ffdd485aee34ef131116fcd58e3430d1742b
+SIZE (rust/crates/pyo3-ffi-0.16.5.crate) = 60737
+SHA256 (rust/crates/pyo3-macros-0.16.5.crate) = 284fc4485bfbcc9850a6d661d627783f18d19c2ab55880b021671c4ba83e90f7
+SIZE (rust/crates/pyo3-macros-0.16.5.crate) = 8456
+SHA256 (rust/crates/pyo3-macros-backend-0.16.5.crate) = 53bda0f58f73f5c5429693c96ed57f7abdb38fdfc28ae06da4101a257adb7faf
+SIZE (rust/crates/pyo3-macros-backend-0.16.5.crate) = 49221
+SHA256 (rust/crates/quick-xml-0.22.0.crate) = 8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b
+SIZE (rust/crates/quick-xml-0.22.0.crate) = 132066
+SHA256 (rust/crates/quote-1.0.18.crate) = a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1
+SIZE (rust/crates/quote-1.0.18.crate) = 28911
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
+SIZE (rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (rust/crates/rand_pcg-0.3.1.crate) = 59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e
+SIZE (rust/crates/rand_pcg-0.3.1.crate) = 11983
+SHA256 (rust/crates/rawpointer-0.2.1.crate) = 60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3
+SIZE (rust/crates/rawpointer-0.2.1.crate) = 7490
+SHA256 (rust/crates/rayon-1.5.3.crate) = bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d
+SIZE (rust/crates/rayon-1.5.3.crate) = 167246
+SHA256 (rust/crates/rayon-core-1.9.3.crate) = 258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f
+SIZE (rust/crates/rayon-core-1.9.3.crate) = 65300
+SHA256 (rust/crates/redox_syscall-0.2.13.crate) = 62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42
+SIZE (rust/crates/redox_syscall-0.2.13.crate) = 23759
+SHA256 (rust/crates/ryu-1.0.10.crate) = f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695
+SIZE (rust/crates/ryu-1.0.10.crate) = 48485
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/serde-1.0.142.crate) = e590c437916fb6b221e1d00df6e3294f3fccd70ca7e92541c475d6ed6ef5fee2
+SIZE (rust/crates/serde-1.0.142.crate) = 76384
+SHA256 (rust/crates/serde_derive-1.0.142.crate) = 34b5b8d809babe02f538c2cfec6f2c1ed10804c0e5a6a041a049a4f5588ccc2e
+SIZE (rust/crates/serde_derive-1.0.142.crate) = 54872
+SHA256 (rust/crates/serde_json-1.0.83.crate) = 38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7
+SIZE (rust/crates/serde_json-1.0.83.crate) = 144566
+SHA256 (rust/crates/smallvec-1.8.0.crate) = f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83
+SIZE (rust/crates/smallvec-1.8.0.crate) = 27992
+SHA256 (rust/crates/syn-1.0.96.crate) = 0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf
+SIZE (rust/crates/syn-1.0.96.crate) = 236896
+SHA256 (rust/crates/target-lexicon-0.12.4.crate) = c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1
+SIZE (rust/crates/target-lexicon-0.12.4.crate) = 23020
+SHA256 (rust/crates/unicode-ident-1.0.0.crate) = d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee
+SIZE (rust/crates/unicode-ident-1.0.0.crate) = 34224
+SHA256 (rust/crates/unindent-0.1.9.crate) = 52fee519a3e570f7df377a06a1a7775cdbfb7aa460be7e08de2b1f0e69973a44
+SIZE (rust/crates/unindent-0.1.9.crate) = 8392
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
+SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (Qiskit-rustworkx-0.11.0-51-ge9edfdc_GH0.tar.gz) = 99aa45322a00d1ffa7fdb0b7811e0edf5abe6fa84ea935690781f9a26b75c0fe
+SIZE (Qiskit-rustworkx-0.11.0-51-ge9edfdc_GH0.tar.gz) = 458831
diff --git a/math/py-rustworkx/pkg-descr b/math/py-rustworkx/pkg-descr
new file mode 100644
index 000000000000..1d7d689406e4
--- /dev/null
+++ b/math/py-rustworkx/pkg-descr
@@ -0,0 +1,6 @@
+rustworkx is a general purpose graph library for Python written in Rust to take
+advantage of the performance and safety that Rust provides. It is designed to
+provide a high performance general purpose graph library for any Python
+application.
+
+WWW: https://github.com/Qiskit/rustworkx