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}/