From 8d00ca02f1690d8a51108ceb4b7c3e4b2b109a6e Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Mon, 2 Dec 2024 13:09:36 +0100 Subject: [PATCH] dynapi: order for a reproducible build The objfiles of different builds show various differences in the calls to SDL_DYNAPI_entry elements. This is generated dynamically by gendynapi.pl which uses an unordered opendir/readdir pair. To make the build reproducible and thereby e.g. debugging easier change this to be used in an ordered fashion. Fixes #11565. (cherry picked from commit 5418740c4a49b18958fe7f2c7b3f20fbbeca5b12) --- src/dynapi/gendynapi.pl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dynapi/gendynapi.pl b/src/dynapi/gendynapi.pl index dad2bc4878..0873267d31 100755 --- a/src/dynapi/gendynapi.pl +++ b/src/dynapi/gendynapi.pl @@ -50,8 +50,13 @@ open(SDL_DYNAPI_PROCS_H, '>>', $sdl_dynapi_procs_h) or die("Can't open $sdl_dyna open(SDL_DYNAPI_OVERRIDES_H, '>>', $sdl_dynapi_overrides_h) or die("Can't open $sdl_dynapi_overrides_h: $!\n"); open(SDL2_EXPORTS, '>>', $sdl2_exports) or die("Can't open $sdl2_exports: $!\n"); +# Ordered for reproducible builds opendir(HEADERS, 'include') or die("Can't open include dir: $!\n"); -while (my $d = readdir(HEADERS)) { +my @entries = readdir(HEADERS); +closedir(HEADERS); +# Sort the entries +@entries = sort @entries; +foreach my $d (@entries) { next if not $d =~ /\.h\Z/; my $header = "include/$d"; open(HEADER, '<', $header) or die("Can't open $header: $!\n"); @@ -143,8 +148,6 @@ while (my $d = readdir(HEADERS)) { close(HEADER); } -closedir(HEADERS); - close(SDL_DYNAPI_PROCS_H); close(SDL_DYNAPI_OVERRIDES_H); close(SDL2_EXPORTS);