New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reproducible Build Test #1590
Reproducible Build Test #1590
Conversation
@phelixbtc I tried a helloworld with your modifications and this is the output of archieve_viewer:
The right order of items is this:
When you keep this order then the created exe should work. |
@matysek OK. Yet it's not quite clear to me how I can make a general rule from this. I assume "hello_test" needs to go first. Then (multiple?) "outxx-PYZ.pyz". Then "pyimodxx_..." and then "pyibootxx_...". Anything else? |
@phelixbtc 'hello_test' goes last. However, the general rule is that these items should not be sorted at all. Just when get to the onefile mode the rest of items that might come after 'test_hello' should be sorted. |
Sorting these files is more complicated, as there are different types with different rules. Am 9. Oktober 2015 19:13:26 MESZ, schrieb Martin Zibricky notifications@github.com:
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. |
Actually fixing the sort order was just a wild guess of mine from how the executable files looked in comparison. Now that I look at the executables with pyi-archive_viewer the order is exactly the same. Let me get my dll versions straight and then I will report back. |
@@ -222,7 +224,10 @@ def _add_from_table_of_contents(self, toc): | |||
entry[2] is a flag for it's storage format (True or 1 if compressed) | |||
entry[3] is the entry's type code. | |||
""" | |||
for toc_entry in toc: | |||
toc2 = copy.copy(toc) | |||
toc2.sort(key=itemgetter(0), reverse=False) # in place sort |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A TOC
is a list and lists are sorted by their first item anyway. No need for all this code. toc.sort()
would to the same.
@htgoebel Thanks for letting me know about the elegant solution. :) |
Here's your general rule: The TOC entries with type 'SCRIPT' ('s') are the ones where order matters, since the scripts are run in the order they appear in the archive. |
@codewarrior0 OK. With my tests the executable looked different event though the TOC were sorted the same (maybe because one was built with an old Windows XP version, which seems to handle things a little differently). I will keep it in mind though should it turn out the TOC order changes. |
No description provided.