help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: guix import error + New: setting up a jupyterlab environment


From: Zelphir Kaltstahl
Subject: Re: guix import error + New: setting up a jupyterlab environment
Date: Sun, 18 Oct 2020 13:55:49 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]