[tor-bugs] #31538 [Applications/Tor Browser]: Windows bundles based on ESR 68 are not built reproducibly
Tor Bug Tracker & Wiki
blackhole at torproject.org
Mon Sep 9 19:57:45 UTC 2019
#31538: Windows bundles based on ESR 68 are not built reproducibly
-------------------------------------------------+-------------------------
Reporter: gk | Owner: tbb-
| team
Type: defect | Status: new
Priority: Very High | Milestone:
Component: Applications/Tor Browser | Version:
Severity: Major | Resolution:
Keywords: tbb-rbm, ff68-esr, tbb-9.0-must- | Actual Points:
alpha, TorBrowserTeam201909, |
GeorgKoppen201909 |
Parent ID: #30322 | Points: 2
Reviewer: | Sponsor:
-------------------------------------------------+-------------------------
Comment (by gk):
The different order in libc++.a is already visible in the respecting link
command:
{{{
/var/tmp/dist/mingw-w64-clang/bin/llvm-ar qc libc++.a
CMakeFiles/cxx_objects.dir/__/src/shared_mutex.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/exception.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/system_error.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/charconv.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/new.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/variant.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/optional.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/bind.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/locale.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/mutex.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/iostream.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/stdexcept.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/thread.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/random.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/ios.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/typeinfo.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/future.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/functional.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/any.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/utility.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/valarray.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/hash.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/regex.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/condition_variable.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/string.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/debug.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/algorithm.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/memory.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/vector.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/strstream.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/support/win32/thread_win32.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/support/win32/support.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/support/win32/locale_win32.cpp.obj
}}}
vs.
{{{
/var/tmp/dist/mingw-w64-clang/bin/llvm-ar qc libc++.a
CMakeFiles/cxx_objects.dir/__/src/typeinfo.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/debug.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/thread.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/hash.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/stdexcept.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/algorithm.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/valarray.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/condition_variable.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/locale.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/functional.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/bind.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/shared_mutex.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/any.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/exception.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/system_error.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/ios.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/string.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/optional.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/new.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/charconv.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/vector.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/regex.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/strstream.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/memory.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/random.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/iostream.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/utility.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/mutex.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/future.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/variant.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/support/win32/support.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/support/win32/locale_win32.cpp.obj
CMakeFiles/cxx_objects.dir/__/src/support/win32/thread_win32.cpp.obj
}}}
Responsible for that is `CMake` which saves the command to use in a
`link.txt` file
{{{
cd /var/tmp/build/libcxx/build/lib && /var/tmp/dist/cmake/bin/cmake -E
cmake_link_script CMakeFiles/cxx_static.dir/link.txt --verbose=1
}}}
I am not sure yet where sorting that part differently got solved but
updating `CMake` to the latest stable version, 3.15.3, (we are currently
using 3.4.3) seems to solve that part of the puzzle. However, other object
files are still included non-deterministically after that part. I am not
sure yet where they are coming from...
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/31538#comment:19>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list