Hi all :)
Here's my monthly status report for December 2022
This month was effectively purely focused on Windows WebRTC things. Since Mozilla doesn't support building with mingw on a windows host, this turned out to be a very deep rabbit hole of many different possible approaches.
At the beginning of the month, I did some work on my build merge request [1], but then I decided to focus on getting windows builds working, since that was my goal for this month, and also no major releases were happening that would've included the WebRTC build MR.
I first tried testing out of a linux host using wine, but that very quickly fell apart, and I have little experience with wine so I decided to not pursue that any further.
The first part of getting Windows host builds working was setting up a development environment. I first tried building on a linux host, copying the artefacts to a windows machine, and trying to test from there, but this didn't work, for reasons which I cant remember. However since then, I've done a lot of dev environment set up, so this may potentially be a viable approach again.
The next approach I tried was building in WSL, and testing straight out of a WSL shell. I decided to do this as I was most familiar with linux environments, and WSL allows windows executables to run, which wouldn't run under wine when I tested from linux. This again failed, but this time it was because certutil.exe would fail first due to missing dlls, which was fixed very quickly, but then with `CKR_GENERAL_ERROR`, which is incredibly vague. After trying to investigate this, I deemed this approach non viable, as there were hundreds of potential code paths that could trigger this error.
WSL failing, I tried to build the recommended way from firefox (except using MinGW instead of MSVC), which as I suspected before, failed again. Numerous weird issues were encountered here, such as the build system not being able to find simple tools that would normally be found when I would build with MSVC, but didn't belong to MSVC or MinGW (such as rm, tar, awk, etc)
That being said, while this approach currently is far behind the WSL approach (WSL can build it, but fails to test. This approach doesn't build, yet), I'm hoping it will work out better since there won't be any cross platform weirdness that might be breaking anything.
Currently this approach is failing due to various weird errors that seem to be from mach assuming I'm building from a unix like host, and not windows, but as far as I can tell these assumptions should be OK since the build happens in an MSys2 environment.
The near future is focussed on getting windows builds happening, which I was hoping to have finished by the end of December but couldn't due to numerous unexpected issues.
The plan for next steps as discussed with Richard is to try and get a build running with MSVC and then swap out the toolchain, and if that fails, I'll try the first approach again, but using artefacts out of tor browser build.
Best, Marco
[1]: https://gitlab.torproject.org/tpo/applications/tor-browser/-/merge_requests/...
tor-project@lists.torproject.org