unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Zelphir Kaltstahl <zelphirkaltstahl@posteo.de>
To: Tobias Geerinckx-Rice <me@tobias.gr>, zimoun <zimon.toutoune@gmail.com>
Cc: help-guix@gnu.org
Subject: Re: guix import error + New: setting up a jupyterlab environment
Date: Sun, 18 Oct 2020 13:55:49 +0200	[thread overview]
Message-ID: <74577458-7e58-4647-fd3d-62047b6d484b@posteo.de> (raw)
In-Reply-To: <87d01ibbo3.fsf@nckx>

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
 (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.

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


  parent reply	other threads:[~2020-10-18 11:56 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   ` Zelphir Kaltstahl [this message]
2020-10-18 16:35     ` guix import error + New: setting up a jupyterlab environment Efraim Flashner
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=74577458-7e58-4647-fd3d-62047b6d484b@posteo.de \
    --to=zelphirkaltstahl@posteo.de \
    --cc=help-guix@gnu.org \
    --cc=me@tobias.gr \
    --cc=zimon.toutoune@gmail.com \
    /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).