Unverified Commit d96b3a86 authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

Merge pull request #266358 from reckenrode/python2-fix

python2: fix build with clang 16 on x86_64-darwin
parents 4aad65bf 1cd0d4b6
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -133,6 +133,11 @@ let

    ] ++ lib.optionals (x11Support && stdenv.isDarwin) [
      ./use-correct-tcl-tk-on-darwin.patch

    ] ++ lib.optionals stdenv.isDarwin [
      # Fix darwin build https://bugs.python.org/issue34027
      ../3.7/darwin-libutil.patch

    ] ++ lib.optionals stdenv.isLinux [

      # Disable the use of ldconfig in ctypes.util.find_library (since
+42 −0
Original line number Diff line number Diff line
diff -ur a/decoder.c b/decoder.c
--- a/decoder.c	1980-01-02 00:00:00.000000000 -0500
+++ b/decoder.c	2023-11-08 17:42:43.981838074 -0500
@@ -94,7 +94,7 @@
     return PlaceObject(ctx, PyBool_FromLong((long)(value)));
 }
 
-static int handle_number(void *ctx, const char *value, unsigned int length)
+static int handle_number(void *ctx, const char *value, size_t length)
 {
     //fprintf(stderr, "handle_number: ");
     //fwrite(value, length, 1, stderr);
@@ -127,7 +127,7 @@
     return status;
 }
 
-static int handle_string(void *ctx, const unsigned char *value, unsigned int length)
+static int handle_string(void *ctx, const unsigned char *value, size_t length)
 {
     return PlaceObject(ctx, PyString_FromStringAndSize((char *)value, length));
 }
@@ -142,7 +142,7 @@
     return success;
 }
 
-static int handle_dict_key(void *ctx, const unsigned char *value, unsigned int length)
+static int handle_dict_key(void *ctx, const unsigned char *value, size_t length)
 {
     PyObject *object = PyString_FromStringAndSize((const char *) value, length);
 
diff -ur a/yajl.c b/yajl.c
--- a/yajl.c	1980-01-02 00:00:00.000000000 -0500
+++ b/yajl.c	2023-11-08 17:41:18.781350335 -0500
@@ -161,7 +161,7 @@
 }
 
 static struct PyMethodDef yajl_methods[] = {
-    {"dumps", (PyCFunctionWithKeywords)(py_dumps), METH_VARARGS | METH_KEYWORDS,
+    {"dumps", (PyCFunction)(py_dumps), METH_VARARGS | METH_KEYWORDS,
 "yajl.dumps(obj [, indent=None])\n\n\
 Returns an encoded JSON string of the specified `obj`\n\
 \n\
+4 −0
Original line number Diff line number Diff line
@@ -42,6 +42,10 @@ rec {
      hash = "sha256-H3GKN0Pq1VFD5+SWxm8CXUVO7zAyj/ngKVmDaG/aRT4=";
      fetchSubmodules = true;
    };
    patches = [
      # Fixes several incompatible function pointer conversions, which are errors in clang 16.
      ./0014-clang_incompatible_function_pointer_conversions.patch
    ];
    # just for submodule IIRC
    nativeBuildInputs = [ git ];
  };
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ stdenv.mkDerivation rec {

    # Disable a failing test.
    rm -rf ../../tests/style.d
  '' + lib.optionalString stdenv.cc.isClang ''
    export NIX_CFLAGS_COMPILE+=' -Wno-error=strict-prototypes -Wno-error=int-conversion'
  '';

  installPhase = ''
+5 −0
Original line number Diff line number Diff line
@@ -18,6 +18,11 @@ stdenv.mkDerivation rec {

  hardeningDisable = lib.optional stdenv.isDarwin "format";

  env = lib.optionalAttrs stdenv.isDarwin {
    # Required to build with clang 16 or `configure` will fail to detect several standard functions.
    NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
  };

  configureFlags = [
    "--with-openssl"
    "--with-readline=${readline.dev}"