Source: pyqt5 Version: 5.4.1+dfsg-2 Severity: wishlist Tags: patch User: reproducible-builds@lists.alioth.debian.org Usertags: randomness toolchain X-Debbugs-CC: reproducible-builds@lists.alioth.debian.org
Hi! While working on Debian's “reproducible builds” effort [1], we have noticed that pyuic doesn't sort the order of imported modules in generated UI files. The attached patch fixes this. Regards, Reiner [1]: https://wiki.debian.org/ReproducibleBuilds
diff --git a/debian/patches/series b/debian/patches/series index 556cb6c..e32acdc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ uiparser_setzorder_fix.diff +sort_imports.diff diff --git a/debian/patches/sort_imports.diff b/debian/patches/sort_imports.diff new file mode 100644 index 0000000..88a53dd --- /dev/null +++ b/debian/patches/sort_imports.diff @@ -0,0 +1,31 @@ +Author: Reiner Herrmann <rei...@reiner-h.de> +Description: sort imported modules to get reproducible output + +Index: pyqt5-5.4.1+dfsg/pyuic/uic/Compiler/compiler.py +=================================================================== +--- pyqt5-5.4.1+dfsg.orig/pyuic/uic/Compiler/compiler.py ++++ pyqt5-5.4.1+dfsg/pyuic/uic/Compiler/compiler.py +@@ -114,7 +114,7 @@ class UICompiler(UIParser): + + self.factory._cpolicy._writeOutImports() + +- for res in self._resources: ++ for res in sorted(self._resources): + write_import(res, from_imports) + + return {"widgetname": str(w), +Index: pyqt5-5.4.1+dfsg/pyuic/uic/Compiler/qobjectcreator.py +=================================================================== +--- pyqt5-5.4.1+dfsg.orig/pyuic/uic/Compiler/qobjectcreator.py ++++ pyqt5-5.4.1+dfsg/pyuic/uic/Compiler/qobjectcreator.py +@@ -132,8 +132,8 @@ class _CustomWidgetLoader(object): + _, module = self._widgets[widget] + imports.setdefault(module, []).append(widget) + +- for module, classes in imports.items(): +- write_code("from %s import %s" % (module, ", ".join(classes))) ++ for module, classes in sorted(imports.items()): ++ write_code("from %s import %s" % (module, ", ".join(sorted(classes)))) + + + class CompilerCreatorPolicy(object):
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Reproducible-builds mailing list Reproducible-builds@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds