Hi, I played with cl-jupyter:install but it heavily depends on Quicklisp but what basically does - generates simple JSON with CL implementation https://github.com/yitzchak/common-lisp-jupyter/issues/78 First I tried to do the same during build phase by evaluationg arbitrary Lisp but could not manged it to work. Then after checking the kernel.json I just simply formated it with right %lispt-type path and copied with the same evaluation as R Jupyter package, but I've got some error during coping into Jupyter directory: --8<---------------cut here---------------start------------->8--- phase `generate-kernelspec' succeeded after 0.0 seconds starting phase `install-kernelspec' command "jupyter" "kernelspec" "install" "--name" "cl-jupyter" "--prefix" "/gnu/store/xjqxskiqjlzirlg478gnlp7x6w2jcz63-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7" "/gnu/store/xjqxskiqjlzirlg478gnlp7x6w2jcz63-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7/share/cl-jupyter/kernelspec" failed with status 127 builder for `/gnu/store/azl65q1bl2pv920fmgw6d8k0brsx6hdg-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7.drv' failed with exit code 1 build of /gnu/store/azl65q1bl2pv920fmgw6d8k0brsx6hdg-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7.drv failed View build log at '/var/log/guix/drvs/az/l65q1bl2pv920fmgw6d8k0brsx6hdg-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7.drv.bz2'. guix build: error: build of `/gnu/store/azl65q1bl2pv920fmgw6d8k0brsx6hdg-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7.drv' failed (guix/linux-gnu)[sharlatan@guxtil ~/Projects/prj/guix-channel]$: jupyter kernelspec install --name cl-jupyter --prefix /gnu/store/xjqxskiqjlzirlg478gnlp7x6w2jcz63-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7 /gnu/store/xjqxskiqjlzirlg478gnlp7x6w2jcz63-sbcl-common-lisp-jupyter-0.1.0-4.ba9f0e7/share/cl-jupyter/kernelspec Traceback (most recent call last): File "/gnu/store/30ydqwp1xccqzn5s4rcq4clpqzcaz3p1-python-jupyter-client-6.1.12/bin/.jupyter-kernelspec-real", line 11, in load_entry_point('jupyter-client==6.1.12', 'console_scripts', 'jupyter-kernelspec')() File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 663, in launch_instance app.initialize(argv) File "", line 2, in initialize File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 87, in catch_config_error return method(app, *args, **kwargs) File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 297, in initialize self.parse_command_line(argv) File "", line 2, in parse_command_line File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 87, in catch_config_error return method(app, *args, **kwargs) File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 515, in parse_command_line return self.initialize_subcommand(subc, subargv) File "", line 2, in initialize_subcommand File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 87, in catch_config_error return method(app, *args, **kwargs) File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 453, in initialize_subcommand self.subapp.initialize(argv) File "", line 2, in initialize File "/gnu/store/ih0jscm3ilqn2r33ms8014ap26jhjfqa-python-traitlets-4.3.3/lib/python3.8/site-packages/traitlets/config/application.py", line 87, in catch_config_error return method(app, *args, **kwargs) File "/gnu/store/yj346rpx2mf1afa6jxl2kh9i335an27y-python-jupyter-core-4.7.1/lib/python3.8/site-packages/jupyter_core/application.py", line 229, in initialize self.migrate_config() File "/gnu/store/yj346rpx2mf1afa6jxl2kh9i335an27y-python-jupyter-core-4.7.1/lib/python3.8/site-packages/jupyter_core/application.py", line 155, in migrate_config migrate() File "/gnu/store/yj346rpx2mf1afa6jxl2kh9i335an27y-python-jupyter-core-4.7.1/lib/python3.8/site-packages/jupyter_core/migrate.py", line 244, in migrate ensure_dir_exists(env['jupyter_config']) File "/gnu/store/yj346rpx2mf1afa6jxl2kh9i335an27y-python-jupyter-core-4.7.1/lib/python3.8/site-packages/jupyter_core/utils/__init__.py", line 11, in ensure_dir_exists os.makedirs(path, mode=mode) File "/gnu/store/hq7qr7nc2j29z3pivm3azfjy6jq3d7nx-python-3.8.2/lib/python3.8/os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "/gnu/store/hq7qr7nc2j29z3pivm3azfjy6jq3d7nx-python-3.8.2/lib/python3.8/os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "/gnu/store/hq7qr7nc2j29z3pivm3azfjy6jq3d7nx-python-3.8.2/lib/python3.8/os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) [Previous line repeated 12 more times] File "/gnu/store/hq7qr7nc2j29z3pivm3azfjy6jq3d7nx-python-3.8.2/lib/python3.8/os.py", line 223, in makedirs mkdir(name, mode) --8<---------------cut here---------------end--------------->8--- On Wed, 19 May 2021 at 22:23, Sharlatan Hellseher wrote: > > Hi, > > I've checked the r-irkernel and it's coping existing kernelspec , > which is not useful in this case. > > As Guillaume mentioned we could tweak it before installation phase by > using cl-jupyter:install, so here is my draft: > > --8<---------------cut here---------------start------------->8--- > (arguments > `(#:phases > (modify-phases %standard-phases > (add-before 'install 'generate-kernelspec > (lambda* (#:key outputs #:allow-other-keys) > (let* ((out (assoc-ref outputs "out")) > (kernelspec (string-append out > "/share/cl-jupyter/kernelspec"))) > (mkdir-p kernelspec) > (invoke "sbcl" > "--eval" "\"(require :asdf)\"" > "--eval" "\"(require :common-lisp-jupyter)\"" > "--eval" > (string-append > "\"(cl-jupyter:install" > ":bin-path" (string-append > (assoc-ref %build-inputs "sbcl") > "/bin/sbcl") > ":prefix" out ")\"") > "--eval" "\"(exit)\"")) > #t)) > (add-after 'install 'install-kernelspec > (lambda* (#:key outputs #:allow-other-keys) > (let ((out (assoc-ref outputs "out")) > (kernelspec (string-append out > "/share/cl-jupyter/kernelspec"))) > (invoke "jupyter" "kernelspec" "install" > "--name" "cl-jupyter" > "--prefix" out > kernelspec) > #t)))))) > --8<---------------cut here---------------end--------------->8--- > > But there could be a potential blocking issue with :prefix key > > https://github.com/yitzchak/common-lisp-jupyter/issues/78 > > On Tue, 18 May 2021 at 16:58, Guillaume Le Vaillant wrote: > > > > Hi Jack, > > > > I guess it will be easier to just add a phase writing the "kernel.json" > > file in the right place. In this build phase, to know if the package is > > being built for SBCL or ECL, the '(%lisp-type)' function that will > > return "sbcl" or "ecl" can be used. There's an example in the > > sbcl-trivial-backtrace package. > > > > -- > > … наш разум - превосходная объяснительная машина которая способна > найти смысл почти в чем угодно, истолковать любой феномен, но > совершенно не в состоянии принять мысль о непредсказуемости. -- … наш разум - превосходная объяснительная машина которая способна найти смысл почти в чем угодно, истолковать любой феномен, но совершенно не в состоянии принять мысль о непредсказуемости.