diff --git a/llvm/utils/TableGen/jupyter/README.md b/llvm/utils/TableGen/jupyter/README.md index 660b5a7015feb..f2909265d99c6 100644 --- a/llvm/utils/TableGen/jupyter/README.md +++ b/llvm/utils/TableGen/jupyter/README.md @@ -15,15 +15,13 @@ that is not possible, there are Markdown versions next to the notebook files. ## TableGen Kernel -To use the kernel, first install it into jupyter: +To use the kernel, first install it into jupyter. - python3 -m tablegen_kernel.install - -Then put this folder on your PYTHONPATH so jupyter can find it: +If you have installed Jupyter into a virtual environment, adjust `python3` to +be the interpreter for that environment. This will ensure that tools run the +kernel in the correct context. -```shell - export PYTHONPATH=$PYTHONPATH: -``` + python3 -m tablegen_kernel.install Then run one of: diff --git a/llvm/utils/TableGen/jupyter/tablegen_kernel/assets/kernel.json b/llvm/utils/TableGen/jupyter/tablegen_kernel/assets/kernel.json deleted file mode 100644 index 656fcbf4b379a..0000000000000 --- a/llvm/utils/TableGen/jupyter/tablegen_kernel/assets/kernel.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "argv": [ - "python3", "-m", "tablegen_kernel", "-f", "{connection_file}" - ], - "display_name": "LLVM TableGen", - "language": "tablegen", - "language_info": { - "name": "tablegen", - "codemirror_mode": "tablegen", - "mimetype": "text/x-tablegen", - "file_extension": ".td", - "pygments_lexer": "text" - } -} diff --git a/llvm/utils/TableGen/jupyter/tablegen_kernel/install.py b/llvm/utils/TableGen/jupyter/tablegen_kernel/install.py index 075c8abfdf664..22f6b46a133e4 100644 --- a/llvm/utils/TableGen/jupyter/tablegen_kernel/install.py +++ b/llvm/utils/TableGen/jupyter/tablegen_kernel/install.py @@ -3,17 +3,39 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception import os +import json +import sys import argparse +from tempfile import TemporaryDirectory from jupyter_client.kernelspec import KernelSpecManager def install_my_kernel_spec(user=True, prefix=None): """Install the kernel spec for user in given prefix.""" print("Installing llvm-tblgen IPython kernel spec") - pkgroot = os.path.dirname(__file__) - KernelSpecManager().install_kernel_spec( - os.path.join(pkgroot, "assets"), "tablegen", user=user, prefix=prefix - ) + + kernel_json = { + "argv": [ + sys.executable, "-m", "tablegen_kernel", "-f", "{connection_file}" + ], + "display_name": "LLVM TableGen", + "language": "tablegen", + "language_info": { + "name": "tablegen", + "codemirror_mode": "tablegen", + "mimetype": "text/x-tablegen", + "file_extension": ".td", + "pygments_lexer": "text" + } + } + + with TemporaryDirectory() as tmpdir: + json_path = os.path.join(tmpdir, "kernel.json") + with open(json_path, 'w') as json_file: + json.dump(kernel_json, json_file) + KernelSpecManager().install_kernel_spec( + tmpdir, "tablegen", user=user, prefix=prefix + ) def _is_root():