This reduces the text output when an error is hit, removing the tracebacks for known errors. Tracebacks are for unknown/unexpected errors - if you expect an error, it's better to print out an actual error message. I've also made the patch applying a bit more verbose in case it helps, as it sometimes does.

Example after the changes:

```
Building the following packages: yt
[1/1] (thread 1) building yt
Error building yt. Printing build logs.
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/setupext.py b/setupext.py
|index 92c456bab..ce2c5fbad 100644
|--- a/setupext.py
|+++ b/setupext.py
--------------------------
patching file setupext.py
Using Plan A...
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED -- saving rejects to file setupext.py.rej
done
[2022-03-02 17:35:58] Building package yt...
ERROR: Patch /src/packages/yt/patches/skip-openmp.patch failed
[2022-03-02 17:36:14] Succeeded building package yt in 16.5 seconds.
ERROR: cancelling buildall
[1/1] (thread 1) failed yt in 16.76 s
make[1]: *** [Makefile:12: all] Error 1
make[1]: Leaving directory '/src/packages'
make: *** [Makefile:187: build/packages.json] Error 2
```

fix: better error messages, fewer tracebacks. This reduces the text output when an error is hit, removing the tracebacks for known errors. Tracebacks are for unknown/unexpected errors - if you expect an error, it's better to print out an actual error message. I've also made the patch applying a bit more verbose in case it helps, as it sometimes does.

Example after the changes:

```
Building the following packages: yt
[1/1] (thread 1) building yt
Error building yt. Printing build logs.
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/setupext.py b/setupext.py
|index 92c456bab..ce2c5fbad 100644
|--- a/setupext.py
|+++ b/setupext.py
--------------------------
patching file setupext.py
Using Plan A...
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED -- saving rejects to file setupext.py.rej
done
[2022-03-02 17:35:58] Building package yt...
ERROR: Patch /src/packages/yt/patches/skip-openmp.patch failed
[2022-03-02 17:36:14] Succeeded building package yt in 16.5 seconds.
ERROR: cancelling buildall
[1/1] (thread 1) failed yt in 16.76 s
make[1]: *** [Makefile:12: all] Error 1
make[1]: Leaving directory '/src/packages'
make: *** [Makefile:187: build/packages.json] Error 2
```

import json
import sys

import matplotlib.pyplot as plt
import numpy as np

plt.rcdefaults()
fig, ax = plt.subplots(constrained_layout=True, figsize=(8, 8))

with open(sys.argv[-2]) as fp:
    content = json.load(fp)

results = []
for k, v in content.items():
    results.append((k, v["firefox"] / v["native"], v["chrome"] / v["native"]))
results.sort(key=lambda x: x[1], reverse=True)

names = [x[0] for x in results]
firefox = [x[1] for x in results]
chrome = [x[2] for x in results]

width = 0.35
y_pos = np.arange(len(results))
ax.barh(y_pos, firefox, width, color="#ff9400", label="firefox")
ax.barh(y_pos + width, chrome, width, color="#45a1ff", label="chrome")
ax.set_yticks(y_pos + width / 2)
ax.set_yticklabels(names)
ax.invert_yaxis()
ax.set_xlabel("Slowdown factor (WebAssembly:Native)")
ax.set_title("Python benchmarks")
ax.axvline(1.0, color="red")
ax.grid(axis="x")
ax.legend(loc="lower right")

plt.savefig(sys.argv[-1])

import json
import sys

import matplotlib.pyplot as plt
import numpy as np

plt.rcdefaults()
fig, ax = plt.subplots(constrained_layout=True, figsize=(8, 8))

with open(sys.argv[-2]) as fp:
    content = json.load(fp)

results = []
for k, v in content.items():
    results.append((k, v["firefox"] / v["native"], v["chrome"] / v["native"]))
results.sort(key=lambda x: x[1], reverse=True)

names = [x[0] for x in results]
firefox = [x[1] for x in results]
chrome = [x[2] for x in results]

width = 0.35
y_pos = np.arange(len(results))
ax.barh(y_pos, firefox, width, color="#ff9400", label="firefox")
ax.barh(y_pos + width, chrome, width, color="#45a1ff", label="chrome")
ax.set_yticks(y_pos + width / 2)
ax.set_yticklabels(names)
ax.invert_yaxis()
ax.set_xlabel("Slowdown factor (WebAssembly:Native)")
ax.set_title("Python benchmarks")
ax.axvline(1.0, color="red")
ax.grid(axis="x")
ax.legend(loc="lower right")

plt.savefig(sys.argv[-1])
