Skip to content

Commit c030aa4

Browse files
Daniel A. Wozniakdwoz
authored andcommitted
Fix for pyexpat
1 parent a266deb commit c030aa4

4 files changed

Lines changed: 43 additions & 1 deletion

File tree

relenv/build/darwin.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,20 @@ def update_expat(dirs: Dirs, env: MutableMapping[str, str]) -> None:
106106
for target_file in updated_files:
107107
os.utime(target_file, (now, now))
108108

109+
# For expat >= 2.8.0, new entropy source files are required but not compiled
110+
# by Python's build system. Include them directly in xmlparse.c.
111+
xmlparse_c = expat_dir / "xmlparse.c"
112+
if xmlparse_c.exists():
113+
with open(str(xmlparse_c), "a") as f:
114+
f.write("\n/* Relenv: include new entropy sources for expat >= 2.8.0 */\n")
115+
f.write('#if defined(_WIN32)\n#include "random_rand_s.c"\n#endif\n')
116+
f.write('#if defined(HAVE_GETENTROPY)\n#include "random_getentropy.c"\n#endif\n')
117+
f.write("#if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM)\n")
118+
f.write('#include "random_getrandom.c"\n#endif\n')
119+
f.write('#if defined(HAVE_ARC4RANDOM_BUF)\n#include "random_arc4random_buf.c"\n#endif\n')
120+
f.write('#if defined(HAVE_ARC4RANDOM)\n#include "random_arc4random.c"\n#endif\n')
121+
f.write('#if !defined(_WIN32) && defined(XML_DEV_URANDOM)\n#include "random_dev_urandom.c"\n#endif\n')
122+
109123
# Update SBOM with correct checksums for updated expat files
110124
files_to_update = {}
111125
for target_file in updated_files:

relenv/build/linux.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,20 @@ def update_expat(dirs: Dirs, env: EnvMapping) -> None:
463463
for target_file in updated_files:
464464
os.utime(target_file, (now, now))
465465

466+
# For expat >= 2.8.0, new entropy source files are required but not compiled
467+
# by Python's build system. Include them directly in xmlparse.c.
468+
xmlparse_c = expat_dir / "xmlparse.c"
469+
if xmlparse_c.exists():
470+
with open(str(xmlparse_c), "a") as f:
471+
f.write("\n/* Relenv: include new entropy sources for expat >= 2.8.0 */\n")
472+
f.write('#if defined(_WIN32)\n#include "random_rand_s.c"\n#endif\n')
473+
f.write('#if defined(HAVE_GETENTROPY)\n#include "random_getentropy.c"\n#endif\n')
474+
f.write("#if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM)\n")
475+
f.write('#include "random_getrandom.c"\n#endif\n')
476+
f.write('#if defined(HAVE_ARC4RANDOM_BUF)\n#include "random_arc4random_buf.c"\n#endif\n')
477+
f.write('#if defined(HAVE_ARC4RANDOM)\n#include "random_arc4random.c"\n#endif\n')
478+
f.write('#if !defined(_WIN32) && defined(XML_DEV_URANDOM)\n#include "random_dev_urandom.c"\n#endif\n')
479+
466480
# Update SBOM with correct checksums for updated expat files
467481
files_to_update = {}
468482
for target_file in updated_files:

relenv/build/windows.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,20 @@ def update_expat(dirs: Dirs, env: EnvMapping) -> None:
348348
for target_file in updated_files:
349349
os.utime(target_file, (now, now))
350350

351+
# For expat >= 2.8.0, new entropy source files are required but not compiled
352+
# by Python's build system. Include them directly in xmlparse.c.
353+
xmlparse_c = expat_dir / "xmlparse.c"
354+
if xmlparse_c.exists():
355+
with open(str(xmlparse_c), "a") as f:
356+
f.write("\n/* Relenv: include new entropy sources for expat >= 2.8.0 */\n")
357+
f.write('#if defined(_WIN32)\n#include "random_rand_s.c"\n#endif\n')
358+
f.write('#if defined(HAVE_GETENTROPY)\n#include "random_getentropy.c"\n#endif\n')
359+
f.write("#if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM)\n")
360+
f.write('#include "random_getrandom.c"\n#endif\n')
361+
f.write('#if defined(HAVE_ARC4RANDOM_BUF)\n#include "random_arc4random_buf.c"\n#endif\n')
362+
f.write('#if defined(HAVE_ARC4RANDOM)\n#include "random_arc4random.c"\n#endif\n')
363+
f.write('#if !defined(_WIN32) && defined(XML_DEV_URANDOM)\n#include "random_dev_urandom.c"\n#endif\n')
364+
351365
# Update SBOM with correct checksums for updated expat files
352366
files_to_update = {f"Modules/expat/{f.name}": f for f in updated_files}
353367
if bash_refresh.exists():

relenv/python-versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,4 +522,4 @@
522522
}
523523
}
524524
}
525-
}
525+
}

0 commit comments

Comments
 (0)