On 2021/09/03 10:51, Sebastien Marie wrote:
> On Thu, Sep 02, 2021 at 03:40:34PM +0100, Stuart Henderson wrote:
> > 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).
> 
> I slighty modified devel/cargo module to enforce offline mode in
> config files instead of expecting --offline to be passed to cargo
> invocation.
> 
> modifying devel/py-setuptools-rust cargo invocations would have been
> be possible too, but avoiding free patching is better.

Great, thanks very much.

> Regarding your diff, I modified it in two ways:
> 
> - no need to specify MODCARGO_VENDOR_DIR : the directory could stay at WRKSRC 
> level

Ah yes, that was my first attempt before I found MODCARGO_CARGOTOML,
I forgot to remove it.

> - cargo needs to be added to CONFIGURE_STYLE to properly initialize
>   MODCARGO_VENDOR_DIR usage. Due to use of python module, I needed to
>   cheat a bit (by using do-configure target), as if CONFIGURE_STYLE
>   isn't empty, python module doesn't install do-build, do-install and
>   do-test targets...

A perennial problem with python.port.mk!

> For testing it, you will the latest version of devel/cargo (to make
> setuptools-rust to properly uses cargo offline mode).

crates.inc isn't in the diff, so here's a complete one. I'll do some tests
on i386 amd64 aarch64, is there anyone who can do at least a build test
on sparc64 for me please?

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    3 Sep 2021 10:48:12 -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,19 @@ 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
+WANTLIB+=      c c++abi
+
+do-configure:
+       @${MODCARGO_configure}
+.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  3 Sep 2021 10:48:12 -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    3 Sep 2021 10:48:12 -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   3 Sep 2021 10:48:12 -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}/

Reply via email to