xref: /llvm-project/mlir/utils/jupyter/mlir_opt_kernel/install.py (revision 04c66edd3251975fd253e4c4b0e86ea56e8a7f46)
1# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
2# See https://llvm.org/LICENSE.txt for license information.
3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
5import os
6import argparse
7
8from jupyter_client.kernelspec import KernelSpecManager
9
10
11def install_my_kernel_spec(user=True, prefix=None):
12    """Install the kernel spec for user in given prefix."""
13    print('Installing mlir-opt IPython kernel spec')
14    pkgroot = os.path.dirname(__file__)
15    KernelSpecManager().install_kernel_spec(os.path.join(pkgroot, 'assets'),
16                                            'mlir',
17                                            user=user,
18                                            prefix=prefix)
19
20
21def _is_root():
22    """Returns whether the current user is root."""
23    try:
24        return os.geteuid() == 0
25    except AttributeError:
26        # Return false wherever unknown.
27        return False
28
29
30def main(argv=None):
31    parser = argparse.ArgumentParser(
32        description='Install KernelSpec for MlirOpt Kernel')
33    prefix_locations = parser.add_mutually_exclusive_group()
34
35    prefix_locations.add_argument('--user',
36                                  help='Install in user home directory',
37                                  action='store_true')
38    prefix_locations.add_argument('--prefix',
39                                  help='Install directory prefix',
40                                  default=None)
41
42    args = parser.parse_args(argv)
43
44    user = args.user or not _is_root()
45    prefix = args.prefix
46
47    install_my_kernel_spec(user=user, prefix=prefix)
48
49
50if __name__ == '__main__':
51    main()
52