I'm not sure the core team has much experience with MXE or much interest in trying it out. Please delete the MXE section for now. Feel free to submit it under a separate ticket.
RUST_TARGET should be TOR_RUST_TARGET. We changed it to reduce chances of environment variable conflicts.
Please don't refer to yourself as "this author" in a shared-authorship document. Also I'm not sure we should be making such claims about the security properties of using the Jenkins build artifacts. I think it's a tradeoff, and maybe one that we shouldn't try to summarize here. Maybe it's enough to mention that the artifacts aren't signed and their integrity depends on the Jenkins infrastructure itself and the web CA infrastructure.
ahf said that MXE "sounds cool" and presumably would like to not maintain https://github.com/ahf/tor-win32/. additionally, the MXE option supports zstd and xz. therefore, I would like to keep those. if you or ahf could test those it would be great.
already fixed TOR_RUST_TARGET in an earlier revision.
ahf said that MXE "sounds cool" and presumably would like to not maintain https://github.com/ahf/tor-win32/. additionally, the MXE option supports zstd and xz. therefore, I would like to keep those. if you or ahf could test those it would be great.
already fixed TOR_RUST_TARGET in an earlier revision.
changed jenkins wording to be more critical.
Thanks. Please delete mentions of MXE for now. We can look at that in a separate ticket. Also, what do you mean by this:
Jenkins is not a part of the Tor infrastructure
But I am not sure that the references to compiling on Windows are accurate:
Compiling tor on Windows using mingw is theoretically supported, but few
developers actually use this configuration, and it is not used to build Tor
Browser. Therefore, this guide will only cover cross-compilation.
MSYS2 contains cygwin as well as mingw. The library and compiler names suggest that our builds just use mingw. But I haven't checked if the builds or binaries depend on cygwin.
Acquire libevent, openssl, and zlib cross-compiled for mingw. ...
MSYS2 has package repositories containing these libraries. There seem to be versions of the libraries that just depend on mingw.
Once this cross-compiling document is accurate, we should merge it.
Then we can open tickets for mingw-on-Windows and MXE builds.
It might also be worth mentioning that you can cross-compile tor for Windows on Windows 10 using Windows Subsystem for Linux, which is an emulated Linux environment.
I don't understand why we get cross-compiled libraries from Jenkins, when we can just get signed libraries from Debian. I also think that ahf's instructions are much easier to follow.
But I am not sure that the references to compiling on Windows are accurate:
Compiling tor on Windows using mingw is theoretically supported, but few
developers actually use this configuration, and it is not used to build Tor
Browser. Therefore, this guide will only cover cross-compilation.
MSYS2 contains cygwin as well as mingw. The library and compiler names suggest that our builds just use mingw. But I haven't checked if the builds or binaries depend on cygwin.
I'm virtually certain that they don't.
Acquire libevent, openssl, and zlib cross-compiled for mingw. ...
MSYS2 has package repositories containing these libraries. There seem to be versions of the libraries that just depend on mingw.
Should be, I forgot about MSYS2. Also I'm not sure if their packages are usable for cross-compiling.
Once this cross-compiling document is accurate, we should merge it.
Then we can open tickets for mingw-on-Windows and MXE builds.
It might also be worth mentioning that you can cross-compile tor for Windows on Windows 10 using Windows Subsystem for Linux, which is an emulated Linux environment.
I think that was a worse option when I wrote this, but sure.
We discussed this documentation in the network team meeting.
We want to document the following use cases:
cross-compiling Tor (Tor Browser, Tor Devs using Wine)
compiling Tor using mingw (Appveyor, Tor Devs using Native Windows)
We want to spend some more time reviewing this document, and trying out the process, before deciding if we want to merge it as-is, or make some more changes.
Trac: Milestone: Tor: 0.3.5.x-final to Tor: 0.3.6.x-final Status: needs_revision to needs_information
Mark some tickets as postfreeze-ok, to indicate that I think they are okay to accept in 0.4.0 post-freeze. Does not indicate that they are all necessary to do postfreeze.