Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Simmphonie:blender
blender
reproducible.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File reproducible.patch of Package blender
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: b/source/blender/datatoc/datatoc_icon.c =================================================================== --- a/source/blender/datatoc/datatoc_icon.cc +++ b/source/blender/datatoc/datatoc_icon.cc @@ -416,9 +416,10 @@ 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; - const dirent *fname; + struct dirent **namelist; + int dirn; + dirent *fname; char filepath[1024]; int found = 0, fail = 0; IconMergeContext context; @@ -429,8 +430,8 @@ static bool icondir_to_png(const char *p icon_merge_context_init(&context); errno = 0; - dir = opendir(path_src); - if (dir == nullptr) { + dirn = scandir(path_src, &namelist, nullptr, alphasort); + if (dirn == -1) { printf( "%s: failed to dir '%s', (%s)\n", __func__, path_src, errno ? strerror(errno) : "unknown"); return false; @@ -436,7 +437,8 @@ static bool icondir_to_png(const char *p return false; } - while ((fname = readdir(dir)) != nullptr) { + while (dirn--) { + fname = namelist[dirn]; if (path_test_extension(fname->d_name, ".dat")) { if (!path_join(filepath, sizeof(filepath), path_src, fname->d_name)) { printf("%s: path is too long (%s, %s)\n", __func__, path_src, fname->d_name); @@ -449,11 +451,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: b/source/blender/datatoc/datatoc_icon.py =================================================================== --- a/source/blender/datatoc/datatoc_icon.py +++ b/source/blender/datatoc/datatoc_icon.py @@ -98,7 +98,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