Thought I'd take a look at enabling the rust pieces in py-cryptography.
A future release is expected to remove the "CRYPTOGRAPHY_DONT_BUILD_RUST=1"
knob, so it would be good to get this working. Runtime is working but
I'm not sure how to point the cargo invocations at the local modules
rather than trying to download at build time (so it fails with PORTS_PRIVSEP
if _pbuild is not allowed network access).
I'll have another look sometime but thought I'd send out what I have so far
in case anyone else is interested (testing on various archs in its current
state might be useful too).
Index: Makefile
===================================================================
RCS file: /cvs/ports/security/py-cryptography/Makefile,v
retrieving revision 1.50
diff -u -p -r1.50 Makefile
--- Makefile 2 Sep 2021 08:44:12 -0000 1.50
+++ Makefile 2 Sep 2021 14:22:06 -0000
@@ -3,8 +3,12 @@
COMMENT= cryptographic recipes and primitives for Python
MODPY_EGG_VERSION= 3.4.8
+REVISION= 0
DISTNAME= cryptography-${MODPY_EGG_VERSION}
+DISTFILES= cryptography-${MODPY_EGG_VERSION}${EXTRACT_SUFX}
PKGNAME= ${MODPY_PY_PREFIX}${DISTNAME}
+.include "crates.inc"
+
CATEGORIES= security devel
HOMEPAGE= https://cryptography.io/
@@ -44,6 +48,17 @@ TEST_DEPENDS= ${FULLPKGNAME}:${FULLPKGPA
security/py-cryptography_vectors${MODPY_FLAVOR}=${MODPY_EGG_VERSION} \
textproc/py-iso8601${MODPY_FLAVOR}
+.include <bsd.port.arch.mk>
+.if ${PROPERTIES:Mrust}
+MODULES+= devel/cargo
+RUST_COMMENT=
+MODCARGO_CARGOTOML= ${WRKSRC}/src/rust/Cargo.toml
+MODCARGO_VENDOR_DIR= ${WRKSRC}/src/rust/modcargo-crates
+WANTLIB+= c c++abi
+.else
+RUST_COMMENT= "@comment "
MAKE_ENV= CRYPTOGRAPHY_DONT_BUILD_RUST=1
+.endif
+SUBST_VARS+= RUST_COMMENT
.include <bsd.port.mk>
Index: crates.inc
===================================================================
RCS file: crates.inc
diff -N crates.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ crates.inc 2 Sep 2021 14:22:06 -0000
@@ -0,0 +1,32 @@
+# $OpenBSD$
+
+MODCARGO_CRATES += bitflags 1.2.1 # MIT/Apache-2.0
+MODCARGO_CRATES += cfg-if 1.0.0 # MIT/Apache-2.0
+MODCARGO_CRATES += ctor 0.1.19 # Apache-2.0 OR MIT
+MODCARGO_CRATES += ghost 0.1.2 # MIT OR Apache-2.0
+MODCARGO_CRATES += indoc 0.3.6 # MIT OR Apache-2.0
+MODCARGO_CRATES += indoc-impl 0.3.6 # MIT OR Apache-2.0
+MODCARGO_CRATES += instant 0.1.9 # BSD-3-Clause
+MODCARGO_CRATES += inventory 0.1.10 # MIT OR Apache-2.0
+MODCARGO_CRATES += inventory-impl 0.1.10 # MIT OR Apache-2.0
+MODCARGO_CRATES += libc 0.2.85 # MIT OR Apache-2.0
+MODCARGO_CRATES += lock_api 0.4.2 # Apache-2.0/MIT
+MODCARGO_CRATES += parking_lot 0.11.1 # Apache-2.0/MIT
+MODCARGO_CRATES += parking_lot_core 0.8.3 # Apache-2.0/MIT
+MODCARGO_CRATES += paste 0.1.18 # MIT OR Apache-2.0
+MODCARGO_CRATES += paste-impl 0.1.18 # MIT OR Apache-2.0
+MODCARGO_CRATES += proc-macro-hack 0.5.19 # MIT OR Apache-2.0
+MODCARGO_CRATES += proc-macro2 1.0.24 # MIT OR Apache-2.0
+MODCARGO_CRATES += pyo3 0.13.2 # Apache-2.0
+MODCARGO_CRATES += pyo3-macros 0.13.2 # Apache-2.0
+MODCARGO_CRATES += pyo3-macros-backend 0.13.2 # Apache-2.0
+MODCARGO_CRATES += quote 1.0.9 # MIT OR Apache-2.0
+MODCARGO_CRATES += redox_syscall 0.2.4 # MIT
+MODCARGO_CRATES += scopeguard 1.1.0 # MIT/Apache-2.0
+MODCARGO_CRATES += smallvec 1.6.1 # MIT/Apache-2.0
+MODCARGO_CRATES += syn 1.0.60 # MIT OR Apache-2.0
+MODCARGO_CRATES += unicode-xid 0.2.1 # MIT OR Apache-2.0
+MODCARGO_CRATES += unindent 0.1.7 # MIT OR Apache-2.0
+MODCARGO_CRATES += winapi 0.3.9 # MIT/Apache-2.0
+MODCARGO_CRATES += winapi-i686-pc-windows-gnu 0.4.0 # MIT/Apache-2.0
+MODCARGO_CRATES += winapi-x86_64-pc-windows-gnu 0.4.0 # MIT/Apache-2.0
Index: distinfo
===================================================================
RCS file: /cvs/ports/security/py-cryptography/distinfo,v
retrieving revision 1.26
diff -u -p -r1.26 distinfo
--- distinfo 1 Sep 2021 23:05:04 -0000 1.26
+++ distinfo 2 Sep 2021 14:22:06 -0000
@@ -1,2 +1,62 @@
+SHA256 (cargo/bitflags-1.2.1.tar.gz) =
zx3i/ox1vBRaL1d63ZUfgTSIm0eV1HRmpUpchG1pFpM=
+SHA256 (cargo/cfg-if-1.0.0.tar.gz) =
uvHeQzl2FYi8Bhnjy8ASDuWC67dLU7Tvv3kRe9LaQP0=
+SHA256 (cargo/ctor-0.1.19.tar.gz) =
6PRdmtQXvO9IF9YUpQGrVc3Zam/bJPSaq4mlSs/Waxk=
+SHA256 (cargo/ghost-0.1.2.tar.gz) =
GlvPG76rc6pM8v3mCoRoWNwDYWPHwzvsMJ+NF954VHk=
+SHA256 (cargo/indoc-0.3.6.tar.gz) =
R3Qai8YPsm641uAji7sm2Fdf9iP9yXsaLADAULloTtg=
+SHA256 (cargo/indoc-impl-0.3.6.tar.gz) =
zgRtFh8AD//eX0MqDQNNA0HcFSZDslmO1b/ORMTzqPA=
+SHA256 (cargo/instant-0.1.9.tar.gz) =
YRJO7rvWm4GQVY3yJa335Mqvzg10ORnl1rGWUjFOxew=
+SHA256 (cargo/inventory-0.1.10.tar.gz) =
Dw9++4BOyV4z25rUnkJS8EnjfosKRlLjzWH3mZ8u/38=
+SHA256 (cargo/inventory-impl-0.1.10.tar.gz) =
dcCU6UgWcjq5NkhGZpaPW1gGBJLogPPI0ASJoeJE+lE=
+SHA256 (cargo/libc-0.2.85.tar.gz) =
fMrEsAcAh15qB8bN43DUTTL6AcWmXN0vymhYxHnSi7M=
+SHA256 (cargo/lock_api-0.4.2.tar.gz) =
3Zb/0TWy/XuXOsAm0oCF3vvomD3wV87T608hMLCDExI=
+SHA256 (cargo/parking_lot-0.11.1.tar.gz) =
bXdErAKd8i3KYoTv5OiYmR0o4whccGyXK819pKJ6Fes=
+SHA256 (cargo/parking_lot_core-0.8.3.tar.gz) =
+np4KTjnRXY/5pB/xrqGlG1y9J/n4h3gdOCBKKmfsBg=
+SHA256 (cargo/paste-0.1.18.tar.gz) =
Rcogx32AvmZq7ytFSG2oYjj6vjPjgwa9MRj+SvM/qIA=
+SHA256 (cargo/paste-impl-0.1.18.tar.gz) =
2Vp9sgC5fvNwyObeAIglL34N//fQR6KFKOR0VsD8mLY=
+SHA256 (cargo/proc-macro-hack-0.5.19.tar.gz) =
2/DEi8HZE3WuXDzYHjci3/Grz4GjCWAkBkDSI/Wf4OU=
+SHA256 (cargo/proc-macro2-1.0.24.tar.gz) =
HgcE7hp+ANe7QX0HcOowPBvMur8O8WZ9rpK1ln9finE=
+SHA256 (cargo/pyo3-0.13.2.tar.gz) =
SDe46OGKECwj950emhELWX6jtoTJXodOsa2I+GgxCcM=
+SHA256 (cargo/pyo3-macros-0.13.2.tar.gz) =
pH8sMAzuw+WAZP1fj1thIw8v/WS95JcMgf3QVjotsbs=
+SHA256 (cargo/pyo3-macros-backend-0.13.2.tar.gz) =
h7CX5dhPy+PhZ/QA++3WV4IKN1sDTHi9hSBQdJpXXWY=
+SHA256 (cargo/quote-1.0.9.tar.gz) =
w9C5dF3C3r9QfIQi3gXXImzB8GRCFt/f6tmI+bGrMqc=
+SHA256 (cargo/redox_syscall-0.2.4.tar.gz) =
BeyMqUFsXqNwYrUCcDzX/LIHc2vClPbgzzZ6xvwjRXA=
+SHA256 (cargo/scopeguard-1.1.0.tar.gz) =
0pqwxtP8Dukv5m4tmfcA6rF6jVfRwdO3SDgPsguqeM0=
+SHA256 (cargo/smallvec-1.6.1.tar.gz) =
/g83yejzxaSmatZVqTx02qxK0AxEFTO/XG55kLtCYE4=
+SHA256 (cargo/syn-1.0.60.tar.gz) = xwBZfsqKWnYr6zV1Pva5TfIByBzKZ2YE9UdJWg1/AIE=
+SHA256 (cargo/unicode-xid-0.2.1.tar.gz) =
9/4Ls0eWUUOckRL3K2xQUDhXTJ+7V17Rvzt5f6Od1WQ=
+SHA256 (cargo/unindent-0.1.7.tar.gz) =
8U7gTZQVtSs66rBiWKPwcJMYK4i6D5uNID8hGnp9Qcc=
+SHA256 (cargo/winapi-0.3.9.tar.gz) =
XIOaZ0/NepiVLlkyQupACr6TmSdGdh44ZBQF0osA9Bk=
+SHA256 (cargo/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) =
rDuHxjYgQm3ZuZHlzgMp7/VFvMu7NPO+Cf9vtqtRt7Y=
+SHA256 (cargo/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) =
cS4ieEHQV8HuHNL7Ivp+WlRhro5I+iynnsQs/BkxGD8=
SHA256 (cryptography-3.4.8.tar.gz) =
lMxe1M6u/L5b84yPumoh/B02W7j7gm6haI4zcLLiShw=
+SIZE (cargo/bitflags-1.2.1.tar.gz) = 16745
+SIZE (cargo/cfg-if-1.0.0.tar.gz) = 7934
+SIZE (cargo/ctor-0.1.19.tar.gz) = 9307
+SIZE (cargo/ghost-0.1.2.tar.gz) = 12777
+SIZE (cargo/indoc-0.3.6.tar.gz) = 9663
+SIZE (cargo/indoc-impl-0.3.6.tar.gz) = 7933
+SIZE (cargo/instant-0.1.9.tar.gz) = 5213
+SIZE (cargo/inventory-0.1.10.tar.gz) = 11572
+SIZE (cargo/inventory-impl-0.1.10.tar.gz) = 6228
+SIZE (cargo/libc-0.2.85.tar.gz) = 516872
+SIZE (cargo/lock_api-0.4.2.tar.gz) = 20375
+SIZE (cargo/parking_lot-0.11.1.tar.gz) = 39854
+SIZE (cargo/parking_lot_core-0.8.3.tar.gz) = 32147
+SIZE (cargo/paste-0.1.18.tar.gz) = 12259
+SIZE (cargo/paste-impl-0.1.18.tar.gz) = 9451
+SIZE (cargo/proc-macro-hack-0.5.19.tar.gz) = 15556
+SIZE (cargo/proc-macro2-1.0.24.tar.gz) = 37716
+SIZE (cargo/pyo3-0.13.2.tar.gz) = 281372
+SIZE (cargo/pyo3-macros-0.13.2.tar.gz) = 5434
+SIZE (cargo/pyo3-macros-backend-0.13.2.tar.gz) = 33106
+SIZE (cargo/quote-1.0.9.tar.gz) = 25042
+SIZE (cargo/redox_syscall-0.2.4.tar.gz) = 23234
+SIZE (cargo/scopeguard-1.1.0.tar.gz) = 11470
+SIZE (cargo/smallvec-1.6.1.tar.gz) = 26444
+SIZE (cargo/syn-1.0.60.tar.gz) = 231087
+SIZE (cargo/unicode-xid-0.2.1.tar.gz) = 14392
+SIZE (cargo/unindent-0.1.7.tar.gz) = 8346
+SIZE (cargo/winapi-0.3.9.tar.gz) = 1200382
+SIZE (cargo/winapi-i686-pc-windows-gnu-0.4.0.tar.gz) = 2918815
+SIZE (cargo/winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz) = 2947998
SIZE (cryptography-3.4.8.tar.gz) = 546907
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/security/py-cryptography/pkg/PLIST,v
retrieving revision 1.18
diff -u -p -r1.18 PLIST
--- pkg/PLIST 1 Sep 2021 23:05:04 -0000 1.18
+++ pkg/PLIST 2 Sep 2021 14:22:06 -0000
@@ -84,6 +84,7 @@ ${MODPY_COMMENT}lib/python${MODPY_VERSIO
lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
@so
lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/_openssl${MODPY_ABI3SO}.so
@so
lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/_padding${MODPY_ABI3SO}.so
+${RUST_COMMENT}@so
lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/_rust${MODPY_ABI3SO}.so
lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/openssl/
lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/openssl/__init__.py
${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/cryptography/hazmat/bindings/openssl/${MODPY_PYCACHE}/