From 5afeed8d84a221dbe1217683dd77c9714415d44c Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Wed, 9 Oct 2024 10:42:20 +0200 Subject: [PATCH 1/9] Align build-common.sh ndk version to ndkDir --- target/build-common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/build-common.sh b/target/build-common.sh index 85266bdcc8..a4a3f0541c 100644 --- a/target/build-common.sh +++ b/target/build-common.sh @@ -26,7 +26,7 @@ fail() { # * According to https://github.com/kivy/python-for-android/pull/2615, the mzakharo # build of gfortran is not compatible with NDK version 23, which is the version in # which they removed the GNU binutils. -ndk_version=22.1.7171670 # See ndkDir in product/runtime/build.gradle. +ndk_version=26.1.10909125 # See ndkDir in product/runtime/build.gradle. ndk=${ANDROID_HOME:?}/ndk/$ndk_version if ! [ -e $ndk ]; then @@ -57,7 +57,7 @@ esac # $ndk/build/cmake/android.toolchain.cmake. toolchain=$(echo $ndk/toolchains/llvm/prebuilt/*) export AR="$toolchain/bin/llvm-ar" -export AS="$toolchain/bin/$host_triplet-as" +export AS="$toolchain/bin/llvm-as" export CC="$toolchain/bin/${clang_triplet:-$host_triplet}$api_level-clang" export CXX="${CC}++" export LD="$toolchain/bin/ld" From 0188b5345ed9dbc937deb1603175e7afc30e8f59 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Wed, 9 Oct 2024 11:02:52 +0200 Subject: [PATCH 2/9] Initial support for Rust PyO3 abi3 modules This allows compiling Rust modules depending on pyo3 >= 0.16.4, provided that module specifies a abi3-py* compatibility feature and that the Rust compiler and toolchains are installed in the build machine --- server/pypi/build-wheel.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/server/pypi/build-wheel.py b/server/pypi/build-wheel.py index fbb6c6ce50..b4a8279782 100755 --- a/server/pypi/build-wheel.py +++ b/server/pypi/build-wheel.py @@ -113,6 +113,8 @@ def main(self): # worth keeping them in existing meta.yaml files in case that changes. pass + self.needs_rust = next((True for x in self.meta["requirements"]["build"] if x.startswith("setuptools-rust ")), False) + self.unpack_and_build() except CommandError as e: @@ -616,6 +618,23 @@ def env_vars(self): "SRC_DIR": self.src_dir, }) + if self.needs_rust: + # env variables for rust/PyO3 cross compilation + env.update({ + "RUSTFLAGS": f"-C linker={env['CC']} -L native={self.host_env}/chaquopy/lib", + "CARGO_BUILD_TARGET": ABIS[self.abi].tool_prefix, + + # normally PyO3 requires sysconfig modules, which are not currently available in chaquopy + # and would require rebuilding. However, since PyO3 0.16.4, it's possible to compile abi3 + # modules without sysconfig modules. This only requires packages to specify the minumim + # python compatibility version via one of the "abi3-py*" features (e.g. abi3-py310). + # Doing this requires the "-L native" flag in RUSTFLAGS above. + # https://pyo3.rs/main/building-and-distribution#building-abi3-extensions-without-a-python-interpreter + "PYO3_NO_PYTHON": "1", + "PYO3_CROSS": "1", + "PYO3_CROSS_PYTHON_VERSION": self.python, + }) + for var in self.meta["build"]["script_env"]: key, value = var.split("=") env[key] = value From a4bd0fb28e40befd267dba9cff44e0c6aa630f2b Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Wed, 9 Oct 2024 11:13:01 +0200 Subject: [PATCH 3/9] Fix compilation and link of Rust packages They include modules which are locate into the cargo home and libs located under the rustup toolchains dir, which are outside of the source directory of valid_dirs --- server/pypi/compiler-wrapper.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/pypi/compiler-wrapper.py b/server/pypi/compiler-wrapper.py index 1f510c32ab..07fd3a8e60 100755 --- a/server/pypi/compiler-wrapper.py +++ b/server/pypi/compiler-wrapper.py @@ -12,7 +12,8 @@ valid_dirs = [abspath(f"{dirname(sys.argv[0])}/../..")] def is_valid(dir, prefix): - if any(commonpath([vd, abspath(dir)]) == vd for vd in valid_dirs): + absdir = abspath(dir) + if any(commonpath([vd, absdir]) == vd for vd in valid_dirs) or (".cargo" in absdir) or (".rustup" in absdir): return True else: print(f"Chaquopy: ignored invalid {prefix} directory: {dir!r}", file=sys.stderr) From 4461ddaad28c422d7e7ece57b4ebe44f2665bd3a Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Wed, 9 Oct 2024 11:15:12 +0200 Subject: [PATCH 4/9] Fix list index out of range with setuptools_rust 1.7.0 setuptools_rust/build.py", line 470, in get_dylib_ext_path host_arch = host_platform.rsplit("-", 1)[1] IndexError: list index out of range Closes #1141 --- server/pypi/build-wheel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/pypi/build-wheel.py b/server/pypi/build-wheel.py index b4a8279782..99c77c157c 100755 --- a/server/pypi/build-wheel.py +++ b/server/pypi/build-wheel.py @@ -583,7 +583,7 @@ def get_python_env_vars(self, env, pypi_env): # Overrides sysconfig.get_platform and distutils.util.get_platform. # TODO: consider replacing this with crossenv. - env["_PYTHON_HOST_PLATFORM"] = f"linux_{ABIS[self.abi].uname_machine}" + env["_PYTHON_HOST_PLATFORM"] = f"linux-{ABIS[self.abi].uname_machine}" @contextmanager def env_vars(self): From b6d8f3ca231bdeaa73e6cf61f4d559d00643df85 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Wed, 9 Oct 2024 11:17:41 +0200 Subject: [PATCH 5/9] Update to cryptography 42.0.8 (requires rust) Cryptography 42.0.8 can now be built provided that the Rust compiler and toolchains are installed into the build machine. Note: legacy ciphers are disabled to prevent load-time crash as if the CRYPTOGRAPHY_OPENSSL_NO_LEGACY environment variable was set. https://cryptography.io/en/latest/openssl/#legacy-provider-in-openssl-3-x Closes #657 --- server/pypi/build-wheel.py | 3 ++ server/pypi/packages/cryptography/meta.yaml | 31 ++----------------- .../patches/openssl_no_legacy.patch | 13 ++++++++ .../patches/pyo3_no_interpreter.patch | 11 +++++++ 4 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 server/pypi/packages/cryptography/patches/openssl_no_legacy.patch create mode 100644 server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch diff --git a/server/pypi/build-wheel.py b/server/pypi/build-wheel.py index 99c77c157c..1eb0c72ba8 100755 --- a/server/pypi/build-wheel.py +++ b/server/pypi/build-wheel.py @@ -616,6 +616,9 @@ def env_vars(self): "PKG_VERSION": self.version, "RECIPE_DIR": self.package_dir, "SRC_DIR": self.src_dir, + + # allows packages to locate openssl, openssl must be in the meta.yml requirements.host + "OPENSSL_DIR": f"{self.host_env}/chaquopy", }) if self.needs_rust: diff --git a/server/pypi/packages/cryptography/meta.yaml b/server/pypi/packages/cryptography/meta.yaml index 70aed87a2d..7bf28c895f 100644 --- a/server/pypi/packages/cryptography/meta.yaml +++ b/server/pypi/packages/cryptography/meta.yaml @@ -1,37 +1,10 @@ package: name: cryptography - version: "3.4.8" - -build: - number: 2 - script_env: - - CRYPTOGRAPHY_DONT_BUILD_RUST=1 + version: "42.0.8" requirements: build: - cffi 1.15.1 - - setuptools-rust 0.11.6 + - setuptools-rust 1.7.0 host: - # This version of cryptography isn't compatible with OpenSSL 3. So to build it for - # Python 3.9 and 3.10, we link it against OpenSSL 1.1. - # - # We don't do this by supplying an OpenSSL 1.1 wheel with a shared library, because - # the Chaquopy runtime (perhaps unnecessarily) loads non-Python libraries using - # RTLD_GLOBAL, which could cause conflicts with the OpenSSL 3 library which Chaquopy - # loads on startup. - # - # Instead, we link against OpenSSL 1.1 statically, as follows: - # * Run the OpenSSL 1.1 build command from target/build-all.sh. - # * For each combination of Python version and ABI, run build-with-static-openssl.sh - # in this directory. - # - # Although this may cause some of OpenSSL's symbols to be exported by crytography's - # Python modules, that's safe because Python modules are loaded using RTLD_LOCAL. And - # although the GLOBAL/LOCAL distinction is only respected from API level 23, older - # versions wouldn't include earlier libraries in the symbol search order for later - # libraries anyway, unless they were listed in DT_NEEDED. - # - # More information: - # * https://github.com/aosp-mirror/platform_bionic/blob/master/android-changes-for-ndk-developers.md - # * https://github.com/android/ndk/issues/1244 - openssl diff --git a/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch b/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch new file mode 100644 index 0000000000..81e04f4f96 --- /dev/null +++ b/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch @@ -0,0 +1,13 @@ +--- src-original/src/rust/src/lib.rs ++++ src/src/rust/src/lib.rs +@@ -45,9 +45,7 @@ + // serialization), RC4, Blowfish, IDEA, SEED, etc. These things + // are ugly legacy, but we aren't going to get rid of them + // any time soon. +- let load_legacy = env::var("CRYPTOGRAPHY_OPENSSL_NO_LEGACY") +- .map(|v| v.is_empty() || v == "0") +- .unwrap_or(true); ++ let load_legacy = false; + let legacy = if load_legacy { + let legacy_result = provider::Provider::load(None, "legacy"); + _legacy_provider_error(legacy_result.is_ok())?; diff --git a/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch b/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch new file mode 100644 index 0000000000..3f03ced539 --- /dev/null +++ b/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch @@ -0,0 +1,11 @@ +--- src-original/src/rust/Cargo.toml ++++ src/src/rust/Cargo.toml +@@ -10,7 +10,7 @@ + [dependencies] + once_cell = "1" + cfg-if = "1" +-pyo3 = { version = "0.20", features = ["abi3"] } ++pyo3 = { version = "0.20", features = ["abi3", "abi3-py310"] } + asn1 = { version = "0.15.5", default-features = false } + cryptography-cffi = { path = "cryptography-cffi" } + cryptography-key-parsing = { path = "cryptography-key-parsing" } From d07f7b2844c079e0af340832a17dc337e70cf095 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Thu, 17 Oct 2024 19:37:05 +0000 Subject: [PATCH 6/9] Various cleanups --- server/pypi/build-wheel.py | 35 ++++++++++--------- server/pypi/compiler-wrapper.py | 5 ++- .../cryptography/build-with-static-openssl.sh | 22 ------------ .../patches/openssl_no_legacy.patch | 5 ++- .../patches/pyo3_no_interpreter.patch | 5 ++- 5 files changed, 31 insertions(+), 41 deletions(-) delete mode 100755 server/pypi/packages/cryptography/build-with-static-openssl.sh diff --git a/server/pypi/build-wheel.py b/server/pypi/build-wheel.py index 0bd707d228..99fac8b1df 100755 --- a/server/pypi/build-wheel.py +++ b/server/pypi/build-wheel.py @@ -107,7 +107,9 @@ def main(self): self.meta["requirements"]["host"].remove(name) self.needs_python = True - self.needs_rust = next((True for x in self.meta["requirements"]["build"] if x.startswith("setuptools-rust ")), False) + self.needs_rust = any( + x.startswith("setuptools-rust ") + for x in self.meta["requirements"]["build"]) self.unpack_and_build() @@ -670,21 +672,22 @@ def env_vars(self): }) if self.needs_rust: - # env variables for rust/PyO3 cross compilation - env.update({ - "RUSTFLAGS": f"-C linker={env['CC']} -L native={self.host_env}/chaquopy/lib", - "CARGO_BUILD_TARGET": ABIS[self.abi].tool_prefix, - - # normally PyO3 requires sysconfig modules, which are not currently available in chaquopy - # and would require rebuilding. However, since PyO3 0.16.4, it's possible to compile abi3 - # modules without sysconfig modules. This only requires packages to specify the minumim - # python compatibility version via one of the "abi3-py*" features (e.g. abi3-py310). - # Doing this requires the "-L native" flag in RUSTFLAGS above. - # https://pyo3.rs/main/building-and-distribution#building-abi3-extensions-without-a-python-interpreter - "PYO3_NO_PYTHON": "1", - "PYO3_CROSS": "1", - "PYO3_CROSS_PYTHON_VERSION": self.python, - }) + env.update({ + "RUSTFLAGS": f"-C linker={env['CC']} -L native={self.host_env}/chaquopy/lib", + "CARGO_BUILD_TARGET": ABIS[self.abi].tool_prefix, + + # Normally PyO3 requires sysconfig modules, which are not currently + # available in the `target` packages for Python 3.12 and older. However, + # since PyO3 0.16.4, it's possible to compile abi3 modules without + # sysconfig modules. This only requires packages to specify the minimum + # python compatibility version via one of the "abi3-py*" features (e.g. + # abi3-py310). Doing this requires the "-L native" flag in RUSTFLAGS + # above. + # https://pyo3.rs/main/building-and-distribution#building-abi3-extensions-without-a-python-interpreter + "PYO3_NO_PYTHON": "1", + "PYO3_CROSS": "1", + "PYO3_CROSS_PYTHON_VERSION": self.python, + }) for var in self.meta["build"]["script_env"]: key, value = var.split("=") diff --git a/server/pypi/compiler-wrapper.py b/server/pypi/compiler-wrapper.py index 07fd3a8e60..bfc3d7d32d 100755 --- a/server/pypi/compiler-wrapper.py +++ b/server/pypi/compiler-wrapper.py @@ -13,7 +13,10 @@ def is_valid(dir, prefix): absdir = abspath(dir) - if any(commonpath([vd, absdir]) == vd for vd in valid_dirs) or (".cargo" in absdir) or (".rustup" in absdir): + if ( + any(commonpath([vd, absdir]) == vd for vd in valid_dirs) + or (".cargo" in absdir) or (".rustup" in absdir) + ): return True else: print(f"Chaquopy: ignored invalid {prefix} directory: {dir!r}", file=sys.stderr) diff --git a/server/pypi/packages/cryptography/build-with-static-openssl.sh b/server/pypi/packages/cryptography/build-with-static-openssl.sh deleted file mode 100755 index a3e762c524..0000000000 --- a/server/pypi/packages/cryptography/build-with-static-openssl.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# -# See meta.yaml for an explanation. -set -eux - -python=${1:?} -abi=${2:?} - -cd $(dirname $0)/../.. -./build-wheel.py --python $python --abi $abi --no-build cryptography - -python_tag=cp$(echo $python | sed 's/\.//') -abi_tag=$(echo $abi | sed 's/-/_/') -reqs_dir=packages/cryptography/build/3.4.8/$python_tag-$python_tag-android_21_$abi_tag/requirements/chaquopy -rm -r $reqs_dir/include/openssl -rm $reqs_dir/lib/lib{crypto,ssl}* - -prefix_dir=../../target/prefix/$abi -cp -a $prefix_dir/include/openssl $reqs_dir/include -cp -a $prefix_dir/lib/*.a $reqs_dir/lib - -./build-wheel.py --python $python --abi $abi --no-unpack --no-reqs cryptography diff --git a/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch b/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch index 81e04f4f96..fb3db9ccbb 100644 --- a/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch +++ b/server/pypi/packages/cryptography/patches/openssl_no_legacy.patch @@ -1,13 +1,16 @@ --- src-original/src/rust/src/lib.rs +++ src/src/rust/src/lib.rs -@@ -45,9 +45,7 @@ +@@ -45,9 +45,10 @@ // serialization), RC4, Blowfish, IDEA, SEED, etc. These things // are ugly legacy, but we aren't going to get rid of them // any time soon. - let load_legacy = env::var("CRYPTOGRAPHY_OPENSSL_NO_LEGACY") - .map(|v| v.is_empty() || v == "0") - .unwrap_or(true); ++ ++ // Chaquopy: the legacy provider is not available. + let load_legacy = false; ++ let legacy = if load_legacy { let legacy_result = provider::Provider::load(None, "legacy"); _legacy_provider_error(legacy_result.is_ok())?; diff --git a/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch b/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch index 3f03ced539..c37c792f90 100644 --- a/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch +++ b/server/pypi/packages/cryptography/patches/pyo3_no_interpreter.patch @@ -1,11 +1,14 @@ --- src-original/src/rust/Cargo.toml +++ src/src/rust/Cargo.toml -@@ -10,7 +10,7 @@ +@@ -10,7 +10,10 @@ [dependencies] once_cell = "1" cfg-if = "1" -pyo3 = { version = "0.20", features = ["abi3"] } ++ ++# Chaquopy: added abi3-py10 - see needs_rust in build-wheel.py. +pyo3 = { version = "0.20", features = ["abi3", "abi3-py310"] } ++ asn1 = { version = "0.15.5", default-features = false } cryptography-cffi = { path = "cryptography-cffi" } cryptography-key-parsing = { path = "cryptography-key-parsing" } From ae9451972760671cb8422bd622941ad3602929b3 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Thu, 17 Oct 2024 20:40:25 +0000 Subject: [PATCH 7/9] Tests passing with Python 3.10 and arm64-v8a --- server/pypi/build-wheel.py | 46 +++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/server/pypi/build-wheel.py b/server/pypi/build-wheel.py index 99fac8b1df..4475bde2b5 100755 --- a/server/pypi/build-wheel.py +++ b/server/pypi/build-wheel.py @@ -615,6 +615,10 @@ def get_common_env_vars(self, env): env["CPPFLAGS"] = "" env["LDSHARED"] = f"{env['CC']} -shared" + if exists(f"{self.host_env}/chaquopy/lib/libssl.so"): + # `cryptography` requires this variable. + env["OPENSSL_DIR"] = f"{self.host_env}/chaquopy" + def get_python_env_vars(self, env, pypi_env): # Adding host_env to PYTHONPATH allows setup.py to import requirements, for # example to call numpy.get_include(). @@ -639,6 +643,25 @@ def get_python_env_vars(self, env, pypi_env): # TODO: consider replacing this with crossenv. env["_PYTHON_HOST_PLATFORM"] = f"linux-{ABIS[self.abi].uname_machine}" + def get_rust_env_vars(self, env): + tool_prefix = ABIS[self.abi].tool_prefix + run(f"rustup target add {tool_prefix}") + env.update({ + "RUSTFLAGS": f"-C linker={env['CC']} -L native={self.host_env}/chaquopy/lib", + "CARGO_BUILD_TARGET": tool_prefix, + + # Normally PyO3 requires sysconfig modules, which are not currently + # available in the `target` packages for Python 3.12 and older. However, + # since PyO3 0.16.4, it's possible to compile abi3 modules without sysconfig + # modules. This only requires packages to specify the minimum python + # compatibility version via one of the "abi3-py*" features (e.g. + # abi3-py310). Doing this requires the "-L native" flag in RUSTFLAGS above. + # https://pyo3.rs/main/building-and-distribution#building-abi3-extensions-without-a-python-interpreter + "PYO3_NO_PYTHON": "1", + "PYO3_CROSS": "1", + "PYO3_CROSS_PYTHON_VERSION": self.python, + }) + @contextmanager def env_vars(self): env = {} @@ -653,6 +676,8 @@ def env_vars(self): if self.needs_python: self.get_python_env_vars(env, pypi_env) + if self.needs_rust: + self.get_rust_env_vars(env) env.update({ # TODO: make everything use HOST instead, and remove this. @@ -666,29 +691,8 @@ def env_vars(self): "PKG_VERSION": self.version, "RECIPE_DIR": self.package_dir, "SRC_DIR": self.src_dir, - - # allows packages to locate openssl, openssl must be in the meta.yml requirements.host - "OPENSSL_DIR": f"{self.host_env}/chaquopy", }) - if self.needs_rust: - env.update({ - "RUSTFLAGS": f"-C linker={env['CC']} -L native={self.host_env}/chaquopy/lib", - "CARGO_BUILD_TARGET": ABIS[self.abi].tool_prefix, - - # Normally PyO3 requires sysconfig modules, which are not currently - # available in the `target` packages for Python 3.12 and older. However, - # since PyO3 0.16.4, it's possible to compile abi3 modules without - # sysconfig modules. This only requires packages to specify the minimum - # python compatibility version via one of the "abi3-py*" features (e.g. - # abi3-py310). Doing this requires the "-L native" flag in RUSTFLAGS - # above. - # https://pyo3.rs/main/building-and-distribution#building-abi3-extensions-without-a-python-interpreter - "PYO3_NO_PYTHON": "1", - "PYO3_CROSS": "1", - "PYO3_CROSS_PYTHON_VERSION": self.python, - }) - for var in self.meta["build"]["script_env"]: key, value = var.split("=") env[key] = value From c039064d95b7101cb1c92d0c6a7bb91b4137b55e Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Thu, 17 Oct 2024 21:30:28 +0000 Subject: [PATCH 8/9] Tests passing with Python 3.10, 3.11 and 3.12 on all ABIs --- server/pypi/README.md | 1 + server/pypi/build-wheel.py | 8 ++------ server/pypi/packages/cryptography/meta.yaml | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/server/pypi/README.md b/server/pypi/README.md index b91f3b6f81..6fe44262af 100644 --- a/server/pypi/README.md +++ b/server/pypi/README.md @@ -59,6 +59,7 @@ these can be installed using your distribution. Some of them have special entrie [here](https://github.com/mzakharo/android-gfortran/releases/tag/r21e). Create a `fortran` subdirectory in the same directory as this README, and unpack the .bz2 files into it. +* `rust`: `rustup` must be on the PATH. ## Building a package diff --git a/server/pypi/build-wheel.py b/server/pypi/build-wheel.py index 4475bde2b5..4cd1e94b1e 100755 --- a/server/pypi/build-wheel.py +++ b/server/pypi/build-wheel.py @@ -85,7 +85,7 @@ def main(self): normalize_version(self.version)) self.non_python_build_reqs = set() - for name in ["cmake", "fortran"]: + for name in ["cmake", "fortran", "rust"]: try: self.meta["requirements"]["build"].remove(name) except ValueError: @@ -107,10 +107,6 @@ def main(self): self.meta["requirements"]["host"].remove(name) self.needs_python = True - self.needs_rust = any( - x.startswith("setuptools-rust ") - for x in self.meta["requirements"]["build"]) - self.unpack_and_build() except CommandError as e: @@ -676,7 +672,7 @@ def env_vars(self): if self.needs_python: self.get_python_env_vars(env, pypi_env) - if self.needs_rust: + if "rust" in self.non_python_build_reqs: self.get_rust_env_vars(env) env.update({ diff --git a/server/pypi/packages/cryptography/meta.yaml b/server/pypi/packages/cryptography/meta.yaml index 7bf28c895f..09e89d5a17 100644 --- a/server/pypi/packages/cryptography/meta.yaml +++ b/server/pypi/packages/cryptography/meta.yaml @@ -4,7 +4,6 @@ package: requirements: build: - - cffi 1.15.1 - - setuptools-rust 1.7.0 + - rust host: - openssl From d9004384dbe41416de5684743d8d7248d0245703 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Thu, 17 Oct 2024 21:30:52 +0000 Subject: [PATCH 9/9] Working on Python 3.13: cffi cryptography --- server/pypi/packages/cffi/meta.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/pypi/packages/cffi/meta.yaml b/server/pypi/packages/cffi/meta.yaml index 1720127453..b82457dc7b 100644 --- a/server/pypi/packages/cffi/meta.yaml +++ b/server/pypi/packages/cffi/meta.yaml @@ -1,6 +1,6 @@ package: name: cffi - version: "1.16.0" + version: "1.17.1" build: number: 0