From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id yLHVFFdvjF9ycQAA0tVLHw (envelope-from ) for ; Sun, 18 Oct 2020 16:37:43 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id mNSqEFdvjF+eVQAA1q6Kng (envelope-from ) for ; Sun, 18 Oct 2020 16:37:43 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 59E199402DD for ; Sun, 18 Oct 2020 16:37:42 +0000 (UTC) Received: from localhost ([::1]:41818 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUBgj-0006eX-Ax for larch@yhetil.org; Sun, 18 Oct 2020 12:37:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60074) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kUBg8-0006bx-3Z for help-guix@gnu.org; Sun, 18 Oct 2020 12:37:05 -0400 Received: from flashner.co.il ([178.62.234.194]:60570) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kUBg5-0000Hg-HY for help-guix@gnu.org; Sun, 18 Oct 2020 12:37:03 -0400 Received: from localhost (unknown [141.226.13.8]) by flashner.co.il (Postfix) with ESMTPSA id 3511B4020F; Sun, 18 Oct 2020 16:36:24 +0000 (UTC) Date: Sun, 18 Oct 2020 19:35:50 +0300 From: Efraim Flashner To: Zelphir Kaltstahl Subject: Re: guix import error + New: setting up a jupyterlab environment Message-ID: <20201018163550.GI974@E5400> References: <87d01ibbo3.fsf@nckx> <74577458-7e58-4647-fd3d-62047b6d484b@posteo.de> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="K1SnTjlYS/YgcDEx" Content-Disposition: inline In-Reply-To: <74577458-7e58-4647-fd3d-62047b6d484b@posteo.de> X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Received-SPF: pass client-ip=178.62.234.194; envelope-from=efraim@flashner.co.il; helo=flashner.co.il X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/18 12:36:27 X-ACL-Warn: Detected OS = ??? X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: help-guix@gnu.org Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of help-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=help-guix-bounces@gnu.org X-Spam-Score: -2.61 X-TUID: Q6tpFFg+/6fA --K1SnTjlYS/YgcDEx Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Oct 18, 2020 at 01:55:49PM +0200, Zelphir Kaltstahl wrote: > Hello Guix Users, hello Zimoun and Tobias! >=20 > Thanks for your information regarding the importer syntax thing. >=20 > I continued trying to get a jupyterlab environment today. >=20 > Here is what I did so far: >=20 > (1) Create my manifest file: >=20 > ~~~~START~~~~ > (specifications->manifest > '("python")) > ~~~~~END~~~~~ >=20 > (2) Create my channels file: >=20 > ~~~~START~~~~ > $ guix describe --format=3Dchannels > 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~~~~~ >=20 > (3) Create my jupyterlab PyPI import file, this time around using the > "/" instead of "@" for specifying the version: >=20 > ~~~~START~~~~ > $ guix import pypi --recursive jupyterlab/2.1.5 > jupyterlab.scm > ~~~~~END~~~~~ >=20 > (4) Add missing import expressions and add output expression at the end: >=20 > ~~~~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 pytho= n-jinja2` to find the location of python-jinja2, which is gnu/packages/pyth= on-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)) >=20 > ;; QUESTION: Why are those required packages not imported by guix automat= ically? > ;; QUESTION: Why are the manually imported packages not actually in files= with their own name, but instead jinja2 -> python-xyz, tornado -> python-w= eb, and pytest -> check? > ;; QUESTION: Is my process of finding the files in which the packages are= correct or just working by chance? >=20 > (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))) >=20 > (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))) >=20 > python-jupyterlab > ~~~~~END~~~~~ >=20 > And as noted in the comments, I have 3 questions at this point: >=20 > (Q1) Why are those required packages not imported by guix automatically? > (My guess: This functionality simply has not yet been implemented.) >=20 > (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? >=20 > (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. >=20 > (4) Now I run my time-machine command: >=20 > ~~~~START~~~~ > $ guix time-machine --channels=3Dchannels.scm -- environment --manifest= =3Dmanifest.scm --load=3Djupyterlab.scm > ~~~~~END~~~~~ >=20 > 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): >=20 > ~~~~START~~~~ > $ guix time-machine --channels=3Dchannels.scm -- environment --manifest= =3Dmanifest.scm --load=3Djupyterlab.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= =2E2.0.drv > /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.ta= r.gz.drv >=20 > 4,2 MB will be downloaded > downloading from https://ci.guix.gnu.org/nar/lzip/2nahbs5v8q073gjmy224gk0= h5lsh1kkw-python-nbconvert-5.0.0b1 ... > python-nbconvert-5.0.0b1 301KiB = = = 2.0MiB/s 00:00 [##################] 100.0% >=20 > building /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.= 2.0.tar.gz.drv... > |builder for `/gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-serv= er-1.2.0.tar.gz.drv' failed to produce output path `/gnu/store/92md7gh966n4= fzj6al267lqq4xjx0ncf-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-j= upyterlab-server-1.2.0.tar.gz.drv.bz2'. > cannot build derivation `/gnu/store/n9i421lrbwrr8d0947w5vma7rhy3iyba-pyth= on-jupyterlab-server-1.2.0.drv': 1 dependencies couldn't be built > killing process 7384 > guix environment: error: build of `/gnu/store/n9i421lrbwrr8d0947w5vma7rhy= 3iyba-python-jupyterlab-server-1.2.0.drv' failed > ~~~~~END~~~~~ >=20 > OK, an error, perhaps I can understand it. Lets look at that log file: >=20 > ~~~~START~~~~ > $ cp /var/log/guix/drvs/s7/jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-serv= er-1.2.0.tar.gz.drv.bz2 . > $ bzip2 --decompress jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2= =2E0.tar.gz.drv.bz2 > $ cat jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.gz.drv >=20 > Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterl= ab-server-1.2.0.tar.gz > From https://files.pythonhosted.org/packages/source/j/jupyterlab-server/j= upyterlab-server-1.2.0.tar.gz... > download failed "https://files.pythonhosted.org/packages/source/j/jupyter= lab-server/jupyterlab-server-1.2.0.tar.gz" 404 "Not Found" >=20 > Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterl= ab-server-1.2.0.tar.gz > From https://ci.guix.gnu.org/file/jupyterlab-server-1.2.0.tar.gz/sha256/1= 32xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal... > download failed "https://ci.guix.gnu.org/file/jupyterlab-server-1.2.0.tar= =2Egz/sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal" 404 "Not= Found" >=20 > Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterl= ab-server-1.2.0.tar.gz > From https://tarballs.nixos.org/sha256/132xby7531rbrjg9bqvsx86birr1blynjx= y8gi5kcnb6x7fxjcal... > download failed "https://tarballs.nixos.org/sha256/132xby7531rbrjg9bqvsx8= 6birr1blynjxy8gi5kcnb6x7fxjcal" 404 "Not Found" >=20 > Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterl= ab-server-1.2.0.tar.gz > From https://archive.softwareheritage.org/api/1/content/sha256:5431d9dde9= 6659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c/raw/... > download failed "https://archive.softwareheritage.org/api/1/content/sha25= 6:5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c/raw/" 40= 4 "Not Found" > failed to download "/gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-jupyterla= b-server-1.2.0.tar.gz" from "https://files.pythonhosted.org/packages/source= /j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz" > ~~~~~END~~~~~ >=20 > So it seems, that the jupyterlab-server file is simply not downloadable > any longer! >=20 > Trying using wget: >=20 > ~~~~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~~~~~ >=20 > 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? >=20 > 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 =46rom https://files.pythonhosted.org/packages/92/54/5f321ca4cebfb644ac59eb= 21601b46a2ff9831ffe1b4e5a588f2a7e98d48/jupyterlab_server-1.2.0.tar.gz... =E2=80=A6er-1.2.0.tar.gz 22KiB 57KiB/s 00:00 [#############= #####] 100.0% > Best regards, > Zelphir >=20 >=20 > On 10/16/20 2:25 PM, Tobias Geerinckx-Rice wrote: > > Zelphir, > > > > Zelphir Kaltstahl =E5=86=99=E9=81=93=EF=BC=9A > >> $ guix import pypi 'jupyterlab@2.1.5' --recursive > > > > It will work if you substitute =E2=80=98/=E2=80=99 for =E2=80=98@=E2=80= =99.=C2=A0 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.=C2=A0 It would be great(TM) if PACKAGE[@VERSION] were > > standard.=C2=A0 Each importer could handle it properly (e.g., by turnin= g it > > into "/") or return a friendlier =E2=80=98the foo importer does not yet > > support versions=E2=80=99 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 >=20 > --=20 > repositories: https://notabug.org/ZelphirKaltstahl >=20 --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --K1SnTjlYS/YgcDEx Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+MbuYACgkQQarn3Mo9 g1Fe+xAAsaqao7pcBXjSyKMdbTXgVerwN19GAWhI+rhiQijGpXMIB5PjOjPDmjfy aI8DKGHgzpm0Ja9z+FBK+4qB/zdNFE6aZSYvzIRsE8+biQd9az8E5wYlw8+L3kLl cjw9+KitVDZ/TS4vSptqJAXlVFdV+ay8HFXqgEt63zA52KZ+NAiOECo3cO4ZKRMD 9uh4zUxEIThI075v6HisqU6j8qs/bk/kCGoKP/aTM75IvQ5ZT4fJFQasBl9O6rTE qMrb2oqasiwh4T2bjFMaIP/VHfg8qppsyE0S4Xl39tjgTIu+VQ72HzzIGFKRaRCt q3sE0PURrGKJIEvNeyaCkx/Jg1jViMM2HFz9GShjeWd61T2fi8JWgd0fMKYDZOuX vY9BrMQ3wylIMcuhr5yskEkKJe6UrV+p4PEmDoD5EN0TG/1q0AF8AorXmlgYRrZr oDxGMqipOOAk0kXtG/MrCJgQPwE0CrlF6c7t3WM43lX2FQmbRTLLiI5uYlnphU04 Ed9/5ZrNdQBE5yK8l9SirBaPyWyW7lCd6fSjnP5wIjEZgnAO4eykJS+JpFZNSd5j mkw7y7pkSuit7f+IrB88ynosivTbY6IcMvVVVwYHdvqnx2MivU59FZHSMo7swj0G Y7U9GQcY+aXE7pF8du6MRhclvN29RJX2XHTR9xsgFdH7pMFPg3c= =DzR1 -----END PGP SIGNATURE----- --K1SnTjlYS/YgcDEx--