SHA256
1
0
forked from pool/doxygen

Accepting request 1099185 from home:bmwiedemann:branches:devel:tools

Add reproducible.patch to make doxytags output reproducible (boo#1201579)

OBS-URL: https://build.opensuse.org/request/show/1099185
OBS-URL: https://build.opensuse.org/package/show/devel:tools/doxygen?expand=0&rev=191
This commit is contained in:
Petr Gajdos 2023-07-18 08:40:17 +00:00 committed by Git OBS Bridge
parent 9befa492e1
commit f26e8c3135
3 changed files with 82 additions and 0 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon Jul 17 17:14:00 UTC 2023 - Bernhard Wiedemann <bwiedemann@suse.com>
- Add reproducible.patch to make doxytags output reproducible (boo#1201579)
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Jun 23 12:00:15 UTC 2023 - pgajdos@suse.com Fri Jun 23 12:00:15 UTC 2023 - pgajdos@suse.com

View File

@ -40,6 +40,7 @@ Source1: doxywizard.desktop
%endif %endif
# The unified libclang-cpp library doesn't exist on older Leap / SLE # The unified libclang-cpp library doesn't exist on older Leap / SLE
Patch10: doxygen-no-libclang-cpp.patch Patch10: doxygen-no-libclang-cpp.patch
Patch11: reproducible.patch
BuildRequires: bison BuildRequires: bison
BuildRequires: cmake >= 2.8.12 BuildRequires: cmake >= 2.8.12
BuildRequires: flex BuildRequires: flex
@ -99,6 +100,7 @@ configuration files.
%patch10 -p1 %patch10 -p1
%endif %endif
%endif %endif
%patch11 -p1
%build %build
%cmake \ %cmake \

75
reproducible.patch Normal file
View File

@ -0,0 +1,75 @@
Index: doxygen-1.9.6/filesystem/filesystem.hpp
===================================================================
--- doxygen-1.9.6.orig/filesystem/filesystem.hpp
+++ doxygen-1.9.6/filesystem/filesystem.hpp
@@ -5548,12 +5548,13 @@ public:
impl(const path& path, directory_options options)
: _base(path)
, _options(options)
- , _dir(nullptr)
+ , _namelist(nullptr)
+ , _namelisti(-1)
, _entry(nullptr)
{
if (!path.empty()) {
- _dir = ::opendir(path.native().c_str());
- if (!_dir) {
+ _namelisti = _namelistn = ::scandir(path.native().c_str(), &_namelist, NULL, alphasort);
+ if (_namelistn == -1) {
auto error = errno;
_base = filesystem::path();
if ((error != EACCES && error != EPERM) || (options & directory_options::skip_permission_denied) == directory_options::none) {
@@ -5568,19 +5569,23 @@ public:
impl(const impl& other) = delete;
~impl()
{
- if (_dir) {
- ::closedir(_dir);
+ if (_namelist) {
+ for (int i=_namelistn-1; i>=0; i--) {
+ free(_namelist[i]);
+ }
+ free(_namelist);
+ _namelist = nullptr;
}
}
void increment(std::error_code& ec)
{
- if (_dir) {
+ if (_namelist) {
bool skip;
do {
skip = false;
errno = 0;
- _entry = ::readdir(_dir);
- if (_entry) {
+ if (_namelisti > 0 ) {
+ _entry = _namelist[--_namelisti];
_dir_entry._path = _base;
_dir_entry._path.append_name(_entry->d_name);
copyToDirEntry();
@@ -5590,8 +5595,11 @@ public:
}
}
else {
- ::closedir(_dir);
- _dir = nullptr;
+ for (int i=_namelistn-1; i>=0; i--) {
+ free(_namelist[i]);
+ }
+ free(_namelist);
+ _namelist = nullptr;
_dir_entry._path.clear();
if (errno) {
ec = detail::make_system_error();
@@ -5634,7 +5642,9 @@ public:
}
path _base;
directory_options _options;
- DIR* _dir;
+ int _namelisti;
+ int _namelistn;
+ struct dirent **_namelist;
struct ::dirent* _entry;
directory_entry _dir_entry;
std::error_code _ec;