unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Efraim Flashner <efraim@flashner.co.il>
To: Zelphir Kaltstahl <zelphirkaltstahl@posteo.de>
Cc: help-guix@gnu.org
Subject: Re: guix import error + New: setting up a jupyterlab environment
Date: Sun, 18 Oct 2020 19:35:50 +0300	[thread overview]
Message-ID: <20201018163550.GI974@E5400> (raw)
In-Reply-To: <74577458-7e58-4647-fd3d-62047b6d484b@posteo.de>

[-- Attachment #1: Type: text/plain, Size: 12740 bytes --]

On Sun, Oct 18, 2020 at 01:55:49PM +0200, Zelphir Kaltstahl wrote:
> Hello Guix Users, hello Zimoun and Tobias!
> 
> Thanks for your information regarding the importer syntax thing.
> 
> I continued trying to get a jupyterlab environment today.
> 
> Here is what I did so far:
> 
> (1) Create my manifest file:
> 
> ~~~~START~~~~
> (specifications->manifest
>  '("python"))
> ~~~~~END~~~~~
> 
> (2) Create my channels file:
> 
> ~~~~START~~~~
> $ guix describe --format=channels > channels.scm
> $ cat channels.scm
> (list (channel
>         (name 'guix)
>         (url "https://git.savannah.gnu.org/git/guix.git")
>         (commit
>           "6ca673b30dac281ba27a8dac242c0ac83e5e354b")
>         (introduction
>           (make-channel-introduction
>             "9edb3f66fd807b096b48283debdcddccfea34bad"
>             (openpgp-fingerprint
>               "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))
> ~~~~~END~~~~~
> 
> (3) Create my jupyterlab PyPI import file, this time around using the
> "/" instead of "@" for specifying the version:
> 
> ~~~~START~~~~
> $ guix import pypi --recursive jupyterlab/2.1.5 > jupyterlab.scm
> ~~~~~END~~~~~
> 
> (4) Add missing import expressions and add output expression at the end:
> 
> ~~~~START~~~~
> ;; add module imports
> (use-modules
>  (guix packages)
>  (guix download)
>  (guix build-system python)
>  ((guix licenses) #:prefix license:)
>  ;; use `guix environment --ad-hoc python-jinja2 -- guix package -A python-jinja2` to find the location of python-jinja2, which is gnu/packages/python-xyz.scm

This can be just 'guix package -A python-jinja2', no need for the
environment.

>  (gnu packages python-xyz)
>  ;; for python-tornado
>  (gnu packages python-web)
>  ;; for python-pytest
>  (gnu packages check))
> 
> ;; QUESTION: Why are those required packages not imported by guix automatically?
> ;; QUESTION: Why are the manually imported packages not actually in files with their own name, but instead jinja2 -> python-xyz, tornado -> python-web, and pytest -> check?
> ;; QUESTION: Is my process of finding the files in which the packages are correct or just working by chance?
> 
> (define-public python-jupyterlab-server
>   (package
>     (name "python-jupyterlab-server")
>     (version "1.2.0")
>     (source
>       (origin
>         (method url-fetch)
>         (uri (pypi-uri "jupyterlab-server" version))
>         (sha256
>           (base32
>             "132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal"))))
>     (build-system python-build-system)
>     (propagated-inputs
>       `(("python-jinja2" ,python-jinja2)
>         ("python-json5" ,python-json5)
>         ("python-jsonschema" ,python-jsonschema)
>         ("python-notebook" ,python-notebook)
>         ("python-requests" ,python-requests)))
>     (native-inputs
>       `(("python-pytest" ,python-pytest)
>         ("python-requests" ,python-requests)))
>     (home-page "https://jupyter.org")
>     (synopsis "JupyterLab Server")
>     (description "JupyterLab Server")
>     (license license:bsd-3)))
> 
> (define-public python-jupyterlab
>   (package
>     (name "python-jupyterlab")
>     (version "2.1.5")
>     (source
>       (origin
>         (method url-fetch)
>         (uri (pypi-uri "jupyterlab" version))
>         (sha256
>           (base32
>             "162jn51cg36fsn4l2zhnb5n4nbkhm9wlv974ggcnmdij3i4r4yya"))))
>     (build-system python-build-system)
>     (propagated-inputs
>       `(("python-jinja2" ,python-jinja2)
>         ("python-jupyterlab-server"
>          ,python-jupyterlab-server)
>         ("python-notebook" ,python-notebook)
>         ("python-tornado" ,python-tornado)))
>     (native-inputs
>       `(("python-pytest" ,python-pytest)
>         ("python-pytest-check-links"
>          ,python-pytest-check-links)
>         ("python-requests" ,python-requests)
>         ("python-virtualenv" ,python-virtualenv)
>         ("python-wheel" ,python-wheel)))
>     (home-page "http://jupyter.org")
>     (synopsis
>       "The JupyterLab notebook server extension.")
>     (description
>       "The JupyterLab notebook server extension.")
>     (license license:bsd-3)))
> 
> python-jupyterlab
> ~~~~~END~~~~~
> 
> And as noted in the comments, I have 3 questions at this point:
> 
> (Q1) Why are those required packages not imported by guix automatically?
> (My guess: This functionality simply has not yet been implemented.)
> 
> (Q2) Why are the manually imported packages not actually in files with
> their own name, but instead jinja2 -> python-xyt, tornado -> python-web,
> and pytest -> check? Why not (gnu packages python pytest) for example?
> 
> (Q3) Is my process of finding the files in which the packages are
> correct or just working by chance? Basically I am creating temporary
> environments, in which I then lookup "where would the package be
> installed" and then exit the temporary environment to use that
> information in my imported package file's import expressions /
> use-modules expression. This seems to be a bit of a convoluted process,
> though worth it, if it always works in the end.
> 
> (4) Now I run my time-machine command:
> 
> ~~~~START~~~~
> $ guix time-machine --channels=channels.scm -- environment --manifest=manifest.scm --load=jupyterlab.scm
> ~~~~~END~~~~~
> 
> This take a moment and then I get an error (the full output is longer,
> but when running it multiple times, already successful steps are not all
> done repeatedly, so the output is then reduced to what fails):
> 
> ~~~~START~~~~
> $ guix time-machine --channels=channels.scm -- environment --manifest=manifest.scm --load=jupyterlab.scm
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> The following derivations will be built:
>    /gnu/store/wzmfn9m45bmsbrx094rv3lf3w0rpmw49-python-pytest-check-links-0.3.0.drv
>    /gnu/store/n9i421lrbwrr8d0947w5vma7rhy3iyba-python-jupyterlab-server-1.2.0.drv
>    /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv
> 
> 4,2 MB will be downloaded
> downloading from https://ci.guix.gnu.org/nar/lzip/2nahbs5v8q073gjmy224gk0h5lsh1kkw-python-nbconvert-5.0.0b1 ...
>  python-nbconvert-5.0.0b1  301KiB                                                                                                                                                                                                     2.0MiB/s 00:00 [##################] 100.0%
> 
> building /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv...
> |builder for `/gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv' failed to produce output path `/gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz'
> build of /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv failed
> View build log at '/var/log/guix/drvs/s7/jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv.bz2'.
> cannot build derivation `/gnu/store/n9i421lrbwrr8d0947w5vma7rhy3iyba-python-jupyterlab-server-1.2.0.drv': 1 dependencies couldn't be built
> killing process 7384
> guix environment: error: build of `/gnu/store/n9i421lrbwrr8d0947w5vma7rhy3iyba-python-jupyterlab-server-1.2.0.drv' failed
> ~~~~~END~~~~~
> 
> OK, an error, perhaps I can understand it. Lets look at that log file:
> 
> ~~~~START~~~~
> $ cp /var/log/guix/drvs/s7/jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv.bz2 .
> $ bzip2 --decompress jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv.bz2
> $ cat jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv
> 
> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz
> From https://files.pythonhosted.org/packages/source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz...
> download failed "https://files.pythonhosted.org/packages/source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz" 404 "Not Found"
> 
> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz
> From https://ci.guix.gnu.org/file/jupyterlab-server-1.2.0.tar.gz/sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal...
> download failed "https://ci.guix.gnu.org/file/jupyterlab-server-1.2.0.tar.gz/sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal" 404 "Not Found"
> 
> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz
> From https://tarballs.nixos.org/sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal...
> download failed "https://tarballs.nixos.org/sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal" 404 "Not Found"
> 
> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz
> From https://archive.softwareheritage.org/api/1/content/sha256:5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c/raw/...
> download failed "https://archive.softwareheritage.org/api/1/content/sha256:5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c/raw/" 404 "Not Found"
> failed to download "/gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz" from "https://files.pythonhosted.org/packages/source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz"
> ~~~~~END~~~~~
> 
> So it seems, that the jupyterlab-server file is simply not downloadable
> any longer!
> 
> Trying using wget:
> 
> ~~~~START~~~~
> $ wget https://files.pythonhosted.org/packages/source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz
> --2020-10-18 13:49:52--  https://files.pythonhosted.org/packages/source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz
> Resolving files.pythonhosted.org (files.pythonhosted.org)... 2a04:4e42:9::319, 151.101.37.63
> Connecting to files.pythonhosted.org (files.pythonhosted.org)|2a04:4e42:9::319|:443... failed: Connection refused.
> Connecting to files.pythonhosted.org (files.pythonhosted.org)|151.101.37.63|:443... connected.
> HTTP request sent, awaiting response... 404 Not Found
> 2020-10-18 13:49:53 ERROR 404: Not Found.
> ~~~~~END~~~~~
> 
> So now I am out of ideas. It seems the file is not available any longer
> and the definition of jupyterlab needs to be updated somewhere, so that
> it does not try to download an old or non-existent version of
> jupyter-labserver. But how is this usually done? Can I specify it
> somewhere in one of the 3 files I have, or am I dependent on someone
> fixing the jupyterlab-server dependency / input for juypterlab?
> 
> Thanks for your help so far! Tell me, if I need to provide any more
> information to solve the problem.

Try chaning the URL line to (uri (pypi-uri "jupyterlab_server" version)),
with an underscore (_). I don't have any special suggestions for knowing
that it should be an underscore instead of a dash. The best I have is
the output from 'guix import pypi jupyterlab-server:

(ins)efraim@E5400 ~$ guix import pypi jupyterlab-server

Starting download of /tmp/guix-file.ayJ41F
From https://files.pythonhosted.org/packages/92/54/5f321ca4cebfb644ac59eb21601b46a2ff9831ffe1b4e5a588f2a7e98d48/jupyterlab_server-1.2.0.tar.gz...
 …er-1.2.0.tar.gz  22KiB               57KiB/s 00:00 [##################] 100.0%



> Best regards,
> Zelphir
> 
> 
> On 10/16/20 2:25 PM, Tobias Geerinckx-Rice wrote:
> > Zelphir,
> >
> > Zelphir Kaltstahl 写道:
> >> $ guix import pypi 'jupyterlab@2.1.5' --recursive
> >
> > It will work if you substitute ‘/’ for ‘@’.  Yes, this is a happy
> > accident specific to the PyPI importer, and I'm sure you can guess why
> > it happens to work.
> >
> >>> guix import hackage mtl@2.1.3.1
> >>
> >> But that is in the "hackage" import section. Is the same not available
> >> for PyPI?
> >
> > [...]
> >
> >> Do the various importers work differently?
> >
> > Unfortunately so.  It would be great(TM) if PACKAGE[@VERSION] were
> > standard.  Each importer could handle it properly (e.g., by turning it
> > into "/") or return a friendlier ‘the foo importer does not yet
> > support versions’ error.
> >
> > I don't have the time, but this sounds like a good intermediate-level
> > hack for someone who does :-)
> >
> > Kind regards,
> >
> > T G-R
> 
> -- 
> repositories: https://notabug.org/ZelphirKaltstahl
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2020-10-18 16:37 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-16 11:50 guix import error Zelphir Kaltstahl
2020-10-16 12:19 ` zimoun
2020-10-16 12:25 ` Tobias Geerinckx-Rice
2020-10-16 13:51   ` zimoun
2020-10-18 11:55   ` guix import error + New: setting up a jupyterlab environment Zelphir Kaltstahl
2020-10-18 16:35     ` Efraim Flashner [this message]
2020-10-19 14:31       ` Zelphir Kaltstahl
2020-10-19 16:54         ` Efraim Flashner
2020-10-19 18:19           ` Zelphir Kaltstahl
2020-10-19 21:12             ` Zelphir Kaltstahl
2020-10-21  7:18               ` Efraim Flashner
2020-10-24 19:42                 ` Zelphir Kaltstahl
2020-10-25  8:52                   ` Efraim Flashner
2020-10-25 11:49                     ` Zelphir Kaltstahl
2020-10-21  7:09             ` Efraim Flashner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201018163550.GI974@E5400 \
    --to=efraim@flashner.co.il \
    --cc=help-guix@gnu.org \
    --cc=zelphirkaltstahl@posteo.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).