Skip to content

Commit

Permalink
Bug 1752381 - only parse stdout in substitute-local-geckoview. r=nale…
Browse files Browse the repository at this point in the history
…xander

Root cause: in the current tree, mach commands in mozilla-central output a
warning to stderr. The substitute-local-geckoview script was calling a mach
command and combining the stdout and stderr streams of the process, parsing
it as JSON. This warning is not JSON so the script crashed.

The crashing code was copied from settings.gradle:
  https://searchfox.org/mozilla-central/rev/b70bc09685763c44a8e56e4e04cb741fa020701a/settings.gradle#26

The code in settings.gradle does an intuitive thing - capture stderr separately
but only print it on subprocess non-zero exit value - so we also copy that
solution. I'm not sure what an appropriate place to store code shared between
these two files would be so I didn't try to deduplicate it.

Differential Revision: https://phabricator.services.mozilla.com/D137591
  • Loading branch information
mcomella committed Feb 2, 2022
1 parent 3ead68f commit 88203f8
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions substitute-local-geckoview.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,15 @@ def loadMozconfig() {
machEnv(topsrcdir),
new File(ext.has('topobjdir') ? ext.get('topobjdir') : topsrcdir))
def standardOutput = new ByteArrayOutputStream()
proc.consumeProcessOutput(standardOutput, standardOutput)
def standardError = new ByteArrayOutputStream()
proc.consumeProcessOutput(standardOutput, standardError)
proc.waitFor()

// Only show the output if something went wrong.
if (proc.exitValue() != 0) {
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${proc.exitValue()}:\n\n${standardOutput.toString()}")
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${proc.exitValue()}:\n\n"
+ "stdout:\n${standardOutput.toString()}\n\n"
+ "stderr:\n${standardError.toString()}")
}

def slurper = new JsonSlurper()
Expand Down

0 comments on commit 88203f8

Please sign in to comment.