[mlir][python] Simplify python extension loading.
authorStella Laurenzo <stellaraccident@gmail.com>
Fri, 3 Sep 2021 00:37:00 +0000 (00:37 +0000)
committerStella Laurenzo <stellaraccident@gmail.com>
Fri, 3 Sep 2021 00:43:28 +0000 (00:43 +0000)
commitcb7b03819ae667a87e49fa2546498dcf6248d99c
tree4b9caf1f7f92707c873579e439df1a0812502e4e
parent78fbd1aa3da4da318f6ee8d269f1f4002d19a7ff
[mlir][python] Simplify python extension loading.

* Now that packaging has stabilized, removes old mechanisms for loading extensions, preferring direct importing.
* Removes _cext_loader.py, _dlloader.py as unnecessary.
* Fixes the path where the CAPI dll is written on Windows. This enables that path of least resistance loading behavior to work with no further drama (see: https://bugs.python.org/issue36085).
* With this patch, `ninja check-mlir` on Windows with Python bindings works for me, modulo some failures that are actually due to a couple of pre-existing Windows bugs. I think this is the first time the Windows Python bindings have worked upstream.
* Downstream changes needed:
  * If downstreams are using the now removed `load_extension`, `reexport_cext`, etc, then those should be replaced with normal import statements as done in this patch.

Reviewed By: jdd, aartbik

Differential Revision: https://reviews.llvm.org/D108489
19 files changed:
mlir/cmake/modules/AddMLIRPython.cmake
mlir/lib/Bindings/Python/IRModule.cpp
mlir/python/CMakeLists.txt
mlir/python/mlir/_cext_loader.py [deleted file]
mlir/python/mlir/_dlloader.py [deleted file]
mlir/python/mlir/_mlir_libs/__init__.py
mlir/python/mlir/all_passes_registration/__init__.py
mlir/python/mlir/conversions/__init__.py
mlir/python/mlir/dialects/_linalg_ops_ext.py
mlir/python/mlir/dialects/_ods_common.py
mlir/python/mlir/dialects/async_dialect/passes/__init__.py
mlir/python/mlir/dialects/gpu/passes/__init__.py
mlir/python/mlir/dialects/linalg/opdsl/lang/emitter.py
mlir/python/mlir/dialects/linalg/passes/__init__.py
mlir/python/mlir/dialects/sparse_tensor.py
mlir/python/mlir/execution_engine.py
mlir/python/mlir/ir.py
mlir/python/mlir/passmanager.py
mlir/python/mlir/transforms/__init__.py