Control: tags -1 patch

[Hilmar Preusse 2022-11-14]
> not sure if this is a duplicate of an existing (closed) bug, but for me this 
> tool
> still generates not reproducible output.

I suspect this is the issue listed on
<URL: 
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/freecad.html 
>.

It mention a draft patch available from
<URL: https://gist.github.com/lamby/d86fc228ae00733f1705b4ef80a5d7bb/raw >:

diff --git a/qpy/pyrcc/rcc.cpp b/qpy/pyrcc/rcc.cpp
index 8e29841..e19a708 100644
--- a/qpy/pyrcc/rcc.cpp
+++ b/qpy/pyrcc/rcc.cpp
@@ -364,9 +364,11 @@ RCCResourceLibrary::dataFiles() const
     pending.push(root);
     while(!pending.isEmpty()) {
         RCCFileInfo *file = pending.pop();
-        for(QHash<QString, RCCFileInfo*>::iterator it = file->children.begin();
-            it != file->children.end(); ++it) {
-            RCCFileInfo *child = it.value();
+        //sort by filename for deterministic builds
+        QList<QString> keys = file->children.keys();
+        qSort(keys);
+        for(int i = 0; i < keys.size(); ++i) {
+            RCCFileInfo *child = file->children.at(i);
             if(child->flags & RCCFileInfo::Directory)
                 pending.push(child);
             ret.append(child->fileInfo.filePath());
@@ -455,9 +457,11 @@ RCCResourceLibrary::writeDataBlobs(FILE *out)
     qint64 offset = 0;
     while(!pending.isEmpty()) {
         RCCFileInfo *file = pending.pop();
-        for(QHash<QString, RCCFileInfo*>::iterator it = file->children.begin();
-            it != file->children.end(); ++it) {
-            RCCFileInfo *child = it.value();
+        //sort by filename for deterministic builds
+        QList<QString> keys = file->children.keys();
+        qSort(keys);
+        for(int i = 0; i < keys.size(); ++i) {
+            RCCFileInfo *child = file->children.at(i);
             if(child->flags & RCCFileInfo::Directory)
                 pending.push(child);
             else

-- 
Happy hacking
Petter Reinholdtsen

Reply via email to