Difference between revisions of "Porting/Tor Browser"

From RCS Wiki
Jump to navigation Jump to search
(Add build instructions, list of current known errors, and task list)
(unistd.h issue is now fixed)
Line 8: Line 8:
  
 
== Build errors ==
 
== Build errors ==
 +
 +
=== Fixed ===
  
 
* <code>/var/tmp/build/firefox-f8f42fea2af3/js/src/jsnativestack.cpp:69:31: error: 'syscall' was not declared in this scope</code>
 
* <code>/var/tmp/build/firefox-f8f42fea2af3/js/src/jsnativestack.cpp:69:31: error: 'syscall' was not declared in this scope</code>
** This is because <code>jsnativestack.cpp</code> forgot to <code>#include <unistd.h></code>.  This is fixed in all releases of Tor Browser based on ESR 60.  It should also be fixable in ESR 52 by applying a 1-line patch to add the missing include.
+
** This is because <code>jsnativestack.cpp</code> forgot to <code>#include <unistd.h></code>.  This is fixed in all releases of Tor Browser based on ESR 60.  Since we're still using ESR 52 for now, I fixed it by applying a short patch to add the missing include.
 
* <code>/var/tmp/build/firefox-f8f42fea2af3/js/src/jsnativestack.cpp:77:27: error: 'getpid' was not declared in this scope</code>
 
* <code>/var/tmp/build/firefox-f8f42fea2af3/js/src/jsnativestack.cpp:77:27: error: 'getpid' was not declared in this scope</code>
 
** Also caused by missing <code>#include <unistd.h></code> in <code>jsnativestack.cpp</code>; same fixes as above.
 
** Also caused by missing <code>#include <unistd.h></code> in <code>jsnativestack.cpp</code>; same fixes as above.

Revision as of 21:54, 6 October 2018

Early efforts to port Tor Browser to POWER are underway. The primary challenge is that Tor Browser uses an unusual build system (rbm) in order to ensure reproducible builds. While Tor's configuration of rbm can cross-compile for Windows and macOS targets, it is not configured out of the box to cross-compile for GNU/Linux targets. As a result, our early efforts are focused on modifying Tor's rbm configuration to support cross-compiling for non-x86 GNU/Linux targets; it is expected that this will be useful not only for POWER but also for targets like ARM.

Current source code is at https://notabug.org/JeremyRand/tor-browser-build/src/armhf . If you're interested in joining the effort, talk to Jeremy_Rand or Jeremy_Rand_Talos in #talos-workstation.

Build instructions

./rbm/rbm build firefox --target release --target torbrowser-linux-arm

Build errors

Fixed

  • /var/tmp/build/firefox-f8f42fea2af3/js/src/jsnativestack.cpp:69:31: error: 'syscall' was not declared in this scope
    • This is because jsnativestack.cpp forgot to #include <unistd.h>. This is fixed in all releases of Tor Browser based on ESR 60. Since we're still using ESR 52 for now, I fixed it by applying a short patch to add the missing include.
  • /var/tmp/build/firefox-f8f42fea2af3/js/src/jsnativestack.cpp:77:27: error: 'getpid' was not declared in this scope
    • Also caused by missing #include <unistd.h> in jsnativestack.cpp; same fixes as above.

Task list

  • Port this to newer versions of Tor Browser that use Firefox ESR 60. This will require making Rust work.
  • Build the projects besides Firefox.
  • Generalize the GNU/Linux cross-compiling changes so that they work on target arches besides armhf. (ppc64be, ppc64le, and aarch64 are all likely to be useful.)