diff --git a/python/mozbuild/mozbuild/build_commands.py b/python/mozbuild/mozbuild/build_commands.py --- a/python/mozbuild/mozbuild/build_commands.py +++ b/python/mozbuild/mozbuild/build_commands.py @@ -183,10 +183,11 @@ directory=directory, verbose=verbose, keep_going=keep_going, mach_context=command_context._mach_context, append_env=append_env, + virtualenv_topobjdir=orig_topobjdir, ) if status != 0: return status # Packaging the instrumented build is required to get the jarlog @@ -206,11 +207,11 @@ pgo_env["LLVM_PROFDATA"] = instr.config_environment.substs.get( "LLVM_PROFDATA" ) pgo_env["JARLOG_FILE"] = mozpath.join(orig_topobjdir, "jarlog/en-US.log") pgo_cmd = [ - instr.virtualenv_manager.python_path, + command_context.virtualenv_manager.python_path, mozpath.join(command_context.topsrcdir, "build/pgo/profileserver.py"), ] subprocess.check_call(pgo_cmd, cwd=instr.topobjdir, env=pgo_env) # Set the default build to MOZ_PROFILE_USE diff --git a/python/mozbuild/mozbuild/controller/building.py b/python/mozbuild/mozbuild/controller/building.py --- a/python/mozbuild/mozbuild/controller/building.py +++ b/python/mozbuild/mozbuild/controller/building.py @@ -1220,10 +1220,11 @@ directory=None, verbose=False, keep_going=False, mach_context=None, append_env=None, + virtualenv_topobjdir=None, ): """Invoke the build backend. ``what`` defines the thing to build. If not defined, the default target is used. @@ -1297,10 +1298,11 @@ config_rc = self.configure( metrics, buildstatus_messages=True, line_handler=output.on_line, append_env=append_env, + virtualenv_topobjdir=virtualenv_topobjdir, ) if config_rc != 0: return config_rc @@ -1635,10 +1637,11 @@ metrics, options=None, buildstatus_messages=False, line_handler=None, append_env=None, + virtualenv_topobjdir=None, ): # Disable indexing in objdir because it is not necessary and can slow # down builds. self.metrics = metrics mkdir(self.topobjdir, not_indexed=True) @@ -1658,15 +1661,16 @@ if line.startswith("export "): k, eq, v = line[len("export ") :].partition("=") if eq == "=": append_env[k] = v + virtualenv_topobjdir = virtualenv_topobjdir or self.topobjdir build_site = CommandSiteManager.from_environment( self.topsrcdir, lambda: get_state_dir(specific_to_topsrcdir=True, topsrcdir=self.topsrcdir), "build", - os.path.join(self.topobjdir, "_virtualenvs"), + os.path.join(virtualenv_topobjdir, "_virtualenvs"), ) build_site.ensure() command = [build_site.python_path, os.path.join(self.topsrcdir, "configure.py")] if options: