Get matplotlib working with upstream Python
This patch adds support for using matplotlib plus its Gtk backend with
`--config=k8_upstream_python`. Unfortunately, the Tk backend doesn't
work because of how Python is packaged. See the following issue for
more information:
https://github.com/matplotlib/matplotlib/issues/23074
Separately, we need to patch pygobject and matplotlib for various
hermeticity reasons. To accomplish this, I've added patching support
for wheels downloaded via rules_python. I should have set it up to use
annotations (the same mechanism we use for injecting deps), but it was
a little cumbersome. Annotations are not set up for using in arguments
to repository rules. I instead opted for a separate JSON file. You can
find it at `tools/python/patches.json`.
You can try the two new example programs:
$ bazel run --config=k8_upstream_python //build_tests:matplotlib_example
$ bazel run --config=k8_upstream_python //build_tests:pygobject_example
Signed-off-by: Philipp Schrader <philipp.schrader@gmail.com>
Change-Id: I3c4e8648a8012aa23dedd53610e82d590d1c409d
diff --git a/build_tests/BUILD b/build_tests/BUILD
index 7c88992..718e817 100644
--- a/build_tests/BUILD
+++ b/build_tests/BUILD
@@ -232,3 +232,20 @@
"@pip//scipy",
],
)
+
+py_binary(
+ name = "pygobject_example",
+ srcs = ["pygobject_example.py"],
+ deps = [
+ "@pip//pygobject",
+ ],
+)
+
+py_binary(
+ name = "matplotlib_example",
+ srcs = ["matplotlib_example.py"],
+ deps = [
+ "@pip//matplotlib",
+ "@pip//pygobject",
+ ],
+)