Skip to content

Build failure in geckoview without containers

Since some versions I am unable to build tor browser for android without containers. I re-tried it on the tbb-14.5a2-build2 tag without luck. Full build command in a clean Debian 12 bookworm container:

USER=rbm RBM_NO_DEBUG=1 ./rbm/rbm build release --target no_containers --target alpha --target browser-android-armv7 --target torbrowser

Error snippet in logs/geckoview-android-armv7.log:

[...]
 0:19.77 js/src> checking for ARM EABI... (cached) yes
 0:19.79 js/src> checking for valid optimization flags... yes
 0:19.80 js/src> creating ./config.data
 0:19.81 Creating config.status
 0:20.72 Reticulating splines...
 0:28.77 concurrent.futures.process._RemoteTraceback:
 0:28.77 """
 0:28.77 Traceback (most recent call last):
 0:28.77   File "/usr/lib/python3.11/concurrent/futures/process.py", line 256, in _process_worker
 0:28.77     r = call_item.fn(*call_item.args, **call_item.kwargs)
 0:28.77         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/python/mozbuild/mozbuild/frontend/gyp_reader.py", line 397, in load_gyp
 0:28.77     _, flat_list, targets, data = gyp.Load(*args)
 0:28.77                                   ^^^^^^^^^^^^^^^
 0:28.77   File "/usr/lib/python3/dist-packages/gyp/__init__.py", line 134, in Load
 0:28.77     result = gyp.input.Load(build_files, default_variables, includes[:],
 0:28.77              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/usr/lib/python3/dist-packages/gyp/input.py", line 2787, in Load
 0:28.77     LoadTargetBuildFile(build_file, data, aux_data,
 0:28.77   File "/usr/lib/python3/dist-packages/gyp/input.py", line 399, in LoadTargetBuildFile
 0:28.77     build_file_data = LoadOneBuildFile(build_file_path, data, aux_data,
 0:28.77                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/usr/lib/python3/dist-packages/gyp/input.py", line 271, in LoadOneBuildFile
 0:28.77     LoadBuildFileIncludesIntoDict(build_file_data, build_file_path, data,
 0:28.77   File "/usr/lib/python3/dist-packages/gyp/input.py", line 309, in LoadBuildFileIncludesIntoDict
 0:28.77     LoadOneBuildFile(include, data, aux_data, None, False, check),
 0:28.77     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/usr/lib/python3/dist-packages/gyp/input.py", line 245, in LoadOneBuildFile
 0:28.77     raise GypError("%s not found (cwd: %s)" % (build_file_path, os.getcwd()))
 0:28.77 gyp.common.GypError: /build/gyp_includes/common.gypi not found (cwd: /var/tmp/build/geckoview-4d475b567521/obj-arm-linux-androideabi) while reading includes of /var/tmp/build/geckoview-4d475b567521/media/libyuv/libyuv/libyuv.gyp while trying to load /var/tmp/build/geckoview-4d475b567521/media/libyuv/libyuv/libyuv.gyp
 0:28.77 """
 0:28.77 
 0:28.77 The above exception was the direct cause of the following exception:
 0:28.77 
 0:28.77 Traceback (most recent call last):
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/configure.py", line 351, in <module>
 0:28.77     sys.exit(main(sys.argv))
 0:28.77              ^^^^^^^^^^^^^^
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/configure.py", line 176, in main
 0:28.77     return config_status(config)
 0:28.77            ^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/configure.py", line 300, in config_status
 0:28.77     return config_status(args=[], **sanitized_config)
 0:28.77            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/python/mozbuild/mozbuild/config_status.py", line 201, in config_status
 0:28.77     pool = BackendPool(definitions, processes=processes)
 0:28.77            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/python/mozbuild/mozbuild/config_status.py", line 54, in __init__
 0:28.77     definitions = list(definitions)
 0:28.77                   ^^^^^^^^^^^^^^^^^
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/python/mozbuild/mozbuild/frontend/emitter.py", line 144, in emit
 0:28.77     for out in output:
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/python/mozbuild/mozbuild/frontend/reader.py", line 910, in read_topsrcdir
 0:28.77     for gyp_context in g.results:
 0:28.77   File "/var/tmp/build/geckoview-4d475b567521/python/mozbuild/mozbuild/frontend/gyp_reader.py", line 495, in results
 0:28.77     flat_list, targets, data = self._gyp_loader_future.result()
 0:28.77                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 0:28.77   File "/usr/lib/python3.11/concurrent/futures/_base.py", line 449, in result
 0:28.78     return self.__get_result()
 0:28.78            ^^^^^^^^^^^^^^^^^^^
 0:28.78   File "/usr/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
 0:28.78     raise self._exception
 0:28.78 gyp.common.GypError: /build/gyp_includes/common.gypi not found (cwd: /var/tmp/build/geckoview-4d475b567521/obj-arm-linux-androideabi) while reading includes of /var/tmp/build/geckoview-4d475b567521/media/libyuv/libyuv/libyuv.gyp while trying to load /var/tmp/build/geckoview-4d475b567521/media/libyuv/libyuv/libyuv.gyp
Running "pip check" to verify compatibility between the system Python and the "mach" site.
Creating local state directory: /tor-browser-build/tmp/rbm-CxzBPK/rbm-CCM9u/.mozbuild/srcdirs/geckoview-4d475b567521-7732ba77f180
Running "pip check" to verify compatibility between the system Python and the "build" site.
*** Fix above errors and then restart with "./mach build"
Finishing build (script: build): 2025-01-25 17:06:39
Build time: 0 hours 4 minutes and 4 seconds

I was once able to fix this issue by symlinking /build to /var/tmp/build/geckoview-4d475b567521/build/ with ln -sv /var/tmp/build/geckoview-4d475b567521/build/ /build.

Edit: I was able to fix this build error on tbb-14.0.4-build1 with the following symlink ln -sv /var/tmp/build/geckoview-2ef0eee7c519/build/ /build (a different geckoview hash).

So clearly the build system assumes an absolute file path that may be different if not building in a container.

Edited by Mynacol
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information