about summary refs log tree commit diff
path: root/pkgs/development/python-modules/cffi/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/cffi/default.nix')
-rw-r--r--pkgs/development/python-modules/cffi/default.nix142
1 files changed, 71 insertions, 71 deletions
diff --git a/pkgs/development/python-modules/cffi/default.nix b/pkgs/development/python-modules/cffi/default.nix
index 7b2547afff1d..cd0e1c143a7f 100644
--- a/pkgs/development/python-modules/cffi/default.nix
+++ b/pkgs/development/python-modules/cffi/default.nix
@@ -1,83 +1,83 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, isPyPy
-, fetchPypi
-, setuptools
-, pytestCheckHook
-, libffi
-, pkg-config
-, pycparser
-, pythonAtLeast
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  isPyPy,
+  fetchPypi,
+  setuptools,
+  pytestCheckHook,
+  libffi,
+  pkg-config,
+  pycparser,
 }:
 
-if isPyPy then null else buildPythonPackage rec {
-  pname = "cffi";
-  version = "1.16.0";
-  pyproject = true;
+let
+  ccVersion = lib.getVersion stdenv.cc;
+in
+if isPyPy then
+  null
+else
+  buildPythonPackage rec {
+    pname = "cffi";
+    version = "1.17.1";
+    pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-vLPvQ+WGZbvaL7GYaY/K5ndkg+DEpjGqVkeAbCXgLMA=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      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 && lib.versionAtLeast (lib.getVersion stdenv.cc) "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:
-    # - testing/cffi1/test_verify1.py::test_enum_usage
-    # - testing/cffi1/test_verify1.py::test_named_pointer_as_argument
-    ./clang-pointer-substraction-warning.diff
-  ];
+    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.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'
-  '';
+    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'
+    '';
 
-  nativeBuildInputs = [
-    pkg-config
-    setuptools
-  ];
+    nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [
-    libffi
-  ];
+    build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    pycparser
-  ];
+    buildInputs = [ libffi ];
 
-  # The tests use -Werror but with python3.6 clang detects some unreachable code.
-  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang
-    "-Wno-unused-command-line-argument -Wno-unreachable-code -Wno-c++11-narrowing";
+    dependencies = [ pycparser ];
 
-  doCheck = !stdenv.hostPlatform.isMusl;
+    # The tests use -Werror but with python3.6 clang detects some unreachable code.
+    env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-unused-command-line-argument -Wno-unreachable-code -Wno-c++11-narrowing";
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+    doCheck = !stdenv.hostPlatform.isMusl;
 
-  meta = with lib; {
-    changelog = "https://github.com/python-cffi/cffi/releases/tag/v${version}";
-    description = "Foreign Function Interface for Python calling C code";
-    downloadPage = "https://github.com/python-cffi/cffi";
-    homepage = "https://cffi.readthedocs.org/";
-    license = licenses.mit;
-    maintainers = teams.python.members;
-  };
-}
+    nativeCheckInputs = [ pytestCheckHook ];
+
+    meta = with lib; {
+      changelog = "https://github.com/python-cffi/cffi/releases/tag/v${version}";
+      description = "Foreign Function Interface for Python calling C code";
+      downloadPage = "https://github.com/python-cffi/cffi";
+      homepage = "https://cffi.readthedocs.org/";
+      license = licenses.mit;
+      maintainers = teams.python.members;
+    };
+  }