From: Stefano Rivera <stefanor@debian.org>
Date: Tue, 23 Apr 2024 20:16:00 -0400
Subject: Debian: De-Vendor Expat

Use the Debian system Expat.
This reverts upstream's commit 792b0993b0b06b6c0282da0bbfb2f7e3151c0bb6.
---
 pypy/module/pyexpat/interp_pyexpat.py | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/pypy/module/pyexpat/interp_pyexpat.py b/pypy/module/pyexpat/interp_pyexpat.py
index f617ea1..4110410 100644
--- a/pypy/module/pyexpat/interp_pyexpat.py
+++ b/pypy/module/pyexpat/interp_pyexpat.py
@@ -8,31 +8,28 @@ from rpython.rtyper.lltypesystem import rffi, lltype
 from rpython.rtyper.tool import rffi_platform
 from rpython.translator.tool.cbuild import ExternalCompilationInfo
 from rpython.translator.platform import platform
-from rpython.translator import cdir
 
 import sys
 import weakref
 import py
 
-srcdir = py.path.local(__file__).dirpath().join('src', 'expat')
-
 if sys.platform == "win32":
     pre_include_bits = ["#define XML_STATIC"]
 else:
     pre_include_bits = []
 
 eci = ExternalCompilationInfo(
-    includes=['expat.h', 'pyexpatns.h'],
-    include_dirs=[str(srcdir), cdir],
+    libraries=['expat'],
+    library_dirs=platform.preprocess_library_dirs([]),
+    includes=['expat.h'],
+    include_dirs=platform.preprocess_include_dirs([]),
     pre_include_bits = pre_include_bits,
-    separate_module_files=[
-        srcdir.join('xmlparse.c'),
-        srcdir.join('xmlrole.c'),
-        srcdir.join('xmltok.c'),
-        srcdir.join('xmltok_impl.c'),
-        srcdir.join('xmltok_ns.c'),
-    ]
-)
+    )
+eci = rffi_platform.configure_external_library(
+    'expat', eci,
+    [dict(prefix='expat-',
+          include_dir='lib', library_dir='win32/bin/release'),
+     ])
 
 XML_Content_Ptr = lltype.Ptr(lltype.ForwardReference())
 XML_Parser = rffi.COpaquePtr(typedef='XML_Parser')
@@ -133,7 +130,6 @@ XML_Encoding_Ptr = lltype.Ptr(XML_Encoding)
 
 def expat_external(*a, **kw):
     kw['compilation_info'] = eci
-    a = ("PyExpat_" + a[0],) + a[1:]
     return rffi.llexternal(*a, **kw)
 
 INTERNED_CCHARP = "INTERNED"
