python3Packages.cffi: fix tests on FreeBSD (#329076)

This commit is contained in:
Martin Weinelt
2024-11-18 16:44:50 +01:00
committed by GitHub
2 changed files with 18 additions and 43 deletions
@@ -1,11 +0,0 @@
diff -r c649a735cf82 testing/support.py
--- a/testing/support.py Thu Feb 23 05:42:01 2023 +0100
+++ b/testing/support.py Sat May 20 21:46:56 2023 -0400
@@ -112,6 +112,7 @@
'-Wno-unreachable-code']
# special things for clang
extra_compile_args.append('-Qunused-arguments')
+ extra_compile_args.append('-Wno-null-pointer-subtraction')
else:
# assume a standard gcc
extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion',
@@ -11,9 +11,6 @@
pycparser,
}:
let
ccVersion = lib.getVersion stdenv.cc;
in
if isPyPy then
null
else
@@ -27,35 +24,19 @@ else
hash = "sha256-HDnGAWwyvEjdVFYZUOvWg24WcPKuRhKPZ89J54nFKCQ=";
};
patches =
[
#
# Trusts the libffi library inside of nixpkgs on Apple devices.
#
# Based on some analysis I did:
#
# https://groups.google.com/g/python-cffi/c/xU0Usa8dvhk
#
# I believe that libffi already contains the code from Apple's fork that is
# deemed safe to trust in cffi.
#
./darwin-use-libffi-closures.diff
]
++ lib.optionals (stdenv.cc.isClang && (ccVersion == "boot" || lib.versionAtLeast ccVersion "13")) [
# -Wnull-pointer-subtraction is enabled with -Wextra. Suppress it to allow the following tests
# to run and pass when cffi is built with newer versions of clang (including the bootstrap tools clang on Darwin):
# - testing/cffi1/test_verify1.py::test_enum_usage
# - testing/cffi1/test_verify1.py::test_named_pointer_as_argument
./clang-pointer-substraction-warning.diff
];
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
# Remove setup.py impurities
substituteInPlace setup.py \
--replace "'-iwithsysroot/usr/include/ffi'" "" \
--replace "'/usr/include/ffi'," "" \
--replace '/usr/include/libffi' '${lib.getDev libffi}/include'
'';
patches = [
#
# Trusts the libffi library inside of nixpkgs on Apple devices.
#
# Based on some analysis I did:
#
# https://groups.google.com/g/python-cffi/c/xU0Usa8dvhk
#
# I believe that libffi already contains the code from Apple's fork that is
# deemed safe to trust in cffi.
#
./darwin-use-libffi-closures.diff
];
nativeBuildInputs = [ pkg-config ];
@@ -72,6 +53,11 @@ else
nativeCheckInputs = [ pytestCheckHook ];
disabledTests = lib.optionals stdenv.hostPlatform.isFreeBSD [
# https://github.com/python-cffi/cffi/pull/144
"test_dlopen_handle"
];
meta = with lib; {
changelog = "https://github.com/python-cffi/cffi/releases/tag/v${version}";
description = "Foreign Function Interface for Python calling C code";