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: Efraim Flashner
Subject: Re: guix import error + New: setting up a jupyterlab environment
Date: Wed, 21 Oct 2020 10:09:50 +0300

On Mon, Oct 19, 2020 at 08:19:05PM +0200, Zelphir Kaltstahl wrote:
> Hello Efraim,
> 
> Thanks for your patience! It seems with that I am getting quite far (at
> least it feels like making progress, or even being close to have a
> working environment), up to the "check phase". There some tests failing
> in the "check phase". Here is what I am getting now, regardless of
> whether I stick ("python-ipykernel" ,python-ipykernel) in the native
> inputs or propagated inputs:

For python packages it doesn't matter at build time, it's more about if
it's needed at build time (native-inputs) or if it's needed to run the
python program (propagated-inputs) since we don't have a good way to
tell python to keep a reference to other python packages.

> ~~~~START~~~~
> running install_egg_info
> Copying jupyterlab_server.egg-info to 
> /gnu/store/2h44ldpcqqd0q7hqpbcqdavcnbjsibfb-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server-1.2.0-py3.8.egg-info
> running install_scripts
> phase `install' succeeded after 0.3 seconds
> starting phase `wrap'
> find-files: 
> /gnu/store/2h44ldpcqqd0q7hqpbcqdavcnbjsibfb-python-jupyterlab-server-1.2.0/bin:
>  No such file or directory
> find-files: 
> /gnu/store/2h44ldpcqqd0q7hqpbcqdavcnbjsibfb-python-jupyterlab-server-1.2.0/sbin:
>  No such file or directory
> phase `wrap' succeeded after 0.0 seconds
> starting phase `check'
> running "python setup.py" with command "test" and parameters ()
> running test
> running egg_info
> writing jupyterlab_server.egg-info/PKG-INFO
> writing dependency_links to jupyterlab_server.egg-info/dependency_links.txt
> writing requirements to jupyterlab_server.egg-info/requires.txt
> writing top-level names to jupyterlab_server.egg-info/top_level.txt
> reading manifest file 'jupyterlab_server.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no previously-included files matching '*~' found anywhere in 
> distribution
> warning: no previously-included files matching '*.pyc' found anywhere in 
> distribution
> warning: no previously-included files matching '*.pyo' found anywhere in 
> distribution
> warning: no previously-included files matching '.git' found anywhere in 
> distribution
> warning: no previously-included files matching '.ipynb_checkpoints' found 
> anywhere in distribution
> writing manifest file 'jupyterlab_server.egg-info/SOURCES.txt'
> running build_ext
> test_get (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... ERROR
> test_get_bad (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... 
> ERROR
> test_listing (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... 
> ERROR
> test_patch (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... 
> ERROR
> test_patch_bad_data 
> (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... ERROR
> test_patch_wrong_id 
> (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... ERROR
> test_bad_put (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) 
> ... ERROR
> test_blank_put 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) ... ERROR
> test_delete (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) 
> ... ERROR
> test_get (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) ... 
> ERROR
> test_listing (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) 
> ... ERROR
> test_put (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) ... 
> ERROR
> 
> ======================================================================
> ERROR: test_get (jupyterlab_server.tests.test_settings_api.SettingsAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_settings_api.py",
>  line 31, in setUp
>     dst = os.path.join(self.lab_config.schemas_dir, '@jupyterlab')
> AttributeError: 'SettingsAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_get_bad 
> (jupyterlab_server.tests.test_settings_api.SettingsAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_settings_api.py",
>  line 31, in setUp
>     dst = os.path.join(self.lab_config.schemas_dir, '@jupyterlab')
> AttributeError: 'SettingsAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_listing 
> (jupyterlab_server.tests.test_settings_api.SettingsAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_settings_api.py",
>  line 31, in setUp
>     dst = os.path.join(self.lab_config.schemas_dir, '@jupyterlab')
> AttributeError: 'SettingsAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_patch (jupyterlab_server.tests.test_settings_api.SettingsAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_settings_api.py",
>  line 31, in setUp
>     dst = os.path.join(self.lab_config.schemas_dir, '@jupyterlab')
> AttributeError: 'SettingsAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_patch_bad_data 
> (jupyterlab_server.tests.test_settings_api.SettingsAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_settings_api.py",
>  line 31, in setUp
>     dst = os.path.join(self.lab_config.schemas_dir, '@jupyterlab')
> AttributeError: 'SettingsAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_patch_wrong_id 
> (jupyterlab_server.tests.test_settings_api.SettingsAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_settings_api.py",
>  line 31, in setUp
>     dst = os.path.join(self.lab_config.schemas_dir, '@jupyterlab')
> AttributeError: 'SettingsAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_bad_put 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_workspaces_api.py",
>  line 34, in setUp
>     dst = os.path.join(self.lab_config.workspaces_dir, item)
> AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_blank_put 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_workspaces_api.py",
>  line 34, in setUp
>     dst = os.path.join(self.lab_config.workspaces_dir, item)
> AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_delete 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_workspaces_api.py",
>  line 34, in setUp
>     dst = os.path.join(self.lab_config.workspaces_dir, item)
> AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_get 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_workspaces_api.py",
>  line 34, in setUp
>     dst = os.path.join(self.lab_config.workspaces_dir, item)
> AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_listing 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_workspaces_api.py",
>  line 34, in setUp
>     dst = os.path.join(self.lab_config.workspaces_dir, item)
> AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config'
> 
> ======================================================================
> ERROR: test_put 
> (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_server-1.2.0/jupyterlab_server/tests/test_workspaces_api.py",
>  line 34, in setUp
>     dst = os.path.join(self.lab_config.workspaces_dir, item)
> AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config'
> 
> ----------------------------------------------------------------------
> Ran 12 tests in 0.001s
> 
> FAILED (errors=12)
> Test failed: <unittest.runner.TextTestResult run=12 errors=12 failures=0>
> error: Test failed: <unittest.runner.TextTestResult run=12 errors=12 
> failures=0>
> command "python" "-c" "import setuptools, 
> tokenize;__file__='setup.py';f=getattr(tokenize, 'open', 
> open)(__file__);code=f.read().replace('\\r\\n', 
> '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" failed with 
> status 1
> ~~~~~END~~~~~
> 
> I have some thoughts about this:
> 
> The Python error does not really tell me what is wrong. I don't know why
> the `WorkspacesAPITest` does not have an attribute named `lab_config`.
> 
> One can see, that those are all API tests. Since there were problems in
> the previous step with network, perhaps it is a network thing here as
> well? (Is network, even if localhost for testing, available in the
> "check phase"?)

It's not likely related to networking, the error messages would mention
unavailable targets or something similar.

> It could also simply be, that some PyPI package has failing tests. I
> don't know how one could then skip such tests.

Assuming WorkspacesAPITest does actually have an attribute named
lab_config then you'll want to add the installed package to the python
path during the check phase. There are a number of packages which do
this. I can never remember the syntax so I always grep for
'add-installed-pythonpath' when it comes up.

> I guess I will summarize everything in the end and put it in a
> repository as a kind of "guide", so that others can use it or learn from
> the process.

I think people would really enjoy that. I picked up most of my packaging
know-how from looking at other packages.

> Regards,
> Zelphir
> 
> On 10/19/20 6:54 PM, Efraim Flashner wrote:
> > It looks like you need to add python-ipykernel to native-inputs.
> > Unless it's needed to run the program and not just for the test suite,
> > in which case it should go in propagated-inputs. There's no network
> > available in the build environment so it can't retrieve ipykernel
> > while building.
> >
> >
> > On October 19, 2020 2:31:53 PM UTC, Zelphir Kaltstahl
> > <zelphirkaltstahl@posteo.de> wrote:
> >
> >     Hello Efraim!
> >
> >     Thank you! Your idea of replacing "-" with "_" seems to partially
> >     help:
> >
> >     The package is downloaded and byte compiled. However, afterwards
> >     there is a problem, when it tries to copy the byte-compiled files
> >     in the "wrap phase" (comments inserted in some places):
> >
> >     ~~~~START~~~~
> >     ### ... a lot of output before this ...
> >
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/__init__.py
> >  to __init__.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/_version.py
> >  to _version.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/app.py
> >  to app.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/handlers.py
> >  to handlers.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/listings_handler.py
> >  to listings_handler.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/process.py
> >  to process.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/process_app.py
> >  to process_app.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/server.py
> >  to server.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/servertest.py
> >  to servertest.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/settings_handler.py
> >  to settings_handler.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/themes_handler.py
> >  to themes_handler.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/workspaces_handler.py
> >  to workspaces_handler.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/__init__.py
> >  to __init__.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/test_settings_api.py
> >  to test_settings_api.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/test_workspaces_api.py
> >  to test_workspaces_api.cpython-38.pyc
> >     byte-compiling 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/utils.py
> >  to utils.cpython-38.pyc
> >
> >     ### ... seems byte-compiling went without problems, but not comes the 
> > problem ...
> >
> >     running install_egg_info
> >     Copying jupyterlab_server.egg-info to 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server-1.2.0-py3.8.egg-info
> >     running install_scripts
> >     phase `install' succeeded after 0.3 seconds
> >     starting phase `wrap'
> >     find-files: 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/bin:
> >  No such file or directory
> >     find-files: 
> > /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/sbin:
> >  No such file or directory
> >     phase `wrap' succeeded after 0.0 seconds
> >     starting phase `check'
> >     running "python setup.py" with command "test" and parameters ()
> >     running test
> >     Searching for ipykernel
> >     Reading https://pypi.org/simple/ipykernel/
> >     Download error on https://pypi.org/simple/ipykernel/: [Errno -2] Name 
> > or service not known -- Some packages may not be found!
> >     Couldn't find index page for 'ipykernel' (maybe misspelled?)
> >     Scanning index of all packages (this may take a while)
> >     Reading https://pypi.org/simple/
> >     Download error on https://pypi.org/simple/: [Errno -2] Name or service 
> > not known -- Some packages may not be found!
> >     No local packages or working download links found for ipykernel
> >     error: Could not find suitable distribution for 
> > Requirement.parse('ipykernel')
> >     command "python" "-c" "import setuptools, 
> > tokenize;__file__='setup.py';f=getattr(tokenize, 'open', 
> > open)(__file__);code=f.read().replace('\\r\\n', 
> > '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" failed with 
> > status 1
> >     ~~~~~END~~~~~
> >
> >     So it seems, that while the download URL is corrected, there is
> >     another place, where Guix has an error now, resulting in a final
> >     error shown in command line:
> >
> >     ~~~~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'...
> >     substitute: updating substitutes from 'https://ci.guix.gnu.org'... 
> > 100.0%
> >     The following derivations will be built:
> >        
> > /gnu/store/wzmfn9m45bmsbrx094rv3lf3w0rpmw49-python-pytest-check-links-0.3.0.drv
> >        
> > /gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-server-1.2.0.drv
> >        
> > /gnu/store/32a28hd7aainwn0hfsnf3blh8prmfz61-jupyterlab_server-1.2.0.tar.gz.drv
> >
> >     3,9 MB will be downloaded
> >     downloading from 
> > https://ci.guix.gnu.org/nar/lzip/54kpl9psx16jwic4gpnjwh44kim04wlk-python-notebook-5.7.4
> >  ...
> >      python-notebook-5.7.4  3.7MiB                                          
> >                                                                             
> >                                                                             
> >       5.1MiB/s 00:01 [##################] 100.0%
> >
> >     building 
> > /gnu/store/32a28hd7aainwn0hfsnf3blh8prmfz61-jupyterlab_server-1.2.0.tar.gz.drv...
> >     downloading from 
> > https://files.pythonhosted.org/packages/source/j/jupyterlab_server/jupyterlab_server-1.2.0.tar.gz
> >  ...
> >     building 
> > /gnu/store/wzmfn9m45bmsbrx094rv3lf3w0rpmw49-python-pytest-check-links-0.3.0.drv...
> >     building 
> > /gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-server-1.2.0.drv...
> >     \ 'check' phasebuilder for 
> > `/gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-server-1.2.0.drv'
> >  failed with exit code 1
> >     build of 
> > /gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-server-1.2.0.drv
> >  failed
> >     View build log at 
> > '/var/log/guix/drvs/96/xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-server-1.2.0.drv.bz2'.
> >     guix environment: error: build of 
> > `/gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-server-1.2.0.drv'
> >  failed
> >     ~~~~~END~~~~~
> >
> >     Apparently ipykernel is not found, but when I visit
> >     https://pypi.org/simple/ipykernel/, I see packages there.
> >
> >     From the logs:
> >
> >     ~~~~START~~~~
> >     Download error on https://pypi.org/simple/ipykernel/: [Errno -2] Name 
> > or service not known -- Some packages may not be found!
> >     Couldn't find index page for 'ipykernel' (maybe misspelled?)
> >     ~~~~~END~~~~~
> >
> >     Do I need to add another input in my `jupyterlab.scm`? (How?) Or
> >     perhaps I need to create a separate `ipykernel.scm` which contains
> >     the output of `guix import pypi --recursive ipykernel`?
> >
> >     However, it somehow seems to fail for PyPI simple in general (from
> >     the logs again):
> >
> >     ~~~~START~~~~
> >     Reading https://pypi.org/simple/
> >     Download error on https://pypi.org/simple/: [Errno -2] Name or service 
> > not known -- Some packages may not be found!
> >     No local packages or working download links found for ipykernel
> >     error: Could not find suitable distribution for 
> > Requirement.parse('ipykernel')
> >     command "python" "-c" "import setuptools, 
> > tokenize;__file__='setup.py';f=getattr(tokenize, 'open', 
> > open)(__file__);code=f.read().replace('\\r\\n', 
> > '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" failed with 
> > status 1
> >     ~~~~~END~~~~~
> >
> >     Thanks,
> >     Zelphir
> >
> >
> >     On 10/18/20 6:35 PM, Efraim Flashner wrote:
> >>     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
> >>>
> >     -- 
> >     repositories: https://notabug.org/ZelphirKaltstahl
> >
> >
> > -- 
> > Sent from my Android device with K-9 Mail. Please excuse my brevity. 
> 
> -- 
> 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: signature.asc
Description: PGP signature


reply via email to

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