Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Maddie:graphics
blender-31
reproducible.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File reproducible.patch of Package blender-31
commit 2115054bb8a41bb7ddffce32e396d9ffced300b1 Author: Bernhard M. Wiedemann <bwiedemann@suse.de> Date: Sat Sep 7 06:19:50 2019 +0200 Sort list of .dat files Sort list of .dat files in .png generation to make builds reproducible. See https://reproducible-builds.org/ for why this matters. Note: scandir is only available on POSIX-compliant platforms (Linux, BSD, MacOSX, cygwin) - so others would need some compat layer. Reviewers: mont29 Differential Revision: https://developer.blender.org/D5858 Index: blender-3.0.0/source/blender/datatoc/datatoc_icon.c =================================================================== --- blender-3.0.0.orig/source/blender/datatoc/datatoc_icon.c +++ blender-3.0.0/source/blender/datatoc/datatoc_icon.c @@ -402,7 +402,8 @@ static bool icon_merge(struct IconMergeC static bool icondir_to_png(const char *path_src, const char *file_dst) { /* Takes a path full of 'dat' files and writes out */ - DIR *dir; + struct dirent **namelist; + int dirn; const struct dirent *fname; char filepath[1024]; char *filename; @@ -417,8 +418,8 @@ static bool icondir_to_png(const char *p icon_merge_context_init(&context); errno = 0; - dir = opendir(path_src); - if (dir == NULL) { + dirn = scandir(path_src, &namelist, NULL, alphasort); + if (dirn == -1) { printf( "%s: failed to dir '%s', (%s)\n", __func__, path_src, errno ? strerror(errno) : "unknown"); return false; @@ -428,7 +429,8 @@ static bool icondir_to_png(const char *p path_str_len = path_ensure_slash(filepath); filename = &filepath[path_str_len]; - while ((fname = readdir(dir)) != NULL) { + while (dirn--) { + fname = namelist[dirn]; if (path_test_extension(fname->d_name, ".dat")) { strcpy(filename, fname->d_name); @@ -440,11 +442,12 @@ static bool icondir_to_png(const char *p fail++; } } + free(fname); } icon_merge_context_free(&context); - closedir(dir); + free(namelist); if (found == 0) { printf("%s: dir '%s' has no icons\n", __func__, path_src); Index: blender-3.0.0/source/blender/datatoc/datatoc_icon.py =================================================================== --- blender-3.0.0.orig/source/blender/datatoc/datatoc_icon.py +++ blender-3.0.0/source/blender/datatoc/datatoc_icon.py @@ -113,7 +113,7 @@ def icondir_to_png(path_src, file_dst): import os import array - files = [os.path.join(path_src, f) for f in os.listdir(path_src) if f.endswith(".dat")] + files = [os.path.join(path_src, f) for f in sorted(os.listdir(path_src)) if f.endswith(".dat")] # First check if we need to bother. if os.path.exists(file_dst):
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor