From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 20 18:25:56 2021 Received: (at submit) by debbugs.gnu.org; 20 Sep 2021 22:25:56 +0000 Received: from localhost ([127.0.0.1]:44244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSRjY-0000ir-2I for submit@debbugs.gnu.org; Mon, 20 Sep 2021 18:25:56 -0400 Received: from lists.gnu.org ([209.51.188.17]:54398) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSRjV-0000ig-LR for submit@debbugs.gnu.org; Mon, 20 Sep 2021 18:25:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41686) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mSRjR-0004X3-OC for guix-patches@gnu.org; Mon, 20 Sep 2021 18:25:53 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:34523) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mSRjO-0004v2-Oi for guix-patches@gnu.org; Mon, 20 Sep 2021 18:25:49 -0400 Received: by mail-pl1-x630.google.com with SMTP id a7so3397866plm.1 for ; Mon, 20 Sep 2021 15:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:subject:to:message-id:date:user-agent:mime-version :content-language; bh=thbxJPHfEQ1dJ0W8SVrkY2HYxLO7oMMAN2QuFO0/pb4=; b=qUue2kPBinJjtIS6te7ql56K+GTI8Vk8mQk/eoWo959NaKkCuJKIp2nfoJNsKkd1iu AopOzbVyd6j5ww5d5AQElRxIZT9DTkPsvDrLj6YBIMwgyw0T76fZE1TRIg6lZfW5rMPG aRZ5+VoVHd5mKlx0dMXUPaAsY1DdvZEM0DUJNnX7tCtvhu8xdPMHon/purUcSB210f8p CxiLwjnz00vM02/dhryDs7uKEDNSG6g98CMSZ6X2djMrqd3Msx0+CowJQXhCSKnz3kpg BmnObeqfUx3ocnim+ZA9g2SHnzMlaGLya0s5ge7FiP5mFh1FAC9ujOFkKIj47/gNn/ok MHHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:subject:to:message-id:date:user-agent :mime-version:content-language; bh=thbxJPHfEQ1dJ0W8SVrkY2HYxLO7oMMAN2QuFO0/pb4=; b=UjwwJ6LtLTkpvLeCtmwuKTgWMAuVLZaZ2riWoiz2TEXdoot9PUKX6vJUE81sw2t3IO HYpE8bk7mf/NPISMm6cHp6Vp63Bzb8Kwo7DgcPyboZDQGX7VzVsk56U3nZxdYrklTiD7 WeiN7u4PSSjYtqt+n+vpMYj5RRrAwpNWd0+0i3W5tawogSFxzxbqz9SSdfS1NnTGTBPd yoWo0FA4lhO9FV/RddxT9U7T3jMKrA/+G/W9SQmj4P+GVfvC7fvwoz7HepNgX1on8N/O Q0v9VC58kx00uqaMDGXW5gU9SIV+S8+i/79N3xJWOJHFtlIn9ezEIzdHKhL1PSUz/Jq8 tV6g== X-Gm-Message-State: AOAM532+zn/HqEikG+1/9Iq+qp9ZzgHkMlYU/K2e517TfO7dT2kvvTYH plXwQSKkTnChBZ/Ug6sslu+n4KoweiwFxQ== X-Google-Smtp-Source: ABdhPJzQ1YteXFoZJW/3pLeQDcCHyzCdc91+2rRx6IL/nK6bgAXcs5zsJhSiBV6dOkZtjShySymZCA== X-Received: by 2002:a17:902:bd45:b0:13d:b4d1:eb39 with SMTP id b5-20020a170902bd4500b0013db4d1eb39mr4875375plx.53.1632176744533; Mon, 20 Sep 2021 15:25:44 -0700 (PDT) Received: from [192.168.1.220] ([38.141.58.134]) by smtp.gmail.com with ESMTPSA id c16sm15008872pfo.163.2021.09.20.15.25.43 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Sep 2021 15:25:43 -0700 (PDT) From: Jesse Subject: [PATCH] gnu: web: Add jupyter-service To: guix-patches@gnu.org Message-ID: <565a1b21-aefa-4129-a024-52517fdff9bd@gmail.com> Date: Mon, 20 Sep 2021 16:25:42 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Icedove/78.13.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------7631337CE2523343326C81FE" Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=jgibbons2357@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) This is a multi-part message in MIME format. --------------7631337CE2523343326C81FE Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit The attached patch adds the jupyter service, which automatically starts a jupyter notebook server at startup. It also includes documentation for the Jupyter service. Go ahead, tell me how awful it is. -Jesse --------------7631337CE2523343326C81FE Content-Type: text/plain; charset=UTF-8; name="0001-gnu-web-Add-jupyter-service.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-gnu-web-Add-jupyter-service.patch" RnJvbSBhYjgyZWJlZjk2NjZmNTdjNTMzNDJkMDQyZjIxMzAzYjNiYWJjYjRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZXNzZSA8Z2liMTkwMTRAYnl1aS5lZHU+CkRhdGU6 IE1vbiwgMjAgU2VwIDIwMjEgMTY6MDE6MjIgLTA2MDAKU3ViamVjdDogW1BBVENIXSBnbnU6 IHdlYjogQWRkIGp1cHl0ZXItc2VydmljZQoKKiBnbnUvc2VydmljZXMvd2ViLnNjbSAoZ2l0 aWxlLXNlcnZpY2UtdHlwZSk6IE5ldyB2YXJpYWJsZS4KKiBkb2MvZ3VpeC50ZXhpIChWZXJz aW9uIENvbnRyb2wgU2VydmljZXMpOiBEb2N1bWVudCBpdC4KLS0tCiBkb2MvZ3VpeC50ZXhp ICAgICAgICB8ICA1MiArKysrKysrKysrKysrKysrKysrCiBnbnUvc2VydmljZXMvd2ViLnNj bSB8IDEyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAy IGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL2d1 aXgudGV4aSBiL2RvYy9ndWl4LnRleGkKaW5kZXggNjQzNmU4M2E3Yy4uMGY4YWFjYTQxMyAx MDA2NDQKLS0tIGEvZG9jL2d1aXgudGV4aQorKysgYi9kb2MvZ3VpeC50ZXhpCkBAIC0yNjE5 Nyw2ICsyNjE5Nyw1OCBAQCBUaGUgZmlsZSB3aGljaCBzaG91bGQgc3RvcmUgdGhlIGxvZ2dp bmcgb3V0cHV0IG9mIEFnYXRlLgogQGVuZCB0YWJsZQogQGVuZCBkZWZ0cAogCitAY2luZGV4 IGp1cHl0ZXIKK1RoZSBKdXB5dGVyIE5vdGVib29rIGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRo YXQgYWxsb3dzIHlvdSB0byBjcmVhdGUKK2FuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250 YWluIGxpdmUgY29kZSwgZXF1YXRpb25zLCB2aXN1YWxpemF0aW9ucworYW5kIGV4cGxhbmF0 b3J5IHRleHQuICBVc2VzIGluY2x1ZGU6IGRhdGEgY2xlYW5pbmcgYW5kIHRyYW5zZm9ybWF0 aW9uLAorbnVtZXJpY2FsIHNpbXVsYXRpb24sIHN0YXRpc3RpY2FsIG1vZGVsaW5nLCBtYWNo aW5lIGxlYXJuaW5nIGFuZCBtdWNoCittb3JlLgorCitAZGVmZm4gKFNjaGVtZSBWYXJpYWJs ZSkganVweXRlci1zZXJ2aWNlLXR5cGUKK1RoaXMgaXMgdGhlIHR5cGUgb2YgdGhlIGFnYXRl IHNlcnZpY2UsIHdob3NlIHZhbHVlIHNob3VsZCBiZSBhbgorQGNvZGV7anVweXRlci1zZXJ2 aWNlLXR5cGV9IG9iamVjdCwgYXMgaW4gdGhpcyBleGFtcGxlOgorCitAbGlzcAorKHNlcnZp Y2UganVweXRlci1zZXJ2aWNlLXR5cGUKKyAoanVweXRlci1jb25maWd1cmF0aW9uCisgIChs b2ctZmlsZSAiL3Zhci9sb2cvanVweXRlci5sb2ciKQorICAoc2VydmVyLWNvbmZpZworICAg KGtlcm5lbHMKKyAgICAobGlzdCBqdXB5dGVyLWd1aWxlLWtlcm5lbCkpKSkpCisKK0BlbmQg bGlzcAorCitUaGUgZXhhbXBsZSBhYm92ZSB0ZWxscyB0aGUgdGhlIEp1cHl0ZXIgc2Vydmlj ZSB0byBwcm92aWRlIHRoZQorQGNvZGV7anVweXRlci1ndWlsZS1rZXJuZWx9IGFzIGFuIG9w dGlvbmFsIGtlcm5lbC4KK0BlbmQgZGVmZm4KKworQGRlZnRwIHtEYXRhIFR5cGV9IGp1cHl0 ZXItY29uZmlndXJhdGlvbgorRGF0YSB0eXBlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJh dGlvbiBvZiBBZ2F0ZS4KKworQHRhYmxlIEBhc2lzCitAaXRlbSBAY29kZXtqdXB5dGVyLXBh Y2thZ2V9IChkZWZhdWx0OiBAY29kZXtqdXB5dGVyfSkKK1RoZSBqdXB5dGVyIHBhY2thZ2Ug dG8gdXNlLgorCisKK0BpdGVtIEBjb2Rle2tlcm5lbHN9IChkZWZhdWx0OiBAY29kZXsnKCl9 CitBIGxpc3Qgb2Yga2VybmVsIHBhY2thZ2VzIHRvIHVzZSB3aXRoIHRoZSBqdXB5dGVyIHNl cnZpY2UuCisKK0BpdGVtIEBjb2Rle3Jvb3QtZGlyfSAoZGVmYXVsdDogQGZpbGV7Ii92YXIv bGliL2p1cHl0ZXIvbm90ZWJvb2tzIn0pCitUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBqdXB5 dGVyIHNlcnZlciBsb29rcyBmb3IganVweXRlciBub3RlYm9va3MuCisKK0BpdGVtIEBjb2Rl e2xvZy1maWxlfSAoZGVmYXVsdDogQGNvZGV7I2Z9KQorVGhlIGxvY2F0aW9uIG9mIHRoZSBs b2cgZmlsZS4gSWYgI2YgaXMgZ2l2ZW4sIG5vIGxvZyBpcyBwcm9kdWNlZC4KKworQGl0ZW0g QGNvZGV7c2hlbGx9IChkZWZhdWx0OiBAY29kZXsoZmlsZS1hcHBlbmQgYmFzaCAiL2Jpbi9i YXNoIil9CitUaGUgbG9jYXRpb24gb2YgdGhlIHNoZWxsIHVzZWQgd2hlbiBzdGFydGluZyBh IHdlYiB0ZXJtaW5hbCAoaWYgaXQgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0ZXJtaW5hbHMp LgorCitAaXRlbSBAY29kZXtzZXJ2ZXItY29uZmlnfSAoZGVmYXVsdDogQGNvZGV7I2Z9KQor QSBmaWxlIGNvbnRpYW5pbmcgdGhlIGp1cHl0ZXIgc2VydmVyJ3MgY29uZmlnIGZpbGUuIElm IEBjb2RleyNmfSBpcyBnaXZlbiwgYW4gZW1wdHkgZmlsZSBpcyBwcm9kdWNlZCwgYW5kIHRo ZSBkZWZhdWx0IHNldHRpbmdzIGFyZSB1c2VkLgorCitAZW5kIHRhYmxlCitAZW5kIGRlZnRw CisKKwogQG5vZGUgQ2VydGlmaWNhdGUgU2VydmljZXMKIEBzdWJzZWN0aW9uIENlcnRpZmlj YXRlIFNlcnZpY2VzCiAKZGlmZiAtLWdpdCBhL2dudS9zZXJ2aWNlcy93ZWIuc2NtIGIvZ251 L3NlcnZpY2VzL3dlYi5zY20KaW5kZXggNmEwOTNjZjRlNC4uMmNlYWEyMDg2NCAxMDA2NDQK LS0tIGEvZ251L3NlcnZpY2VzL3dlYi5zY20KKysrIGIvZ251L3NlcnZpY2VzL3dlYi5zY20K QEAgLTE1LDYgKzE1LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBBcnVuIElzYWFjIDxh cnVuaXNhYWNAc3lzdGVtcmVib290Lm5ldD4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBPbGVn IFB5a2hhbG92IDxnby53aWd1c3RAZ21haWwuY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIw LCAyMDIxIEFsZXhhbmRydS1TZXJnaXUgTWFydG9uIDxicm93bjEyMTQwN0Bwb3N0ZW8ucm8+ Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjAsIDIwMjEgSmVzc2UgR2liYm9ucyA8amdpYmJvbnMy MzU3K2d1aXhAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEd1aXguCiA7OzsKQEAgLTQxLDExICs0MiwxMyBAQAogICAjOnVzZS1tb2R1bGUgKGdudSBz eXN0ZW0gc2hhZG93KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhZG1pbikKICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgYmFzZSkKKyAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgYmFzaCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZGF0YWJhc2Vz KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB3ZWIpCiAgICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIHBhdGNodXRpbHMpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2Vz IHBocCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uKQorICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBweXRob24teHl6KQogICAjOnVzZS1tb2R1bGUgKGdudSBw YWNrYWdlcyBnbnVwZykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ3VpbGUpCiAg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGxvZ2dpbmcpCkBAIC05MSw2ICs5NCw4IEBA CiAKICAgICAgICAgICAgIGh0dHBkLXNlcnZpY2UtdHlwZQogCisgICAgICAgICAgICBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24KKwogICAgICAgICAgICAgbmdpbngtY29uZmlndXJhdGlvbgog ICAgICAgICAgICAgbmdpbngtY29uZmlndXJhdGlvbj8KICAgICAgICAgICAgIG5naW54LWNv bmZpZ3VyYXRpb24tbmdpbngKQEAgLTE5OTQsMyArMTk5OSwxMTggQEAgcm9vdD0vc3J2L2dl bWluaQogICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBzaGVwaGVyZC1yb290LXNlcnZp Y2UtdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2F0ZS1zaGVwaGVyZC1z ZXJ2aWNlKSkpCiAgICAoZGVmYXVsdC12YWx1ZSAoYWdhdGUtY29uZmlndXJhdGlvbikpKSkK KworCis7OzsgSnVweXRlciBjb25maWd1cmF0aW9uCis7OzsgSnVweXRlciBzZXJ2ZXIgY29u ZmlndXJhdGlvbgorOzs7IC0+IGluY2x1ZGVzIGEgbGlzdCBvZiBrZXJuZWxzIHRvIGFsbG93 IGluIHRoZSBqdXB5dGVyIHNlcnZlcgorOzs7IC0+IGluY2x1ZGVzIGEgbGlzdCBvZiBjb25m aWd1cmF0aW9uIG9wdGlvbnMgc3BlY2lmaWNhbGx5IGZvciB0aGUganVweXRlciBzZXJ2ZXIK Kzs7OyAtLT4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgY29uY2F0ZW5hdGVkIHRvIGEgcHl0aG9u IGZpbGUKKzs7OyAtLT4gTmVzdGVkIGFsaXN0Cis7OzsgLS0tPiAnKChOb3RlYm9va0FwcCAo YWxsb3ctcmVtb3RlLWFjY2VzcyAjdCkpKSAtPiAiYy5Ob3RlYm9va0FwcC5hbGxvd19yZW1v dGVfYWNjZXNzID0gVHJ1ZSIKKzs7OyAtPiBJbmNsdWRlIHNvbWUgc2V0dGluZ3Mgc3BlY2lm eWluZyBob3cgdG8gcnVuIHRoZSBkYWVtb24KKzs7OyAtLT4gbG9jYXRpb24gb2YgbG9nIGZp bGUKKzs7OyAtLT4gSWYgYSBjb25zb2xlIHNob3VsZCBiZSBhbGxvd2VkLCB0aGUgbG9jYXRp b24gb2YgdGhlIHNoZWxsIHRvIGJlIHVzZWQuCis7OzsgLS0+IFRoZSBwYWNrYWdlIGNvbnRh aW5pbmcgdGhlIGp1cHl0ZXIgc2VydmVyIGl0c2VsZiwgZGVmYXVsdCBqdXB5dGVyCisoZGVm aW5lLXB1YmxpYyBkZWZhdWx0LWp1cHl0ZXItY29uZmlnICIjIikKKworKGRlZmluZS1yZWNv cmQtdHlwZSogPGp1cHl0ZXItY29uZmlndXJhdGlvbj4ganVweXRlci1jb25maWd1cmF0aW9u CisgICAgICAgICAgICAgICAgICAgICB0aGlzLWp1cHl0ZXItY29uZmlndXJhdGlvbiBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24/CisgICAgICAgICAgICAgICAgICAgICAoanVweXRlci1wYWNr YWdlIGp1cHl0ZXItY29uZmlndXJhdGlvbi1qdXB5dGVyLXBhY2thZ2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQganVweXRlcikpCisgICAgICAg ICAgICAgICAgICAgICAoa2VybmVscyBqdXB5dGVyLWNvbmZpZ3VyYXRpb24ta2VybmVscwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgJygpKSkKKyAgICAgICAg ICAgICAgICAgICAgIChyb290LWRpciBqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9vdC1kaXIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAiL3Zhci9saWIvanVw eXRlci9ub3RlYm9va3MiKSkKKyAgICAgICAgICAgICAgICAgICAgIChsb2ctZmlsZSBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24tbG9nLWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZGVmYXVsdCAjZikpCisgICAgICAgICAgICAgICAgICAgICAoc2hlbGwganVweXRl ci1jb25maWd1cmF0aW9uLXNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRl ZmF1bHQgKGZpbGUtYXBwZW5kIGJhc2ggIi9iaW4vYmFzaCIpKSkKKyAgICAgICAgICAgICAg ICAgICAgIChzZXJ2ZXItY29uZmlnIGp1cHl0ZXItY29uZmlndXJhdGlvbi1zZXJ2ZXItY29u ZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAjZikp KTsgVE9ETzogTWFrZSBjb25maWd1cmF0aW9uIERTTC4KKworCisoZGVmaW5lIChzZWFyY2gt cGF0aC1zdHJpbmcgc2VhcmNoLXBhdGgtcGFpcikKKyAgKHN0cmluZy1hcHBlbmQgKHNlYXJj aC1wYXRoLXNwZWNpZmljYXRpb24tdmFyaWFibGUgKGNhciBzZWFyY2gtcGF0aC1wYWlyKSkK KyAgICAgICAgICAgICAgICAgIj0iCisgICAgICAgICAgICAgICAgIChjZHIgc2VhcmNoLXBh dGgtcGFpcikpKQorCis7OztUT0RPOiBBZGQgYWN0aW9ucyB0byBsaXN0IGp1cHl0ZXIgc2Vy dmVycywgY2hhbmdlIHBhc3N3b3JkcywgZXRjLgorKGRlZmluZSAoanVweXRlci1zaGVwaGVy ZC1zZXJ2aWNlIGNvbmZpZykKKyAgKGxpc3QgKHNoZXBoZXJkLXNlcnZpY2UKKyAgICAgICAg ICAocHJvdmlzaW9uICcoanVweXRlcikpIDtUT0RPOiBBZGQgbWFnaWMgdG8gYWxsb3cgbXVs dGlwbGUgSnVweXRlciBzZXJ2ZXJzCisgICAgICAgICAgKHJlcXVpcmVtZW50ICcobG9vcGJh Y2spKQorICAgICAgICAgIChzdGFydCAjfihtYWtlLWZvcmtleGVjLWNvbnN0cnVjdG9yCisg ICAgICAgICAgICAgICAgICAgICAobGlzdCAiL3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxl L2Jpbi9qdXB5dGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdGVib29rIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tY29uZmlnPSIK KyAgICAgICAgICAgICAgICAgICAgICMkKG9yIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tc2Vy dmVyLWNvbmZpZyBjb25maWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhaW4t ZmlsZSAianVweXRlcl9ub3RlYm9va19jb25maWcucHkiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LWp1cHl0ZXItY29uZmlnKSkKKyAgICAgICAg ICAgICAgICAgICAgICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpciBjb25maWcp KQorICAgICAgICAgICAgICAgICAgICAgIzp1c2VyICJqdXB5dGVyIgorICAgICAgICAgICAg ICAgICAgICAgIzpncm91cCAianVweXRlciIKKyAgICAgICAgICAgICAgICAgICAgICM6ZW52 aXJvbm1lbnQtdmFyaWFibGVzIDsgVE9ETyB1c2Ugc2VhcmNoLXBhdGhzIG1hZ2ljIGluc3Rl YWQgb2YgaGFyZC1jb2RpbmcgdGhlc2UgdGhpbmdzLgorICAgICAgICAgICAgICAgICAgICAg KGxpc3QgIkdJX1RZUEVMSUJfUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvbGli L2dpcmVwb3NpdG9yeS0xLjAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1VJTEVf TE9BRF9DT01QSUxFRF9QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9saWIvZ3Vp bGUvMy4wL3NpdGUtY2NhY2hlOi9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9n dWlsZS9zaXRlLzMuMCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJHVUlMRV9MT0FE X1BBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3NoYXJlL2d1aWxlL3NpdGUvMy4w IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhPTUU9L3Zhci9saWIvanVweXRlciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJKVVBZVEVSX1BBVEg9L3J1bi9jdXJyZW50 LXN5c3RlbS9wcm9maWxlL3NoYXJlL2p1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAiUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvYmluOi9ydW4vY3VycmVu dC1zeXN0ZW0vcHJvZmlsZS9zYmluIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBZ VEhPTlBBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSX0xJQlNfU0lURT0v cnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2l0ZS1saWJyYXJ5LyIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICJURVhNRj0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hh cmUvdGV4bWYtZGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJURVhNRkNORj0v cnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvL3NoYXJlL3RleG1mLWRpc3Qvd2ViMmMiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAiWERHX0RBVEFfRElSUz0vcnVuL2N1cnJlbnQt c3lzdGVtL3Byb2ZpbGUvc2hhcmUiKQorCisgICAgICAgICAgICAgICAgICAgICAjOmRpcmVj dG9yeSAjJChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9vdC1kaXIgY29uZmlnKQorICAgICAg ICAgICAgICAgICAgICAgIzpsb2ctZmlsZSAjJChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tbG9n LWZpbGUgY29uZmlnKSkpCisgICAgICAgICAgKHN0b3AgI34obWFrZS1raWxsLWRlc3RydWN0 b3IpKQorICAgICAgICAgIChkb2N1bWVudGF0aW9uICJSdW5zIGEgSnVweXRlciBOb3RlYm9v ayBzZXJ2ZXIuIEEgSnVweXRlciBOb3RlYm9vayBpcyBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0 IGFsbG93cyB5b3UgdG8gY3JlYXRlIGFuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250YWlu IGxpdmUgY29kZSwgZXF1YXRpb25zLCB2aXN1YWxpemF0aW9ucywgYW5kIGV4cGxhbmF0b3J5 IHRleHQuIikpKSkKKworKGRlZmluZSAoanVweXRlci1hY2NvdW50IGNvbmZpZykKKyAgKGxp c3QKKyAgICAodXNlci1hY2NvdW50CisgICAgICAobmFtZSAianVweXRlciIpCisgICAgICAo Z3JvdXAgImp1cHl0ZXIiKQorICAgICAgKGNvbW1lbnQgIkp1cHl0ZXIgTm90ZWJvb2sgU2Vy dmVyIikKKyAgICAgIChob21lLWRpcmVjdG9yeSAiL3Zhci9saWIvanVweXRlciIpCisgICAg ICAoc2hlbGwgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1zaGVsbCBjb25maWcpKQorICAgICAg KHN5c3RlbT8gI3QpKQorICAgICh1c2VyLWdyb3VwCisgICAgICAobmFtZSAianVweXRlciIp CisgICAgICAoc3lzdGVtPyAjdCkpKSkKKworKGRlZmluZSAoanVweXRlci1wcm9maWxlIGNv bmZpZykKKyAgKGNvbnMqCisgICAgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1qdXB5dGVyLXBh Y2thZ2UgY29uZmlnKQorICAgIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24ta2VybmVscyBjb25m aWcpKSkKKworKGRlZmluZSAoanVweXRlci1hY3RpdmF0aW9uIGNvbmZpZykKKyAgI34oYmVn aW4KKyAgICAgIChsZXQgKChyb290LWRpciAjJChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9v dC1kaXIgY29uZmlnKSkKKyAgICAgICAgICAgIChwdyAoZ2V0cHduYW0gImp1cHl0ZXIiKSkp CisgICAgICAgICh1bmxlc3MgKGZpbGUtZXhpc3RzPyByb290LWRpcikKKyAgICAgICAgICAo bWtkaXIgcm9vdC1kaXIpCisgICAgICAgICAgKGNob3duIHJvb3QtZGlyIChwYXNzd2Q6dWlk IHB3KQorICAgICAgICAgICAgICAgICAocGFzc3dkOmdpZCBwdykpCisgICAgICAgICAgKGNo bW9kIHJvb3QtZGlyICNvNzAwKSkpKSkKKworOzs7IEp1cHl0ZXIgc2VydmljZSB0eXBlCis7 OzsgLT4gSW5mb3JtYXRpb24gdml0YWwgdG8gc2V0dGlubmcgdXAgdGhlIHNlcnZlciwgbGlr ZSB0aGUgcG9ydCBhbmQgYWNjZXB0ZWQgcGFyYW1ldGVycworOzs7IC0+IGxpc3Qgb2Yga2Vy bmVscyBjb25zaWRlcmVkIHBlcm1pc3NpYmxlLgorOzs7IC0+IGEgc2hlcGhlcmQgc2Vydmlj ZSBleHRlbnNpb24gdGhhdCBydW5zIHRoZSBqdXB5dGVyIHNlcnZlcgorOzs7IC0tPiBzaGVw aGVyZCBzZXJ2aWNlIHRvIGxpc3QgdGhlIHJ1bm5pbmcgc2VydmVycywgc2V0IHRoZSBwYXNz d29yZCwgZXRjLgorOzs7IC0tPiBNYWtlIGEgbG9nIGZpbGUgb25seSByZWFkYWJsZSBieSBy b290PworOzs7IC0+IGFuIGFjY291bnRzIHNlcnZpY2UgZXh0ZW5zaW9uIGRlc2NyaWJpbmcg dGhlIHVzZXIgdGhhdCBydW5zIHRoZSBhY2NvdW50cworOzs7IC0tPiBncm91cCAianVweXRl ciIKKyhkZWZpbmUtcHVibGljIGp1cHl0ZXItc2VydmljZS10eXBlCisgIChzZXJ2aWNlLXR5 cGUKKyAgICAobmFtZSAianVweXRlciIpCisgICAgKGV4dGVuc2lvbnMgKGxpc3QKKyAgICAg ICAgICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBzaGVwaGVyZC1yb290LXNlcnZpY2Ut dHlwZSBqdXB5dGVyLXNoZXBoZXJkLXNlcnZpY2UpCisgICAgICAgICAgICAgICAgICAoc2Vy dmljZS1leHRlbnNpb24gYWNjb3VudC1zZXJ2aWNlLXR5cGUganVweXRlci1hY2NvdW50KQor ICAgICAgICAgICAgICAgICAgKHNlcnZpY2UtZXh0ZW5zaW9uIGFjdGl2YXRpb24tc2Vydmlj ZS10eXBlIGp1cHl0ZXItYWN0aXZhdGlvbikKKyAgICAgICAgICAgICAgICAgIChzZXJ2aWNl LWV4dGVuc2lvbiBwcm9maWxlLXNlcnZpY2UtdHlwZSBqdXB5dGVyLXByb2ZpbGUpKSkKKyAg ICAoZGVzY3JpcHRpb24gIlJ1bnMgYSBKdXB5dGVyIE5vdGVib29rIHNlcnZlci4gQSBKdXB5 dGVyIE5vdGVib29rIGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRoYXQgYWxsb3dzIHlvdSB0byBj cmVhdGUgYW5kIHNoYXJlIGRvY3VtZW50cyB0aGF0IGNvbnRhaW4gbGl2ZSBjb2RlLCBlcXVh dGlvbnMsIHZpc3VhbGl6YXRpb25zLCBhbmQgZXhwbGFuYXRvcnkgdGV4dC4iKQorICAgIChk ZWZhdWx0LXZhbHVlIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24pKSkpCi0tIAoyLjMzLjAKCg== --------------7631337CE2523343326C81FE-- From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 21 21:26:23 2021 Received: (at 50708) by debbugs.gnu.org; 22 Sep 2021 01:26:23 +0000 Received: from localhost ([127.0.0.1]:48342 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSr1i-0006EB-Hs for submit@debbugs.gnu.org; Tue, 21 Sep 2021 21:26:23 -0400 Received: from mail-pg1-f181.google.com ([209.85.215.181]:40742) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mSr1g-0006Du-5C for 50708@debbugs.gnu.org; Tue, 21 Sep 2021 21:26:21 -0400 Received: by mail-pg1-f181.google.com with SMTP id h3so934002pgb.7 for <50708@debbugs.gnu.org>; Tue, 21 Sep 2021 18:26:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=rQ1PPxS5OUC/HpH6UFCLhJSMUtYbyS5RgTY1MRsj864=; b=R3sCI4Ju6fAej3rS1lKTC+IG7M+BoCVXXMvgd60sqD8YJWfSxYUP1X8x3+MzMp0DZ6 rfJ8sdz+E1ZIvluPK4inNRHndTCAQPLCb968dyshTLCRa9A3FCqKBV3XMoqBSxCNXJS1 NOVZEUPWyPp69rmRHUULJpabRlWnhMJtltB52v1NzWrkrCg+AVp+TbqMSWoPeMxqmR+E do6OtKOEzRl9v8WxMN+GiTO+wUOex98CjzYh7uNE5YPEUceHqFFqjSXWpOzjLBdRB8wS 0qGv0Do1Ip9GYxwv9GhbY2beXjh1QuThXjsRoFhrXLhjb8fvZSS2H/XtEA9cYreoHYsN 6J8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=rQ1PPxS5OUC/HpH6UFCLhJSMUtYbyS5RgTY1MRsj864=; b=wseXOdWkD/DloEgKbg5vSP+KCJBQdeCH7cpKqDqzpaOOuqnnsh0BVxBAPagM2zmvtQ Q0qmFYGEQIsIxNSBFEeEzBYxnP8RdZ2pSBbqf4FrQ1+qnUoQoDF5NtvAxv/h5v4sBZ31 ZxPEmgitfogp5kgjVALsTltokTFyjtm6f48e1mrHC+By4xvY/G344mKHpia/UgkWzDB+ rMYan05xb63XAPfLU18lZUG9MEOjrQzisnAztxVY3IpyirVOkLWmnz5ox0RvilAJSRnq 69g0pUBxQhQvcMknxhZ0l3vz7JMW6ToF2WibCkAPnC9tOM2pW5lJblL8iPKHalYTZW/h Nzvw== X-Gm-Message-State: AOAM533GEF8pFiasAnfTolpx0/IUuQ/g+YQ6/EZCRC+Z17DFq4C3TXol 1M9EWSKrCdBNwL6gYbYoshvOJsp0nNjpTg== X-Google-Smtp-Source: ABdhPJwiZ+xWP5DZPvSKbb3HsUMMgg+Qfv4v+36y4gKMTFwG0A+vPbd4v8UO16qGnGdmKIn8oHoCFQ== X-Received: by 2002:a63:9315:: with SMTP id b21mr1497781pge.306.1632273973923; Tue, 21 Sep 2021 18:26:13 -0700 (PDT) Received: from [192.168.1.220] ([38.141.58.134]) by smtp.gmail.com with ESMTPSA id e11sm309605pfv.201.2021.09.21.18.26.12 for <50708@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Sep 2021 18:26:13 -0700 (PDT) Subject: Re: bug#50708: [PATCH] gnu: web: Add jupyter-service To: 50708@debbugs.gnu.org References: <565a1b21-aefa-4129-a024-52517fdff9bd@gmail.com> From: Jesse Message-ID: <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> Date: Tue, 21 Sep 2021 19:26:11 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Icedove/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------4F2AC2B75EAD022189026895" Content-Language: en-US X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 50708 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) This is a multi-part message in MIME format. --------------4F2AC2B75EAD022189026895 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached is an updated patch. --------------4F2AC2B75EAD022189026895 Content-Type: text/plain; charset=UTF-8; name="0001-gnu-web-Add-jupyter-service.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-gnu-web-Add-jupyter-service.patch" RnJvbSBkMjY0ZGEwODExNDgwYThkMmFjZDVlNzNmNThkMzIwZTE1YmZhOWYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZXNzZSA8Z2liMTkwMTRAYnl1aS5lZHU+CkRhdGU6 IE1vbiwgMjAgU2VwIDIwMjEgMTY6MDE6MjIgLTA2MDAKU3ViamVjdDogW1BBVENIXSBnbnU6 IHdlYjogQWRkIGp1cHl0ZXItc2VydmljZQoKKiBnbnUvc2VydmljZXMvd2ViLnNjbSAoZ2l0 aWxlLXNlcnZpY2UtdHlwZSk6IE5ldyB2YXJpYWJsZS4KKiBkb2MvZ3VpeC50ZXhpIChWZXJz aW9uIENvbnRyb2wgU2VydmljZXMpOiBEb2N1bWVudCBpdC4KLS0tCiBkb2MvZ3VpeC50ZXhp ICAgICAgICB8ICA1MiArKysrKysrKysrKysrKysrKysrCiBnbnUvc2VydmljZXMvd2ViLnNj bSB8IDEyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAy IGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL2d1 aXgudGV4aSBiL2RvYy9ndWl4LnRleGkKaW5kZXggNjQzNmU4M2E3Yy4uMGY4YWFjYTQxMyAx MDA2NDQKLS0tIGEvZG9jL2d1aXgudGV4aQorKysgYi9kb2MvZ3VpeC50ZXhpCkBAIC0yNjE5 Nyw2ICsyNjE5Nyw1OCBAQCBUaGUgZmlsZSB3aGljaCBzaG91bGQgc3RvcmUgdGhlIGxvZ2dp bmcgb3V0cHV0IG9mIEFnYXRlLgogQGVuZCB0YWJsZQogQGVuZCBkZWZ0cAogCitAY2luZGV4 IGp1cHl0ZXIKK1RoZSBKdXB5dGVyIE5vdGVib29rIGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRo YXQgYWxsb3dzIHlvdSB0byBjcmVhdGUKK2FuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250 YWluIGxpdmUgY29kZSwgZXF1YXRpb25zLCB2aXN1YWxpemF0aW9ucworYW5kIGV4cGxhbmF0 b3J5IHRleHQuICBVc2VzIGluY2x1ZGU6IGRhdGEgY2xlYW5pbmcgYW5kIHRyYW5zZm9ybWF0 aW9uLAorbnVtZXJpY2FsIHNpbXVsYXRpb24sIHN0YXRpc3RpY2FsIG1vZGVsaW5nLCBtYWNo aW5lIGxlYXJuaW5nIGFuZCBtdWNoCittb3JlLgorCitAZGVmZm4gKFNjaGVtZSBWYXJpYWJs ZSkganVweXRlci1zZXJ2aWNlLXR5cGUKK1RoaXMgaXMgdGhlIHR5cGUgb2YgdGhlIGFnYXRl IHNlcnZpY2UsIHdob3NlIHZhbHVlIHNob3VsZCBiZSBhbgorQGNvZGV7anVweXRlci1zZXJ2 aWNlLXR5cGV9IG9iamVjdCwgYXMgaW4gdGhpcyBleGFtcGxlOgorCitAbGlzcAorKHNlcnZp Y2UganVweXRlci1zZXJ2aWNlLXR5cGUKKyAoanVweXRlci1jb25maWd1cmF0aW9uCisgIChs b2ctZmlsZSAiL3Zhci9sb2cvanVweXRlci5sb2ciKQorICAoc2VydmVyLWNvbmZpZworICAg KGtlcm5lbHMKKyAgICAobGlzdCBqdXB5dGVyLWd1aWxlLWtlcm5lbCkpKSkpCisKK0BlbmQg bGlzcAorCitUaGUgZXhhbXBsZSBhYm92ZSB0ZWxscyB0aGUgdGhlIEp1cHl0ZXIgc2Vydmlj ZSB0byBwcm92aWRlIHRoZQorQGNvZGV7anVweXRlci1ndWlsZS1rZXJuZWx9IGFzIGFuIG9w dGlvbmFsIGtlcm5lbC4KK0BlbmQgZGVmZm4KKworQGRlZnRwIHtEYXRhIFR5cGV9IGp1cHl0 ZXItY29uZmlndXJhdGlvbgorRGF0YSB0eXBlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJh dGlvbiBvZiBBZ2F0ZS4KKworQHRhYmxlIEBhc2lzCitAaXRlbSBAY29kZXtqdXB5dGVyLXBh Y2thZ2V9IChkZWZhdWx0OiBAY29kZXtqdXB5dGVyfSkKK1RoZSBqdXB5dGVyIHBhY2thZ2Ug dG8gdXNlLgorCisKK0BpdGVtIEBjb2Rle2tlcm5lbHN9IChkZWZhdWx0OiBAY29kZXsnKCl9 CitBIGxpc3Qgb2Yga2VybmVsIHBhY2thZ2VzIHRvIHVzZSB3aXRoIHRoZSBqdXB5dGVyIHNl cnZpY2UuCisKK0BpdGVtIEBjb2Rle3Jvb3QtZGlyfSAoZGVmYXVsdDogQGZpbGV7Ii92YXIv bGliL2p1cHl0ZXIvbm90ZWJvb2tzIn0pCitUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBqdXB5 dGVyIHNlcnZlciBsb29rcyBmb3IganVweXRlciBub3RlYm9va3MuCisKK0BpdGVtIEBjb2Rl e2xvZy1maWxlfSAoZGVmYXVsdDogQGNvZGV7I2Z9KQorVGhlIGxvY2F0aW9uIG9mIHRoZSBs b2cgZmlsZS4gSWYgI2YgaXMgZ2l2ZW4sIG5vIGxvZyBpcyBwcm9kdWNlZC4KKworQGl0ZW0g QGNvZGV7c2hlbGx9IChkZWZhdWx0OiBAY29kZXsoZmlsZS1hcHBlbmQgYmFzaCAiL2Jpbi9i YXNoIil9CitUaGUgbG9jYXRpb24gb2YgdGhlIHNoZWxsIHVzZWQgd2hlbiBzdGFydGluZyBh IHdlYiB0ZXJtaW5hbCAoaWYgaXQgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0ZXJtaW5hbHMp LgorCitAaXRlbSBAY29kZXtzZXJ2ZXItY29uZmlnfSAoZGVmYXVsdDogQGNvZGV7I2Z9KQor QSBmaWxlIGNvbnRpYW5pbmcgdGhlIGp1cHl0ZXIgc2VydmVyJ3MgY29uZmlnIGZpbGUuIElm IEBjb2RleyNmfSBpcyBnaXZlbiwgYW4gZW1wdHkgZmlsZSBpcyBwcm9kdWNlZCwgYW5kIHRo ZSBkZWZhdWx0IHNldHRpbmdzIGFyZSB1c2VkLgorCitAZW5kIHRhYmxlCitAZW5kIGRlZnRw CisKKwogQG5vZGUgQ2VydGlmaWNhdGUgU2VydmljZXMKIEBzdWJzZWN0aW9uIENlcnRpZmlj YXRlIFNlcnZpY2VzCiAKZGlmZiAtLWdpdCBhL2dudS9zZXJ2aWNlcy93ZWIuc2NtIGIvZ251 L3NlcnZpY2VzL3dlYi5zY20KaW5kZXggNmEwOTNjZjRlNC4uMmQyOTQ2ZjdhNyAxMDA2NDQK LS0tIGEvZ251L3NlcnZpY2VzL3dlYi5zY20KKysrIGIvZ251L3NlcnZpY2VzL3dlYi5zY20K QEAgLTE1LDYgKzE1LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBBcnVuIElzYWFjIDxh cnVuaXNhYWNAc3lzdGVtcmVib290Lm5ldD4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBPbGVn IFB5a2hhbG92IDxnby53aWd1c3RAZ21haWwuY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIw LCAyMDIxIEFsZXhhbmRydS1TZXJnaXUgTWFydG9uIDxicm93bjEyMTQwN0Bwb3N0ZW8ucm8+ Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjAsIDIwMjEgSmVzc2UgR2liYm9ucyA8amdpYmJvbnMy MzU3K2d1aXhAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEd1aXguCiA7OzsKQEAgLTQxLDExICs0MiwxMyBAQAogICAjOnVzZS1tb2R1bGUgKGdudSBz eXN0ZW0gc2hhZG93KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhZG1pbikKICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgYmFzZSkKKyAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgYmFzaCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZGF0YWJhc2Vz KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB3ZWIpCiAgICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIHBhdGNodXRpbHMpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2Vz IHBocCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uKQorICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBweXRob24teHl6KQogICAjOnVzZS1tb2R1bGUgKGdudSBw YWNrYWdlcyBnbnVwZykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ3VpbGUpCiAg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGxvZ2dpbmcpCkBAIC05MSw2ICs5NCw4IEBA CiAKICAgICAgICAgICAgIGh0dHBkLXNlcnZpY2UtdHlwZQogCisgICAgICAgICAgICBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24KKwogICAgICAgICAgICAgbmdpbngtY29uZmlndXJhdGlvbgog ICAgICAgICAgICAgbmdpbngtY29uZmlndXJhdGlvbj8KICAgICAgICAgICAgIG5naW54LWNv bmZpZ3VyYXRpb24tbmdpbngKQEAgLTE5OTQsMyArMTk5OSwxMTggQEAgcm9vdD0vc3J2L2dl bWluaQogICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBzaGVwaGVyZC1yb290LXNlcnZp Y2UtdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2F0ZS1zaGVwaGVyZC1z ZXJ2aWNlKSkpCiAgICAoZGVmYXVsdC12YWx1ZSAoYWdhdGUtY29uZmlndXJhdGlvbikpKSkK KworCis7OzsgSnVweXRlciBjb25maWd1cmF0aW9uCis7OzsgSnVweXRlciBzZXJ2ZXIgY29u ZmlndXJhdGlvbgorOzs7IC0+IGluY2x1ZGVzIGEgbGlzdCBvZiBrZXJuZWxzIHRvIGFsbG93 IGluIHRoZSBqdXB5dGVyIHNlcnZlcgorOzs7IC0+IGluY2x1ZGVzIGEgbGlzdCBvZiBjb25m aWd1cmF0aW9uIG9wdGlvbnMgc3BlY2lmaWNhbGx5IGZvciB0aGUganVweXRlciBzZXJ2ZXIK Kzs7OyAtLT4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgY29uY2F0ZW5hdGVkIHRvIGEgcHl0aG9u IGZpbGUKKzs7OyAtLT4gTmVzdGVkIGFsaXN0Cis7OzsgLS0tPiAnKChOb3RlYm9va0FwcCAo YWxsb3ctcmVtb3RlLWFjY2VzcyAjdCkpKSAtPiAiYy5Ob3RlYm9va0FwcC5hbGxvd19yZW1v dGVfYWNjZXNzID0gVHJ1ZSIKKzs7OyAtPiBJbmNsdWRlIHNvbWUgc2V0dGluZ3Mgc3BlY2lm eWluZyBob3cgdG8gcnVuIHRoZSBkYWVtb24KKzs7OyAtLT4gbG9jYXRpb24gb2YgbG9nIGZp bGUKKzs7OyAtLT4gSWYgYSBjb25zb2xlIHNob3VsZCBiZSBhbGxvd2VkLCB0aGUgbG9jYXRp b24gb2YgdGhlIHNoZWxsIHRvIGJlIHVzZWQuCis7OzsgLS0+IFRoZSBwYWNrYWdlIGNvbnRh aW5pbmcgdGhlIGp1cHl0ZXIgc2VydmVyIGl0c2VsZiwgZGVmYXVsdCBqdXB5dGVyCisoZGVm aW5lLXB1YmxpYyBkZWZhdWx0LWp1cHl0ZXItY29uZmlnICIjIikKKworKGRlZmluZS1yZWNv cmQtdHlwZSogPGp1cHl0ZXItY29uZmlndXJhdGlvbj4ganVweXRlci1jb25maWd1cmF0aW9u CisgICAgICAgICAgICAgICAgICAgICB0aGlzLWp1cHl0ZXItY29uZmlndXJhdGlvbiBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24/CisgICAgICAgICAgICAgICAgICAgICAoanVweXRlci1wYWNr YWdlIGp1cHl0ZXItY29uZmlndXJhdGlvbi1qdXB5dGVyLXBhY2thZ2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQganVweXRlcikpCisgICAgICAg ICAgICAgICAgICAgICAoa2VybmVscyBqdXB5dGVyLWNvbmZpZ3VyYXRpb24ta2VybmVscwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgJygpKSkKKyAgICAgICAg ICAgICAgICAgICAgIChyb290LWRpciBqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9vdC1kaXIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAiL3Zhci9saWIvanVw eXRlci9ub3RlYm9va3MiKSkKKyAgICAgICAgICAgICAgICAgICAgIChsb2ctZmlsZSBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24tbG9nLWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZGVmYXVsdCAjZikpCisgICAgICAgICAgICAgICAgICAgICAoc2hlbGwganVweXRl ci1jb25maWd1cmF0aW9uLXNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRl ZmF1bHQgKGZpbGUtYXBwZW5kIGJhc2ggIi9iaW4vYmFzaCIpKSkKKyAgICAgICAgICAgICAg ICAgICAgIChzZXJ2ZXItY29uZmlnIGp1cHl0ZXItY29uZmlndXJhdGlvbi1zZXJ2ZXItY29u ZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAjZikp KTsgVE9ETzogTWFrZSBjb25maWd1cmF0aW9uIERTTC4KKworCisoZGVmaW5lIChzZWFyY2gt cGF0aC1zdHJpbmcgc2VhcmNoLXBhdGgtcGFpcikKKyAgKHN0cmluZy1hcHBlbmQgKHNlYXJj aC1wYXRoLXNwZWNpZmljYXRpb24tdmFyaWFibGUgKGNhciBzZWFyY2gtcGF0aC1wYWlyKSkK KyAgICAgICAgICAgICAgICAgIj0iCisgICAgICAgICAgICAgICAgIChjZHIgc2VhcmNoLXBh dGgtcGFpcikpKQorCis7OztUT0RPOiBBZGQgYWN0aW9ucyB0byBsaXN0IGp1cHl0ZXIgc2Vy dmVycywgY2hhbmdlIHBhc3N3b3JkcywgZXRjLgorKGRlZmluZSAoanVweXRlci1zaGVwaGVy ZC1zZXJ2aWNlIGNvbmZpZykKKyAgKGxpc3QgKHNoZXBoZXJkLXNlcnZpY2UKKyAgICAgICAg ICAocHJvdmlzaW9uICcoanVweXRlcikpIDtUT0RPOiBBZGQgbWFnaWMgdG8gYWxsb3cgbXVs dGlwbGUgSnVweXRlciBzZXJ2ZXJzCisgICAgICAgICAgKHJlcXVpcmVtZW50ICcobG9vcGJh Y2spKQorICAgICAgICAgIChzdGFydCAjfihtYWtlLWZvcmtleGVjLWNvbnN0cnVjdG9yCisg ICAgICAgICAgICAgICAgICAgICAobGlzdCAiL3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxl L2Jpbi9qdXB5dGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdGVib29rIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tY29uZmlnPSIK KyAgICAgICAgICAgICAgICAgICAgICMkKG9yIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tc2Vy dmVyLWNvbmZpZyBjb25maWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhaW4t ZmlsZSAianVweXRlcl9ub3RlYm9va19jb25maWcucHkiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LWp1cHl0ZXItY29uZmlnKSkKKyAgICAgICAg ICAgICAgICAgICAgICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpciBjb25maWcp KSkKKyAgICAgICAgICAgICAgICAgICAgICM6dXNlciAianVweXRlciIKKyAgICAgICAgICAg ICAgICAgICAgICM6Z3JvdXAgImp1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAjOmVu dmlyb25tZW50LXZhcmlhYmxlcyA7IFRPRE8gdXNlIHNlYXJjaC1wYXRocyBtYWdpYyBpbnN0 ZWFkIG9mIGhhcmQtY29kaW5nIHRoZXNlIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAgICAg IChsaXN0ICJHSV9UWVBFTElCX1BBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2xp Yi9naXJlcG9zaXRvcnktMS4wIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdVSUxF X0xPQURfQ09NUElMRURfUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvbGliL2d1 aWxlLzMuMC9zaXRlLWNjYWNoZTovcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hhcmUv Z3VpbGUvc2l0ZS8zLjAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1VJTEVfTE9B RF9QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9ndWlsZS9zaXRlLzMu MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJIT01FPS92YXIvbGliL2p1cHl0ZXIi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSlVQWVRFUl9QQVRIPS9ydW4vY3VycmVu dC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9qdXB5dGVyIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlBBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2JpbjovcnVuL2N1cnJl bnQtc3lzdGVtL3Byb2ZpbGUvc2JpbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJQ WVRIT05QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiUl9MSUJTX1NJVEU9 L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3NpdGUtbGlicmFyeS8iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAiVEVYTUY9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3No YXJlL3RleG1mLWRpc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEVYTUZDTkY9 L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlLy9zaGFyZS90ZXhtZi1kaXN0L3dlYjJjIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlhER19EQVRBX0RJUlM9L3J1bi9jdXJyZW50 LXN5c3RlbS9wcm9maWxlL3NoYXJlIikKKworICAgICAgICAgICAgICAgICAgICAgIzpkaXJl Y3RvcnkgIyQoanVweXRlci1jb25maWd1cmF0aW9uLXJvb3QtZGlyIGNvbmZpZykKKyAgICAg ICAgICAgICAgICAgICAgICM6bG9nLWZpbGUgIyQoanVweXRlci1jb25maWd1cmF0aW9uLWxv Zy1maWxlIGNvbmZpZykpKQorICAgICAgICAgIChzdG9wICN+KG1ha2Uta2lsbC1kZXN0cnVj dG9yKSkKKyAgICAgICAgICAoZG9jdW1lbnRhdGlvbiAiUnVucyBhIEp1cHl0ZXIgTm90ZWJv b2sgc2VydmVyLiBBIEp1cHl0ZXIgTm90ZWJvb2sgaXMgYSB3ZWIgYXBwbGljYXRpb24gdGhh dCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhbmQgc2hhcmUgZG9jdW1lbnRzIHRoYXQgY29udGFp biBsaXZlIGNvZGUsIGVxdWF0aW9ucywgdmlzdWFsaXphdGlvbnMsIGFuZCBleHBsYW5hdG9y eSB0ZXh0LiIpKSkpCisKKyhkZWZpbmUgKGp1cHl0ZXItYWNjb3VudCBjb25maWcpCisgIChs aXN0CisgICAgKHVzZXItYWNjb3VudAorICAgICAgKG5hbWUgImp1cHl0ZXIiKQorICAgICAg KGdyb3VwICJqdXB5dGVyIikKKyAgICAgIChjb21tZW50ICJKdXB5dGVyIE5vdGVib29rIFNl cnZlciIpCisgICAgICAoaG9tZS1kaXJlY3RvcnkgIi92YXIvbGliL2p1cHl0ZXIiKQorICAg ICAgKHNoZWxsIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tc2hlbGwgY29uZmlnKSkKKyAgICAg IChzeXN0ZW0/ICN0KSkKKyAgICAodXNlci1ncm91cAorICAgICAgKG5hbWUgImp1cHl0ZXIi KQorICAgICAgKHN5c3RlbT8gI3QpKSkpCisKKyhkZWZpbmUgKGp1cHl0ZXItcHJvZmlsZSBj b25maWcpCisgIChjb25zKgorICAgIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tanVweXRlci1w YWNrYWdlIGNvbmZpZykKKyAgICAoanVweXRlci1jb25maWd1cmF0aW9uLWtlcm5lbHMgY29u ZmlnKSkpCisKKyhkZWZpbmUgKGp1cHl0ZXItYWN0aXZhdGlvbiBjb25maWcpCisgICN+KGJl Z2luCisgICAgICAobGV0ICgocm9vdC1kaXIgIyQoanVweXRlci1jb25maWd1cmF0aW9uLXJv b3QtZGlyIGNvbmZpZykpCisgICAgICAgICAgICAocHcgKGdldHB3bmFtICJqdXB5dGVyIikp KQorICAgICAgICAodW5sZXNzIChmaWxlLWV4aXN0cz8gcm9vdC1kaXIpCisgICAgICAgICAg KG1rZGlyIHJvb3QtZGlyKQorICAgICAgICAgIChjaG93biByb290LWRpciAocGFzc3dkOnVp ZCBwdykKKyAgICAgICAgICAgICAgICAgKHBhc3N3ZDpnaWQgcHcpKQorICAgICAgICAgIChj aG1vZCByb290LWRpciAjbzcwMCkpKSkpCisKKzs7OyBKdXB5dGVyIHNlcnZpY2UgdHlwZQor Ozs7IC0+IEluZm9ybWF0aW9uIHZpdGFsIHRvIHNldHRpbm5nIHVwIHRoZSBzZXJ2ZXIsIGxp a2UgdGhlIHBvcnQgYW5kIGFjY2VwdGVkIHBhcmFtZXRlcnMKKzs7OyAtPiBsaXN0IG9mIGtl cm5lbHMgY29uc2lkZXJlZCBwZXJtaXNzaWJsZS4KKzs7OyAtPiBhIHNoZXBoZXJkIHNlcnZp Y2UgZXh0ZW5zaW9uIHRoYXQgcnVucyB0aGUganVweXRlciBzZXJ2ZXIKKzs7OyAtLT4gc2hl cGhlcmQgc2VydmljZSB0byBsaXN0IHRoZSBydW5uaW5nIHNlcnZlcnMsIHNldCB0aGUgcGFz c3dvcmQsIGV0Yy4KKzs7OyAtLT4gTWFrZSBhIGxvZyBmaWxlIG9ubHkgcmVhZGFibGUgYnkg cm9vdD8KKzs7OyAtPiBhbiBhY2NvdW50cyBzZXJ2aWNlIGV4dGVuc2lvbiBkZXNjcmliaW5n IHRoZSB1c2VyIHRoYXQgcnVucyB0aGUgYWNjb3VudHMKKzs7OyAtLT4gZ3JvdXAgImp1cHl0 ZXIiCisoZGVmaW5lLXB1YmxpYyBqdXB5dGVyLXNlcnZpY2UtdHlwZQorICAoc2VydmljZS10 eXBlCisgICAgKG5hbWUgImp1cHl0ZXIiKQorICAgIChleHRlbnNpb25zIChsaXN0CisgICAg ICAgICAgICAgICAgICAoc2VydmljZS1leHRlbnNpb24gc2hlcGhlcmQtcm9vdC1zZXJ2aWNl LXR5cGUganVweXRlci1zaGVwaGVyZC1zZXJ2aWNlKQorICAgICAgICAgICAgICAgICAgKHNl cnZpY2UtZXh0ZW5zaW9uIGFjY291bnQtc2VydmljZS10eXBlIGp1cHl0ZXItYWNjb3VudCkK KyAgICAgICAgICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBhY3RpdmF0aW9uLXNlcnZp Y2UtdHlwZSBqdXB5dGVyLWFjdGl2YXRpb24pCisgICAgICAgICAgICAgICAgICAoc2Vydmlj ZS1leHRlbnNpb24gcHJvZmlsZS1zZXJ2aWNlLXR5cGUganVweXRlci1wcm9maWxlKSkpCisg ICAgKGRlc2NyaXB0aW9uICJSdW5zIGEgSnVweXRlciBOb3RlYm9vayBzZXJ2ZXIuIEEgSnVw eXRlciBOb3RlYm9vayBpcyBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0IGFsbG93cyB5b3UgdG8g Y3JlYXRlIGFuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250YWluIGxpdmUgY29kZSwgZXF1 YXRpb25zLCB2aXN1YWxpemF0aW9ucywgYW5kIGV4cGxhbmF0b3J5IHRleHQuIikKKyAgICAo ZGVmYXVsdC12YWx1ZSAoanVweXRlci1jb25maWd1cmF0aW9uKSkpKQotLSAKMi4zMy4wCgo= --------------4F2AC2B75EAD022189026895-- From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 22 22:20:07 2021 Received: (at 50708) by debbugs.gnu.org; 23 Sep 2021 02:20:08 +0000 Received: from localhost ([127.0.0.1]:52280 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTELH-0000Qb-8J for submit@debbugs.gnu.org; Wed, 22 Sep 2021 22:20:07 -0400 Received: from mail-qt1-f176.google.com ([209.85.160.176]:46050) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTELD-0000Py-Ug for 50708@debbugs.gnu.org; Wed, 22 Sep 2021 22:20:06 -0400 Received: by mail-qt1-f176.google.com with SMTP id r1so4773705qta.12 for <50708@debbugs.gnu.org>; Wed, 22 Sep 2021 19:20:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=q1qyW2iFeX4Y3DN1kQwWyFgQH13xNqJtZCr3CEDdiqI=; b=jo13dQwht0nwS6aZzTLe1MB+c+H1RHzwoL7z2deUxrgGf2vRIR4NvlHai6EL1lnOEd lNwJRXlgDKOJ+Xkv0KuhrEyUUQUbxFB5HiyYG4Sb+N0P8CCh4Jl++rcuRgk55WAItnP3 K/WmB1Uy9tuQeYKKx8ZV4w4ivNwD/9TpXNX1zyFK4ivjyRM7kkCq6t5DNhSSvOfSwAtP sFqmkaoNtfom0WraDf9alfddGXOd+qJ8qwogO+61iV73LuTdZcQeIgc9CisODsqVEfBU gee+JC4SbwCstnPGu8Y7fOthqblSSfGVWD4NKN6/evo1bRBCFdAaV9FVGEDXlwE+Y/rq Si3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=q1qyW2iFeX4Y3DN1kQwWyFgQH13xNqJtZCr3CEDdiqI=; b=FjQnwCwr5InrnqQpFzgcnP7203pAjm6doKC/50Yflx+qKjaYnCGudFi7MWouBDOVqn eWSM9qqONv82sRIvjkYccaoXQgdRJXxyjXHuml9QdZRT/Uff9O988FDGAQzbC0wS5e1W EbTYf1pOWeJ7AcZ+fDnpJ5Rznn8svaPuPGPh9QgDSQ9z4wRl8iWj4BaWXYICK8z5OS/j 0jrSvnOZraFASMMqU4ux0o4EWOc/BboBN8yOu8cgPALRh/m1VfBvjuVNMvoQ/Wy7qs1t AFArmd9roW8p5t1GzYSaqwuUYhxyVxlskbkZivjIRxm7JB2JV3xf88f5b/tjtLy240Mk +ZKA== X-Gm-Message-State: AOAM532wJLNUwI9MFJwIGYBmC3xou6UhEHxQ+KJ0/R1Q/iKJLaBRJ6KP l6/lh2G5ShIcR1fisFfQsszIPgqrFSg= X-Google-Smtp-Source: ABdhPJxfiUe5obR6okYcEZqcQXFD4fPp3NhEIc+zEDdqCgkS5yiyN9+5Ecgp/BWyR23nCp1yvKIqXA== X-Received: by 2002:ac8:72d3:: with SMTP id o19mr2694046qtp.19.1632363598267; Wed, 22 Sep 2021 19:19:58 -0700 (PDT) Received: from hurd (dsl-157-23.b2b2c.ca. [66.158.157.23]) by smtp.gmail.com with ESMTPSA id i67sm3216474qkd.90.2021.09.22.19.19.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Sep 2021 19:19:57 -0700 (PDT) From: Maxim Cournoyer To: Jesse Subject: Re: bug#50708: [PATCH] gnu: web: Add jupyter-service References: <565a1b21-aefa-4129-a024-52517fdff9bd@gmail.com> <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> Date: Wed, 22 Sep 2021 22:19:56 -0400 In-Reply-To: <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> (Jesse's message of "Tue, 21 Sep 2021 19:26:11 -0600") Message-ID: <87pmt0kp83.fsf_-_@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50708 Cc: 50708@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello Jesse, Jesse writes: > Attached is an updated patch. > > From d264da0811480a8d2acd5e73f58d320e15bfa9f3 Mon Sep 17 00:00:00 2001 > From: Jesse > Date: Mon, 20 Sep 2021 16:01:22 -0600 > Subject: [PATCH] gnu: web: Add jupyter-service > > * gnu/services/web.scm (gitile-service-type): New variable. > * doc/guix.texi (Version Control Services): Document it. > --- > doc/guix.texi | 52 +++++++++++++++++++ > gnu/services/web.scm | 120 +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 172 insertions(+) > > diff --git a/doc/guix.texi b/doc/guix.texi > index 6436e83a7c..0f8aaca413 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -26197,6 +26197,58 @@ The file which should store the logging output o= f Agate. > @end table > @end deftp >=20=20 > +@cindex jupyter > +The Jupyter Notebook is a web application that allows you to create > +and share documents that contain live code, equations, visualizations > +and explanatory text. Uses include: data cleaning and transformation, > +numerical simulation, statistical modeling, machine learning and much > +more. > + > +@deffn (Scheme Variable) jupyter-service-type > +This is the type of the agate service, whose value should be an ^ Agate I'm a bit confused by this service referring to Agate; seems it'd be clearer for the neophyte to simply refer to Jupyter in its place, even if it's technically an Agate server powering it? > +@code{jupyter-service-type} object, as in this example: > + > +@lisp > +(service jupyter-service-type > + (jupyter-configuration > + (log-file "/var/log/jupyter.log") > + (server-config > + (kernels > + (list jupyter-guile-kernel))))) > + > +@end lisp I'd put the (list jupyter-guile-kernel) on the same line as (kernels ...) > +The example above tells the the Jupyter service to provide the ^ typo =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20 > +@code{jupyter-guile-kernel} as an optional kernel. > +@end deffn > + > +@deftp {Data Type} jupyter-configuration > +Data type representing the configuration of Agate. > + > +@table @asis > +@item @code{jupyter-package} (default: @code{jupyter}) > +The jupyter package to use. ^ Jupyter I'd capitalize Jupyter in other places as well where it's not decorated as a command or code, since it's a proper name. > + > +@item @code{kernels} (default: @code{'()} > +A list of kernel packages to use with the jupyter service. ^ here > + > +@item @code{root-dir} (default: @file{"/var/lib/jupyter/notebooks"}) > +The directory where the jupyter server looks for jupyter notebooks. ^ and here > +@item @code{log-file} (default: @code{#f}) > +The location of the log file. If #f is given, no log is produced. > > +@item @code{shell} (default: @code{(file-append bash "/bin/bash")} > +The location of the shell used when starting a web terminal (if it is co= nfigured to allow terminals). > + > +@item @code{server-config} (default: @code{#f}) > +A file contianing the jupyter server's config file. If @code{#f} is give= n, an empty file is produced, ^ containing > and the default settings are used. > + > +@end table > +@end deftp > + > + > @node Certificate Services > @subsection Certificate Services >=20=20 > diff --git a/gnu/services/web.scm b/gnu/services/web.scm > index 6a093cf4e4..2d2946f7a7 100644 > --- a/gnu/services/web.scm > +++ b/gnu/services/web.scm > @@ -15,6 +15,7 @@ > ;;; Copyright =C2=A9 2020 Arun Isaac > ;;; Copyright =C2=A9 2020 Oleg Pykhalov > ;;; Copyright =C2=A9 2020, 2021 Alexandru-Sergiu Marton > +;;; Copyright =C2=A9 2020, 2021 Jesse Gibbons > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -41,11 +42,13 @@ > #:use-module (gnu system shadow) > #:use-module (gnu packages admin) > #:use-module (gnu packages base) > + #:use-module (gnu packages bash) > #:use-module (gnu packages databases) > #:use-module (gnu packages web) > #:use-module (gnu packages patchutils) > #:use-module (gnu packages php) > #:use-module (gnu packages python) > + #:use-module (gnu packages python-xyz) > #:use-module (gnu packages gnupg) > #:use-module (gnu packages guile) > #:use-module (gnu packages logging) > @@ -91,6 +94,8 @@ >=20=20 > httpd-service-type >=20=20 > + jupyter-configuration > + > nginx-configuration > nginx-configuration? > nginx-configuration-nginx > @@ -1994,3 +1999,118 @@ root=3D/srv/gemini > (service-extension shepherd-root-service-type > agate-shepherd-service))) > (default-value (agate-configuration)))) > + > + > +;;; Jupyter configuration > +;;; Jupyter server configuration > +;;; -> includes a list of kernels to allow in the jupyter server > +;;; -> includes a list of configuration options specifically for the jup= yter server > +;;; --> These options can be concatenated to a python file > +;;; --> Nested alist > +;;; ---> '((NotebookApp (allow-remote-access #t))) -> "c.NotebookApp.all= ow_remote_access =3D True" > +;;; -> Include some settings specifying how to run the daemon > +;;; --> location of log file > +;;; --> If a console should be allowed, the location of the shell to be = used. > +;;; --> The package containing the jupyter server itself, default > jupyter What is the meaning of the arrows in the above comment? It seems to me that they were meant to be used during development, not in the final result? Otherwise, the types of the fields could be self-documented and controlled by the use of the 'define-configuration' procedure and friends from the (gnu services configuration) module. > +(define-public default-jupyter-config "#") > + > +(define-record-type* jupyter-configuration > + this-jupyter-configuration jupyter-configuration? > + (jupyter-package jupyter-configuration-jupyter-pack= age > + (default jupyter)) > + (kernels jupyter-configuration-kernels > + (default '())) > + (root-dir jupyter-configuration-root-dir > + (default "/var/lib/jupyter/notebooks")) > + (log-file jupyter-configuration-log-file > + (default #f)) > + (shell jupyter-configuration-shell > + (default (file-append bash "/bin/bash"))) > + (server-config jupyter-configuration-server-config > + (default #f))); TODO: Make configura= tion DSL. > + > + > +(define (search-path-string search-path-pair) > + (string-append (search-path-specification-variable (car search-path-pa= ir)) > + "=3D" > + (cdr search-path-pair))) > + > +;;;TODO: Add actions to list jupyter servers, change passwords, etc. > +(define (jupyter-shepherd-service config) > + (list (shepherd-service > + (provision '(jupyter)) ;TODO: Add magic to allow multiple Jupy= ter servers > + (requirement '(loopback)) > + (start #~(make-forkexec-constructor > + (list "/run/current-system/profile/bin/jupyter" > + "notebook" > + (string-append "--config=3D" > + #$(or (jupyter-configuration-server-config config) > + (plain-file "jupyter_notebook_config.py" > + default-jupyter-config)) > + #$(jupyter-configuration-root-dir config))) > + #:user "jupyter" > + #:group "jupyter" > + #:environment-variables ; TODO use search-paths mag= ic instead of hard-coding these things. > + (list "GI_TYPELIB_PATH=3D/run/current-system/profil= e/lib/girepository-1.0" > + "GUILE_LOAD_COMPILED_PATH=3D/run/current-syst= em/profile/lib/guile/3.0/site-ccache:/run/current-system/profile/share/guil= e/site/3.0" > + "GUILE_LOAD_PATH=3D/run/current-system/profil= e/share/guile/site/3.0" > + "HOME=3D/var/lib/jupyter" > + "JUPYTER_PATH=3D/run/current-system/profile/s= hare/jupyter" > + "PATH=3D/run/current-system/profile/bin:/run/= current-system/profile/sbin" > + "PYTHONPATH=3D/run/current-system/profile/lib= /python3.8/site-packages" > + "R_LIBS_SITE=3D/run/current-system/profile/si= te-library/" > + "TEXMF=3D/run/current-system/profile/share/te= xmf-dist" > + "TEXMFCNF=3D/run/current-system/profile//shar= e/texmf-dist/web2c" ^ extra s= lash =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 > + "XDG_DATA_DIRS=3D/run/current-system/profile/= share") > + Hmm. Would it work if search paths were set on the 'jupyter' package instead? The above is too fragile, with hard coded versions baked in. > + #:directory #$(jupyter-configuration-root-dir confi= g) > + #:log-file #$(jupyter-configuration-log-file config= ))) > + (stop #~(make-kill-destructor)) > + (documentation "Runs a Jupyter Notebook server. A Jupyter Note= book is ^ Use two spaces after pe= riod. >a web application that allows you to create and share documents that conta= in live code, equations, visualizations, and explanatory text.")))) > + > +(define (jupyter-account config) > + (list > + (user-account > + (name "jupyter") > + (group "jupyter") > + (comment "Jupyter Notebook Server") > + (home-directory "/var/lib/jupyter") > + (shell (jupyter-configuration-shell config)) > + (system? #t)) > + (user-group > + (name "jupyter") > + (system? #t)))) > + > +(define (jupyter-profile config) > + (cons* > + (jupyter-configuration-jupyter-package config) > + (jupyter-configuration-kernels config))) > + > +(define (jupyter-activation config) > + #~(begin > + (let ((root-dir #$(jupyter-configuration-root-dir config)) > + (pw (getpwnam "jupyter"))) > + (unless (file-exists? root-dir) > + (mkdir root-dir) > + (chown root-dir (passwd:uid pw) > + (passwd:gid pw)) > + (chmod root-dir #o700))))) > + > +;;; Jupyter service type > +;;; -> Information vital to settinng up the server, like the port and ac= cepted parameters > +;;; -> list of kernels considered permissible. > +;;; -> a shepherd service extension that runs the jupyter server > +;;; --> shepherd service to list the running servers, set the password, = etc. > +;;; --> Make a log file only readable by root? > +;;; -> an accounts service extension describing the user that runs the a= ccounts > +;;; --> group "jupyter" Same comment as earlier. > +(define-public jupyter-service-type > + (service-type > + (name "jupyter") > + (extensions (list > + (service-extension shepherd-root-service-type jupyter-= shepherd-service) > + (service-extension account-service-type jupyter-accoun= t) > + (service-extension activation-service-type jupyter-act= ivation) > + (service-extension profile-service-type jupyter-profil= e))) > + (description "Runs a Jupyter Notebook server. A Jupyter Notebook is = a web application that allows you to create and share documents that contai= n live code, equations, visualizations, and explanatory text.") > + (default-value (jupyter-configuration)))) I haven't tried it, but it looks promising. If we can find a better solution than the hard coded version values in the environment variables list, I think it'd be in good shape for inclusion, although a system test would be a nice to have. Thank you! Maxim From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 22 22:22:27 2021 Received: (at 50708) by debbugs.gnu.org; 23 Sep 2021 02:22:27 +0000 Received: from localhost ([127.0.0.1]:52284 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTENX-0000V1-3e for submit@debbugs.gnu.org; Wed, 22 Sep 2021 22:22:27 -0400 Received: from mail-pl1-f176.google.com ([209.85.214.176]:34666) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTENR-0000Ug-N3 for 50708@debbugs.gnu.org; Wed, 22 Sep 2021 22:22:25 -0400 Received: by mail-pl1-f176.google.com with SMTP id a7so3047436plm.1 for <50708@debbugs.gnu.org>; Wed, 22 Sep 2021 19:22:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=8sPeZDgv0Vip9tqe/g4x+kqDwUKViY2M6WEyMp5Vblk=; b=iv/5fduCGSKdEi/hpuc2hcs4+5luaN+FvyX98KgEjGmIu3MDuuUj6HojXZaWAD8TP0 Oy1/jTf6kNYdFeOor1GaiBeHvy+SSpJoiu/g/rFw0jeH0ImlumKvgBylUtz5qIu+iuzX i0fycjotvGy3ksXqY9awwsrfUmiLKwfoWoqaMyKbf3WuGtsYDJvqVJpPc6U+W2R1VQfb sblNQm8JayQRw9blFGVyPt/l8iTg1FNpPcjtx83W2APMdnXqiWj6TYaaa7EKrO0sFez6 K9nTa0pfp3UaGNEo0pk1w92dO76db3aS/dqYV3GJCyJJCHXLXnlJ5YXcE6Ho2DBEgEU3 SCkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=8sPeZDgv0Vip9tqe/g4x+kqDwUKViY2M6WEyMp5Vblk=; b=BoYz+NqvQokHVbkRtGBI/nZqG2Yd5c6wThjWirL8NYYjuDuLomgIrccR8GJhAgjMgb GUrrfIGXE8dc15ZAfNIUSZVLYdlFvEiI4KpQSzmwM/OuHEJ6FZ9fRWCJsW4e8CIKyYJD 9ZtvbN2ij7sy/4kcVys8f1fpX09Op3zoDgNNnRgA0xhdj7ySqWoLVCG4FlAoqTVsiKJF MaW919fn0ALKqI50jclsNucJqOWu1+G3rXyO0C8KyPcRkmAxzYUhHt491i6taIAblTCS dIP63/w1SQ5a3q3VIfMWdKdTOW+7bNN03BvIx2kxB4WZA/N//w0vBj7gDlxLVukYiEa3 BOTg== X-Gm-Message-State: AOAM532Wr/ZpX/TRh2l4HRd1q/w/jBeIqWflkQqYL7ilKBXCWMc4QMGJ OV5ACQVa6bHWjCWCPimChZMz5uH7pEcHhQ== X-Google-Smtp-Source: ABdhPJwCvZSZnqQURA3jXtQU7ieX1NOcvQsNO28bvde2SYRXAjlHZ0TrQ9HV538nU4nrFXm6Xo0zhQ== X-Received: by 2002:a17:902:f24b:b0:13a:5178:ef64 with SMTP id j11-20020a170902f24b00b0013a5178ef64mr1723921plc.14.1632363735244; Wed, 22 Sep 2021 19:22:15 -0700 (PDT) Received: from [192.168.1.220] ([38.141.58.134]) by smtp.gmail.com with ESMTPSA id g3sm3647600pfk.178.2021.09.22.19.22.14 for <50708@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 19:22:14 -0700 (PDT) Subject: Re: bug#50708: [PATCH] gnu: web: Add jupyter-service From: Jesse To: 50708@debbugs.gnu.org References: <565a1b21-aefa-4129-a024-52517fdff9bd@gmail.com> <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> Message-ID: Date: Wed, 22 Sep 2021 20:22:12 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Icedove/78.13.0 MIME-Version: 1.0 In-Reply-To: <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> Content-Type: multipart/mixed; boundary="------------3C5D95CFC23F9096A4BAE828" Content-Language: en-US X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 50708 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) This is a multi-part message in MIME format. --------------3C5D95CFC23F9096A4BAE828 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached is yet another updated patch fixing a mistake in the added documentation. On 9/21/21 7:26 PM, Jesse wrote: > Attached is an updated patch. --------------3C5D95CFC23F9096A4BAE828 Content-Type: text/plain; charset=UTF-8; name="0001-gnu-web-Add-jupyter-service.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-gnu-web-Add-jupyter-service.patch" RnJvbSBkMjY0ZGEwODExNDgwYThkMmFjZDVlNzNmNThkMzIwZTE1YmZhOWYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZXNzZSA8Z2liMTkwMTRAYnl1aS5lZHU+CkRhdGU6 IE1vbiwgMjAgU2VwIDIwMjEgMTY6MDE6MjIgLTA2MDAKU3ViamVjdDogW1BBVENIXSBnbnU6 IHdlYjogQWRkIGp1cHl0ZXItc2VydmljZQoKKiBnbnUvc2VydmljZXMvd2ViLnNjbSAoZ2l0 aWxlLXNlcnZpY2UtdHlwZSk6IE5ldyB2YXJpYWJsZS4KKiBkb2MvZ3VpeC50ZXhpIChWZXJz aW9uIENvbnRyb2wgU2VydmljZXMpOiBEb2N1bWVudCBpdC4KLS0tCiBkb2MvZ3VpeC50ZXhp ICAgICAgICB8ICA1MiArKysrKysrKysrKysrKysrKysrCiBnbnUvc2VydmljZXMvd2ViLnNj bSB8IDEyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAy IGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL2d1 aXgudGV4aSBiL2RvYy9ndWl4LnRleGkKaW5kZXggNjQzNmU4M2E3Yy4uMGY4YWFjYTQxMyAx MDA2NDQKLS0tIGEvZG9jL2d1aXgudGV4aQorKysgYi9kb2MvZ3VpeC50ZXhpCkBAIC0yNjE5 Nyw2ICsyNjE5Nyw1OCBAQCBUaGUgZmlsZSB3aGljaCBzaG91bGQgc3RvcmUgdGhlIGxvZ2dp bmcgb3V0cHV0IG9mIEFnYXRlLgogQGVuZCB0YWJsZQogQGVuZCBkZWZ0cAogCitAY2luZGV4 IGp1cHl0ZXIKK1RoZSBKdXB5dGVyIE5vdGVib29rIGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRo YXQgYWxsb3dzIHlvdSB0byBjcmVhdGUKK2FuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250 YWluIGxpdmUgY29kZSwgZXF1YXRpb25zLCB2aXN1YWxpemF0aW9ucworYW5kIGV4cGxhbmF0 b3J5IHRleHQuICBVc2VzIGluY2x1ZGU6IGRhdGEgY2xlYW5pbmcgYW5kIHRyYW5zZm9ybWF0 aW9uLAorbnVtZXJpY2FsIHNpbXVsYXRpb24sIHN0YXRpc3RpY2FsIG1vZGVsaW5nLCBtYWNo aW5lIGxlYXJuaW5nIGFuZCBtdWNoCittb3JlLgorCitAZGVmZm4gKFNjaGVtZSBWYXJpYWJs ZSkganVweXRlci1zZXJ2aWNlLXR5cGUKK1RoaXMgaXMgdGhlIHR5cGUgb2YgdGhlIGFnYXRl IHNlcnZpY2UsIHdob3NlIHZhbHVlIHNob3VsZCBiZSBhbgorQGNvZGV7anVweXRlci1zZXJ2 aWNlLXR5cGV9IG9iamVjdCwgYXMgaW4gdGhpcyBleGFtcGxlOgorCitAbGlzcAorKHNlcnZp Y2UganVweXRlci1zZXJ2aWNlLXR5cGUKKyAoanVweXRlci1jb25maWd1cmF0aW9uCisgIChs b2ctZmlsZSAiL3Zhci9sb2cvanVweXRlci5sb2ciKQorICAoc2VydmVyLWNvbmZpZworICAg KGtlcm5lbHMKKyAgICAobGlzdCBqdXB5dGVyLWd1aWxlLWtlcm5lbCkpKSkpCisKK0BlbmQg bGlzcAorCitUaGUgZXhhbXBsZSBhYm92ZSB0ZWxscyB0aGUgdGhlIEp1cHl0ZXIgc2Vydmlj ZSB0byBwcm92aWRlIHRoZQorQGNvZGV7anVweXRlci1ndWlsZS1rZXJuZWx9IGFzIGFuIG9w dGlvbmFsIGtlcm5lbC4KK0BlbmQgZGVmZm4KKworQGRlZnRwIHtEYXRhIFR5cGV9IGp1cHl0 ZXItY29uZmlndXJhdGlvbgorRGF0YSB0eXBlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJh dGlvbiBvZiBBZ2F0ZS4KKworQHRhYmxlIEBhc2lzCitAaXRlbSBAY29kZXtqdXB5dGVyLXBh Y2thZ2V9IChkZWZhdWx0OiBAY29kZXtqdXB5dGVyfSkKK1RoZSBqdXB5dGVyIHBhY2thZ2Ug dG8gdXNlLgorCisKK0BpdGVtIEBjb2Rle2tlcm5lbHN9IChkZWZhdWx0OiBAY29kZXsnKCl9 CitBIGxpc3Qgb2Yga2VybmVsIHBhY2thZ2VzIHRvIHVzZSB3aXRoIHRoZSBqdXB5dGVyIHNl cnZpY2UuCisKK0BpdGVtIEBjb2Rle3Jvb3QtZGlyfSAoZGVmYXVsdDogQGZpbGV7Ii92YXIv bGliL2p1cHl0ZXIvbm90ZWJvb2tzIn0pCitUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBqdXB5 dGVyIHNlcnZlciBsb29rcyBmb3IganVweXRlciBub3RlYm9va3MuCisKK0BpdGVtIEBjb2Rl e2xvZy1maWxlfSAoZGVmYXVsdDogQGNvZGV7I2Z9KQorVGhlIGxvY2F0aW9uIG9mIHRoZSBs b2cgZmlsZS4gSWYgI2YgaXMgZ2l2ZW4sIG5vIGxvZyBpcyBwcm9kdWNlZC4KKworQGl0ZW0g QGNvZGV7c2hlbGx9IChkZWZhdWx0OiBAY29kZXsoZmlsZS1hcHBlbmQgYmFzaCAiL2Jpbi9i YXNoIil9CitUaGUgbG9jYXRpb24gb2YgdGhlIHNoZWxsIHVzZWQgd2hlbiBzdGFydGluZyBh IHdlYiB0ZXJtaW5hbCAoaWYgaXQgaXMgY29uZmlndXJlZCB0byBhbGxvdyB0ZXJtaW5hbHMp LgorCitAaXRlbSBAY29kZXtzZXJ2ZXItY29uZmlnfSAoZGVmYXVsdDogQGNvZGV7I2Z9KQor QSBmaWxlIGNvbnRpYW5pbmcgdGhlIGp1cHl0ZXIgc2VydmVyJ3MgY29uZmlnIGZpbGUuIElm IEBjb2RleyNmfSBpcyBnaXZlbiwgYW4gZW1wdHkgZmlsZSBpcyBwcm9kdWNlZCwgYW5kIHRo ZSBkZWZhdWx0IHNldHRpbmdzIGFyZSB1c2VkLgorCitAZW5kIHRhYmxlCitAZW5kIGRlZnRw CisKKwogQG5vZGUgQ2VydGlmaWNhdGUgU2VydmljZXMKIEBzdWJzZWN0aW9uIENlcnRpZmlj YXRlIFNlcnZpY2VzCiAKZGlmZiAtLWdpdCBhL2dudS9zZXJ2aWNlcy93ZWIuc2NtIGIvZ251 L3NlcnZpY2VzL3dlYi5zY20KaW5kZXggNmEwOTNjZjRlNC4uMmQyOTQ2ZjdhNyAxMDA2NDQK LS0tIGEvZ251L3NlcnZpY2VzL3dlYi5zY20KKysrIGIvZ251L3NlcnZpY2VzL3dlYi5zY20K QEAgLTE1LDYgKzE1LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBBcnVuIElzYWFjIDxh cnVuaXNhYWNAc3lzdGVtcmVib290Lm5ldD4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBPbGVn IFB5a2hhbG92IDxnby53aWd1c3RAZ21haWwuY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIw LCAyMDIxIEFsZXhhbmRydS1TZXJnaXUgTWFydG9uIDxicm93bjEyMTQwN0Bwb3N0ZW8ucm8+ Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjAsIDIwMjEgSmVzc2UgR2liYm9ucyA8amdpYmJvbnMy MzU3K2d1aXhAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEd1aXguCiA7OzsKQEAgLTQxLDExICs0MiwxMyBAQAogICAjOnVzZS1tb2R1bGUgKGdudSBz eXN0ZW0gc2hhZG93KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhZG1pbikKICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgYmFzZSkKKyAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgYmFzaCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZGF0YWJhc2Vz KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB3ZWIpCiAgICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIHBhdGNodXRpbHMpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2Vz IHBocCkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uKQorICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBweXRob24teHl6KQogICAjOnVzZS1tb2R1bGUgKGdudSBw YWNrYWdlcyBnbnVwZykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ3VpbGUpCiAg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGxvZ2dpbmcpCkBAIC05MSw2ICs5NCw4IEBA CiAKICAgICAgICAgICAgIGh0dHBkLXNlcnZpY2UtdHlwZQogCisgICAgICAgICAgICBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24KKwogICAgICAgICAgICAgbmdpbngtY29uZmlndXJhdGlvbgog ICAgICAgICAgICAgbmdpbngtY29uZmlndXJhdGlvbj8KICAgICAgICAgICAgIG5naW54LWNv bmZpZ3VyYXRpb24tbmdpbngKQEAgLTE5OTQsMyArMTk5OSwxMTggQEAgcm9vdD0vc3J2L2dl bWluaQogICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBzaGVwaGVyZC1yb290LXNlcnZp Y2UtdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2F0ZS1zaGVwaGVyZC1z ZXJ2aWNlKSkpCiAgICAoZGVmYXVsdC12YWx1ZSAoYWdhdGUtY29uZmlndXJhdGlvbikpKSkK KworCis7OzsgSnVweXRlciBjb25maWd1cmF0aW9uCis7OzsgSnVweXRlciBzZXJ2ZXIgY29u ZmlndXJhdGlvbgorOzs7IC0+IGluY2x1ZGVzIGEgbGlzdCBvZiBrZXJuZWxzIHRvIGFsbG93 IGluIHRoZSBqdXB5dGVyIHNlcnZlcgorOzs7IC0+IGluY2x1ZGVzIGEgbGlzdCBvZiBjb25m aWd1cmF0aW9uIG9wdGlvbnMgc3BlY2lmaWNhbGx5IGZvciB0aGUganVweXRlciBzZXJ2ZXIK Kzs7OyAtLT4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgY29uY2F0ZW5hdGVkIHRvIGEgcHl0aG9u IGZpbGUKKzs7OyAtLT4gTmVzdGVkIGFsaXN0Cis7OzsgLS0tPiAnKChOb3RlYm9va0FwcCAo YWxsb3ctcmVtb3RlLWFjY2VzcyAjdCkpKSAtPiAiYy5Ob3RlYm9va0FwcC5hbGxvd19yZW1v dGVfYWNjZXNzID0gVHJ1ZSIKKzs7OyAtPiBJbmNsdWRlIHNvbWUgc2V0dGluZ3Mgc3BlY2lm eWluZyBob3cgdG8gcnVuIHRoZSBkYWVtb24KKzs7OyAtLT4gbG9jYXRpb24gb2YgbG9nIGZp bGUKKzs7OyAtLT4gSWYgYSBjb25zb2xlIHNob3VsZCBiZSBhbGxvd2VkLCB0aGUgbG9jYXRp b24gb2YgdGhlIHNoZWxsIHRvIGJlIHVzZWQuCis7OzsgLS0+IFRoZSBwYWNrYWdlIGNvbnRh aW5pbmcgdGhlIGp1cHl0ZXIgc2VydmVyIGl0c2VsZiwgZGVmYXVsdCBqdXB5dGVyCisoZGVm aW5lLXB1YmxpYyBkZWZhdWx0LWp1cHl0ZXItY29uZmlnICIjIikKKworKGRlZmluZS1yZWNv cmQtdHlwZSogPGp1cHl0ZXItY29uZmlndXJhdGlvbj4ganVweXRlci1jb25maWd1cmF0aW9u CisgICAgICAgICAgICAgICAgICAgICB0aGlzLWp1cHl0ZXItY29uZmlndXJhdGlvbiBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24/CisgICAgICAgICAgICAgICAgICAgICAoanVweXRlci1wYWNr YWdlIGp1cHl0ZXItY29uZmlndXJhdGlvbi1qdXB5dGVyLXBhY2thZ2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQganVweXRlcikpCisgICAgICAg ICAgICAgICAgICAgICAoa2VybmVscyBqdXB5dGVyLWNvbmZpZ3VyYXRpb24ta2VybmVscwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgJygpKSkKKyAgICAgICAg ICAgICAgICAgICAgIChyb290LWRpciBqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9vdC1kaXIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAiL3Zhci9saWIvanVw eXRlci9ub3RlYm9va3MiKSkKKyAgICAgICAgICAgICAgICAgICAgIChsb2ctZmlsZSBqdXB5 dGVyLWNvbmZpZ3VyYXRpb24tbG9nLWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZGVmYXVsdCAjZikpCisgICAgICAgICAgICAgICAgICAgICAoc2hlbGwganVweXRl ci1jb25maWd1cmF0aW9uLXNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRl ZmF1bHQgKGZpbGUtYXBwZW5kIGJhc2ggIi9iaW4vYmFzaCIpKSkKKyAgICAgICAgICAgICAg ICAgICAgIChzZXJ2ZXItY29uZmlnIGp1cHl0ZXItY29uZmlndXJhdGlvbi1zZXJ2ZXItY29u ZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAjZikp KTsgVE9ETzogTWFrZSBjb25maWd1cmF0aW9uIERTTC4KKworCisoZGVmaW5lIChzZWFyY2gt cGF0aC1zdHJpbmcgc2VhcmNoLXBhdGgtcGFpcikKKyAgKHN0cmluZy1hcHBlbmQgKHNlYXJj aC1wYXRoLXNwZWNpZmljYXRpb24tdmFyaWFibGUgKGNhciBzZWFyY2gtcGF0aC1wYWlyKSkK KyAgICAgICAgICAgICAgICAgIj0iCisgICAgICAgICAgICAgICAgIChjZHIgc2VhcmNoLXBh dGgtcGFpcikpKQorCis7OztUT0RPOiBBZGQgYWN0aW9ucyB0byBsaXN0IGp1cHl0ZXIgc2Vy dmVycywgY2hhbmdlIHBhc3N3b3JkcywgZXRjLgorKGRlZmluZSAoanVweXRlci1zaGVwaGVy ZC1zZXJ2aWNlIGNvbmZpZykKKyAgKGxpc3QgKHNoZXBoZXJkLXNlcnZpY2UKKyAgICAgICAg ICAocHJvdmlzaW9uICcoanVweXRlcikpIDtUT0RPOiBBZGQgbWFnaWMgdG8gYWxsb3cgbXVs dGlwbGUgSnVweXRlciBzZXJ2ZXJzCisgICAgICAgICAgKHJlcXVpcmVtZW50ICcobG9vcGJh Y2spKQorICAgICAgICAgIChzdGFydCAjfihtYWtlLWZvcmtleGVjLWNvbnN0cnVjdG9yCisg ICAgICAgICAgICAgICAgICAgICAobGlzdCAiL3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxl L2Jpbi9qdXB5dGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdGVib29rIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tY29uZmlnPSIK KyAgICAgICAgICAgICAgICAgICAgICMkKG9yIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tc2Vy dmVyLWNvbmZpZyBjb25maWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhaW4t ZmlsZSAianVweXRlcl9ub3RlYm9va19jb25maWcucHkiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LWp1cHl0ZXItY29uZmlnKSkKKyAgICAgICAg ICAgICAgICAgICAgICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpciBjb25maWcp KSkKKyAgICAgICAgICAgICAgICAgICAgICM6dXNlciAianVweXRlciIKKyAgICAgICAgICAg ICAgICAgICAgICM6Z3JvdXAgImp1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAjOmVu dmlyb25tZW50LXZhcmlhYmxlcyA7IFRPRE8gdXNlIHNlYXJjaC1wYXRocyBtYWdpYyBpbnN0 ZWFkIG9mIGhhcmQtY29kaW5nIHRoZXNlIHRoaW5ncy4KKyAgICAgICAgICAgICAgICAgICAg IChsaXN0ICJHSV9UWVBFTElCX1BBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2xp Yi9naXJlcG9zaXRvcnktMS4wIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdVSUxF X0xPQURfQ09NUElMRURfUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvbGliL2d1 aWxlLzMuMC9zaXRlLWNjYWNoZTovcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hhcmUv Z3VpbGUvc2l0ZS8zLjAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1VJTEVfTE9B RF9QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9ndWlsZS9zaXRlLzMu MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJIT01FPS92YXIvbGliL2p1cHl0ZXIi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSlVQWVRFUl9QQVRIPS9ydW4vY3VycmVu dC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9qdXB5dGVyIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlBBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2JpbjovcnVuL2N1cnJl bnQtc3lzdGVtL3Byb2ZpbGUvc2JpbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJQ WVRIT05QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiUl9MSUJTX1NJVEU9 L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3NpdGUtbGlicmFyeS8iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAiVEVYTUY9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3No YXJlL3RleG1mLWRpc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEVYTUZDTkY9 L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlLy9zaGFyZS90ZXhtZi1kaXN0L3dlYjJjIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlhER19EQVRBX0RJUlM9L3J1bi9jdXJyZW50 LXN5c3RlbS9wcm9maWxlL3NoYXJlIikKKworICAgICAgICAgICAgICAgICAgICAgIzpkaXJl Y3RvcnkgIyQoanVweXRlci1jb25maWd1cmF0aW9uLXJvb3QtZGlyIGNvbmZpZykKKyAgICAg ICAgICAgICAgICAgICAgICM6bG9nLWZpbGUgIyQoanVweXRlci1jb25maWd1cmF0aW9uLWxv Zy1maWxlIGNvbmZpZykpKQorICAgICAgICAgIChzdG9wICN+KG1ha2Uta2lsbC1kZXN0cnVj dG9yKSkKKyAgICAgICAgICAoZG9jdW1lbnRhdGlvbiAiUnVucyBhIEp1cHl0ZXIgTm90ZWJv b2sgc2VydmVyLiBBIEp1cHl0ZXIgTm90ZWJvb2sgaXMgYSB3ZWIgYXBwbGljYXRpb24gdGhh dCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhbmQgc2hhcmUgZG9jdW1lbnRzIHRoYXQgY29udGFp biBsaXZlIGNvZGUsIGVxdWF0aW9ucywgdmlzdWFsaXphdGlvbnMsIGFuZCBleHBsYW5hdG9y eSB0ZXh0LiIpKSkpCisKKyhkZWZpbmUgKGp1cHl0ZXItYWNjb3VudCBjb25maWcpCisgIChs aXN0CisgICAgKHVzZXItYWNjb3VudAorICAgICAgKG5hbWUgImp1cHl0ZXIiKQorICAgICAg KGdyb3VwICJqdXB5dGVyIikKKyAgICAgIChjb21tZW50ICJKdXB5dGVyIE5vdGVib29rIFNl cnZlciIpCisgICAgICAoaG9tZS1kaXJlY3RvcnkgIi92YXIvbGliL2p1cHl0ZXIiKQorICAg ICAgKHNoZWxsIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tc2hlbGwgY29uZmlnKSkKKyAgICAg IChzeXN0ZW0/ICN0KSkKKyAgICAodXNlci1ncm91cAorICAgICAgKG5hbWUgImp1cHl0ZXIi KQorICAgICAgKHN5c3RlbT8gI3QpKSkpCisKKyhkZWZpbmUgKGp1cHl0ZXItcHJvZmlsZSBj b25maWcpCisgIChjb25zKgorICAgIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tanVweXRlci1w YWNrYWdlIGNvbmZpZykKKyAgICAoanVweXRlci1jb25maWd1cmF0aW9uLWtlcm5lbHMgY29u ZmlnKSkpCisKKyhkZWZpbmUgKGp1cHl0ZXItYWN0aXZhdGlvbiBjb25maWcpCisgICN+KGJl Z2luCisgICAgICAobGV0ICgocm9vdC1kaXIgIyQoanVweXRlci1jb25maWd1cmF0aW9uLXJv b3QtZGlyIGNvbmZpZykpCisgICAgICAgICAgICAocHcgKGdldHB3bmFtICJqdXB5dGVyIikp KQorICAgICAgICAodW5sZXNzIChmaWxlLWV4aXN0cz8gcm9vdC1kaXIpCisgICAgICAgICAg KG1rZGlyIHJvb3QtZGlyKQorICAgICAgICAgIChjaG93biByb290LWRpciAocGFzc3dkOnVp ZCBwdykKKyAgICAgICAgICAgICAgICAgKHBhc3N3ZDpnaWQgcHcpKQorICAgICAgICAgIChj aG1vZCByb290LWRpciAjbzcwMCkpKSkpCisKKzs7OyBKdXB5dGVyIHNlcnZpY2UgdHlwZQor Ozs7IC0+IEluZm9ybWF0aW9uIHZpdGFsIHRvIHNldHRpbm5nIHVwIHRoZSBzZXJ2ZXIsIGxp a2UgdGhlIHBvcnQgYW5kIGFjY2VwdGVkIHBhcmFtZXRlcnMKKzs7OyAtPiBsaXN0IG9mIGtl cm5lbHMgY29uc2lkZXJlZCBwZXJtaXNzaWJsZS4KKzs7OyAtPiBhIHNoZXBoZXJkIHNlcnZp Y2UgZXh0ZW5zaW9uIHRoYXQgcnVucyB0aGUganVweXRlciBzZXJ2ZXIKKzs7OyAtLT4gc2hl cGhlcmQgc2VydmljZSB0byBsaXN0IHRoZSBydW5uaW5nIHNlcnZlcnMsIHNldCB0aGUgcGFz c3dvcmQsIGV0Yy4KKzs7OyAtLT4gTWFrZSBhIGxvZyBmaWxlIG9ubHkgcmVhZGFibGUgYnkg cm9vdD8KKzs7OyAtPiBhbiBhY2NvdW50cyBzZXJ2aWNlIGV4dGVuc2lvbiBkZXNjcmliaW5n IHRoZSB1c2VyIHRoYXQgcnVucyB0aGUgYWNjb3VudHMKKzs7OyAtLT4gZ3JvdXAgImp1cHl0 ZXIiCisoZGVmaW5lLXB1YmxpYyBqdXB5dGVyLXNlcnZpY2UtdHlwZQorICAoc2VydmljZS10 eXBlCisgICAgKG5hbWUgImp1cHl0ZXIiKQorICAgIChleHRlbnNpb25zIChsaXN0CisgICAg ICAgICAgICAgICAgICAoc2VydmljZS1leHRlbnNpb24gc2hlcGhlcmQtcm9vdC1zZXJ2aWNl LXR5cGUganVweXRlci1zaGVwaGVyZC1zZXJ2aWNlKQorICAgICAgICAgICAgICAgICAgKHNl cnZpY2UtZXh0ZW5zaW9uIGFjY291bnQtc2VydmljZS10eXBlIGp1cHl0ZXItYWNjb3VudCkK KyAgICAgICAgICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBhY3RpdmF0aW9uLXNlcnZp Y2UtdHlwZSBqdXB5dGVyLWFjdGl2YXRpb24pCisgICAgICAgICAgICAgICAgICAoc2Vydmlj ZS1leHRlbnNpb24gcHJvZmlsZS1zZXJ2aWNlLXR5cGUganVweXRlci1wcm9maWxlKSkpCisg ICAgKGRlc2NyaXB0aW9uICJSdW5zIGEgSnVweXRlciBOb3RlYm9vayBzZXJ2ZXIuIEEgSnVw eXRlciBOb3RlYm9vayBpcyBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0IGFsbG93cyB5b3UgdG8g Y3JlYXRlIGFuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250YWluIGxpdmUgY29kZSwgZXF1 YXRpb25zLCB2aXN1YWxpemF0aW9ucywgYW5kIGV4cGxhbmF0b3J5IHRleHQuIikKKyAgICAo ZGVmYXVsdC12YWx1ZSAoanVweXRlci1jb25maWd1cmF0aW9uKSkpKQotLSAKMi4zMy4wCgo= --------------3C5D95CFC23F9096A4BAE828-- From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 22 23:12:07 2021 Received: (at 50708) by debbugs.gnu.org; 23 Sep 2021 03:12:07 +0000 Received: from localhost ([127.0.0.1]:52324 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTF9a-0001qc-Fk for submit@debbugs.gnu.org; Wed, 22 Sep 2021 23:12:07 -0400 Received: from mail-pj1-f42.google.com ([209.85.216.42]:51188) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTF9W-0001q0-DY for 50708@debbugs.gnu.org; Wed, 22 Sep 2021 23:12:05 -0400 Received: by mail-pj1-f42.google.com with SMTP id k23so3506984pji.0 for <50708@debbugs.gnu.org>; Wed, 22 Sep 2021 20:12:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=laUvx3uNfs8iUflqLLmh0MDTx9yClTFc+GZLEWYkxpA=; b=o6CKlRoIX4U6cb3nPu1cQcd0HVy5KqSJvncM5KPie9fNeUKkV1wOq+A45RJxLO49B5 /Nz6+gLvbYwLBQ5V6EmmLXcqEtw/Q66bTbIJxclF9YAwjHQJH8luoCyeAYuHFIHp5rBo LXXII+oTBoR0zbIoYSIJ0/EZVxBk5ygf83l/Z/YxKOeZrQ/GkdAtQTzpiM8Rzt0yG+Ex 8ojKRB1kT3NvYOu7ZWfTMTlVNmJvo+x3PJfA49eLEDMH9BV/Pr2tfC0X8sKB0mSqlYgj MR/msyAdh0Pnrh0wuApY64WZqByjoSrdYmj5uw5cu3GA5Uc0iB1b/PGqAYi+U2S9v+j9 pclw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=laUvx3uNfs8iUflqLLmh0MDTx9yClTFc+GZLEWYkxpA=; b=cNvaumxJz1K5cQmyMhEJXN+5IydGzHjX3HepctaKBsacrpjp958zJYSfidg5MeEN7w Db9njlAfg5rd1LWQxwQH3a/ZESc7YQf/2KZqmvaYfg2+I+lxX9hof6vnbA/wiiPohKrf ez8SoVBpn9ZCrbBkqC1sB9tVBDSL2u092n8NHqxasrxXFdzO56B5tp4KlzkXiMyBNCjH qi7yXzoIj+dI3VHz4dJBtz6H/34r7fo6ytEKqTRtt3sDmfdsVxqj1myydla/O677iEyP vLKVcPbxpRt5Zz3MaAMcToTSLzt/VIgJ+wtUpF23alQits53XzxsySSkgtfdQlV8sWYl r+og== X-Gm-Message-State: AOAM533chwhNZ54JsXmxpXM+f/AQVm6ZpRIh9uVaQEcwaqYDK9LmYtdQ D3WAKfF6BNtPuhBBpPrLSH9X/mODaSk1/w== X-Google-Smtp-Source: ABdhPJwsBVWw1ojTOhz2lYWg7t5iBHByXnpz+Yqb9UiKgjnK/wM/sSM5SOW4RWHLRDHvqjMRH9oiYw== X-Received: by 2002:a17:902:7e84:b0:13a:3396:1c04 with SMTP id z4-20020a1709027e8400b0013a33961c04mr1926615pla.84.1632366716150; Wed, 22 Sep 2021 20:11:56 -0700 (PDT) Received: from [192.168.1.220] ([38.141.58.134]) by smtp.gmail.com with ESMTPSA id g3sm3551784pjm.22.2021.09.22.20.11.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 20:11:55 -0700 (PDT) Subject: Re: bug#50708: [PATCH] gnu: web: Add jupyter-service To: Maxim Cournoyer References: <565a1b21-aefa-4129-a024-52517fdff9bd@gmail.com> <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> <87pmt0kp83.fsf_-_@gmail.com> From: Jesse Message-ID: <23294845-1ac9-b2ef-c056-89f6ee51435f@gmail.com> Date: Wed, 22 Sep 2021 21:11:52 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Icedove/78.13.0 MIME-Version: 1.0 In-Reply-To: <87pmt0kp83.fsf_-_@gmail.com> Content-Type: multipart/mixed; boundary="------------FE9D4055B54C5083D69FF778" Content-Language: en-US X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 50708 Cc: 50708@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) This is a multi-part message in MIME format. --------------FE9D4055B54C5083D69FF778 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached is a patch that takes into account your feedback. On 9/22/21 8:19 PM, Maxim Cournoyer wrote: > Hello Jesse, > > Jesse writes: ... > + #:environment-variables ; TODO use search-paths magic instead of hard-coding these things. > + (list "GI_TYPELIB_PATH=/run/current-system/profile/lib/girepository-1.0" > + "GUILE_LOAD_COMPILED_PATH=/run/current-system/profile/lib/guile/3.0/site-ccache:/run/current-system/profile/share/guile/site/3.0" > + "GUILE_LOAD_PATH=/run/current-system/profile/share/guile/site/3.0" > + "HOME=/var/lib/jupyter" > + "JUPYTER_PATH=/run/current-system/profile/share/jupyter" > + "PATH=/run/current-system/profile/bin:/run/current-system/profile/sbin" > + "PYTHONPATH=/run/current-system/profile/lib/python3.8/site-packages" > + "R_LIBS_SITE=/run/current-system/profile/site-library/" > + "TEXMF=/run/current-system/profile/share/texmf-dist" > + "TEXMFCNF=/run/current-system/profile//share/texmf-dist/web2c" > >> + "XDG_DATA_DIRS=/run/current-system/profile/share") >> + > Hmm. Would it work if search paths were set on the 'jupyter' package > instead? The above is too fragile, with hard coded versions baked in. > > ... > I haven't tried it, but it looks promising. If we can find a better > solution than the hard coded version values in the environment variables > list, I think it'd be in good shape for inclusion, although a system > test would be a nice to have. > > Thank you! > > Maxim The weird thing about this particular service is it is more useful with libraries Jupyter and the kernels are not dependent on. This part is leftover from when I wrote it several months ago for a home server. (I actually used this service to work on notebooks using the Guile kernel working with sqlite and to try the other kernels.) I found that it couldn't find the packages I need and the web shell was broken, so I settled for hard-coding these variables until I could find time to fix them. I included a TODO with an idea I have not yet implemented: use the search-paths to give Jupyter the environment variables it needs the same way a profile sets up its search paths. I thought it might be a good idea to associate the service with its own profile for security reasons. This would also fix a bug where the Jupyter Notebook icon appears on the desktop but fails to start a new Jupyter server. Another idea I had is the service could be isolated in its own container with the network exposed and the home directory shared, but I have no idea how that would work or if it would even add more security. However, this could potentially allow multiple Jupyter services to run simultaneously on different ports. However, one problem is the resulting server might be unusable because the login information would be in a log file hidden in a container. I'll work on the search-paths idea and send an update when I'm done. I'm also open to other suggestions on how to fix the hard-coded values. I don't think this will be ready to merge until that problem is fixed, but I've attached the patch anyway for curious users who want to try it out. I would appreciate help implementing the container idea if it's feasible. -Jesse --------------FE9D4055B54C5083D69FF778 Content-Type: text/plain; charset=UTF-8; name="0001-gnu-web-Add-jupyter-service.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-gnu-web-Add-jupyter-service.patch" RnJvbSBmOTZlNDFhNzIyMmI1MWNiNGZmNmUxNjY1N2RlMmU4N2ZlYTc4NDcyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZXNzZSA8Z2liMTkwMTRAYnl1aS5lZHU+CkRhdGU6 IE1vbiwgMjAgU2VwIDIwMjEgMTY6MDE6MjIgLTA2MDAKU3ViamVjdDogW1BBVENIXSBnbnU6 IHdlYjogQWRkIGp1cHl0ZXItc2VydmljZQoKKiBnbnUvc2VydmljZXMvd2ViLnNjbSAoZ2l0 aWxlLXNlcnZpY2UtdHlwZSk6IE5ldyB2YXJpYWJsZS4KKiBkb2MvZ3VpeC50ZXhpIChWZXJz aW9uIENvbnRyb2wgU2VydmljZXMpOiBEb2N1bWVudCBpdC4KLS0tCiBkb2MvZ3VpeC50ZXhp ICAgICAgICB8ICA1MiArKysrKysrKysrKysrKysrKysrKysKIGdudS9zZXJ2aWNlcy93ZWIu c2NtIHwgMTA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mv Z3VpeC50ZXhpIGIvZG9jL2d1aXgudGV4aQppbmRleCA2NDM2ZTgzYTdjLi5iOTIyNDZjYzhh IDEwMDY0NAotLS0gYS9kb2MvZ3VpeC50ZXhpCisrKyBiL2RvYy9ndWl4LnRleGkKQEAgLTI2 MTk3LDYgKzI2MTk3LDU4IEBAIFRoZSBmaWxlIHdoaWNoIHNob3VsZCBzdG9yZSB0aGUgbG9n Z2luZyBvdXRwdXQgb2YgQWdhdGUuCiBAZW5kIHRhYmxlCiBAZW5kIGRlZnRwCiAKK0BzdWJz dWJoZWFkaW5nIEp1cHl0ZXIKK0BjaW5kZXgganVweXRlcgorVGhlIEp1cHl0ZXIgTm90ZWJv b2sgaXMgYSB3ZWIgYXBwbGljYXRpb24gdGhhdCBhbGxvd3MgeW91IHRvIGNyZWF0ZQorYW5k IHNoYXJlIGRvY3VtZW50cyB0aGF0IGNvbnRhaW4gbGl2ZSBjb2RlLCBlcXVhdGlvbnMsIHZp c3VhbGl6YXRpb25zCithbmQgZXhwbGFuYXRvcnkgdGV4dC4gIFVzZXMgaW5jbHVkZTogZGF0 YSBjbGVhbmluZyBhbmQgdHJhbnNmb3JtYXRpb24sCitudW1lcmljYWwgc2ltdWxhdGlvbiwg c3RhdGlzdGljYWwgbW9kZWxpbmcsIG1hY2hpbmUgbGVhcm5pbmcgYW5kIG11Y2gKK21vcmUu CisKK0BkZWZmbiAoU2NoZW1lIFZhcmlhYmxlKSBqdXB5dGVyLXNlcnZpY2UtdHlwZQorVGhp cyBpcyB0aGUgdHlwZSBvZiB0aGUgSnVweXRlciBzZXJ2aWNlLCB3aG9zZSB2YWx1ZSBzaG91 bGQgYmUgYW4KK0Bjb2Rle2p1cHl0ZXItc2VydmljZS10eXBlfSBvYmplY3QsIGFzIGluIHRo aXMgZXhhbXBsZToKKworQGxpc3AKKyhzZXJ2aWNlIGp1cHl0ZXItc2VydmljZS10eXBlCisg KGp1cHl0ZXItY29uZmlndXJhdGlvbgorICAobG9nLWZpbGUgIi92YXIvbG9nL2p1cHl0ZXIu bG9nIikKKyAgKHNlcnZlci1jb25maWcKKyAgIChrZXJuZWxzIChsaXN0IGp1cHl0ZXItZ3Vp bGUta2VybmVsKSkpKSkKKworQGVuZCBsaXNwCisKK1RoZSBleGFtcGxlIGFib3ZlIHRlbGxz IHRoZSBKdXB5dGVyIHNlcnZpY2UgdG8gcHJvdmlkZSB0aGUKK0Bjb2Rle2p1cHl0ZXItZ3Vp bGUta2VybmVsfSBhcyBhbiBvcHRpb25hbCBrZXJuZWwuCitAZW5kIGRlZmZuCisKK0BkZWZ0 cCB7RGF0YSBUeXBlfSBqdXB5dGVyLWNvbmZpZ3VyYXRpb24KK0RhdGEgdHlwZSByZXByZXNl bnRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2YgQWdhdGUuCisKK0B0YWJsZSBAYXNpcworQGl0 ZW0gQGNvZGV7anVweXRlci1wYWNrYWdlfSAoZGVmYXVsdDogQGNvZGV7anVweXRlcn0pCitU aGUgSnVweXRlciBwYWNrYWdlIHRvIHVzZS4KKworCitAaXRlbSBAY29kZXtrZXJuZWxzfSAo ZGVmYXVsdDogQGNvZGV7JygpfQorQSBsaXN0IG9mIGtlcm5lbCBwYWNrYWdlcyB0byB1c2Ug d2l0aCB0aGUgSnVweXRlciBzZXJ2aWNlLgorCitAaXRlbSBAY29kZXtyb290LWRpcn0gKGRl ZmF1bHQ6IEBmaWxleyIvdmFyL2xpYi9qdXB5dGVyL25vdGVib29rcyJ9KQorVGhlIGRpcmVj dG9yeSB3aGVyZSB0aGUgSnVweXRlciBzZXJ2ZXIgbG9va3MgZm9yIEp1cHl0ZXIgbm90ZWJv b2tzLgorCitAaXRlbSBAY29kZXtsb2ctZmlsZX0gKGRlZmF1bHQ6IEBjb2RleyNmfSkKK1Ro ZSBsb2NhdGlvbiBvZiB0aGUgbG9nIGZpbGUuIElmICNmIGlzIGdpdmVuLCBubyBsb2cgaXMg cHJvZHVjZWQuCisKK0BpdGVtIEBjb2Rle3NoZWxsfSAoZGVmYXVsdDogQGNvZGV7KGZpbGUt YXBwZW5kIGJhc2ggIi9iaW4vYmFzaCIpfQorVGhlIGxvY2F0aW9uIG9mIHRoZSBzaGVsbCB1 c2VkIHdoZW4gc3RhcnRpbmcgYSB3ZWIgdGVybWluYWwgKGlmIGl0IGlzIGNvbmZpZ3VyZWQg dG8gYWxsb3cgdGVybWluYWxzKS4KKworQGl0ZW0gQGNvZGV7c2VydmVyLWNvbmZpZ30gKGRl ZmF1bHQ6IEBjb2RleyNmfSkKK0EgZmlsZSBjb250YWluaW5nIHRoZSBKdXB5dGVyIHNlcnZl cidzIGNvbmZpZyBmaWxlLiBJZiBAY29kZXsjZn0gaXMgZ2l2ZW4sIGFuIGVtcHR5IGZpbGUg aXMgcHJvZHVjZWQsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgdXNlZC4KKworQGVu ZCB0YWJsZQorQGVuZCBkZWZ0cAorCisKIEBub2RlIENlcnRpZmljYXRlIFNlcnZpY2VzCiBA c3Vic2VjdGlvbiBDZXJ0aWZpY2F0ZSBTZXJ2aWNlcwogCmRpZmYgLS1naXQgYS9nbnUvc2Vy dmljZXMvd2ViLnNjbSBiL2dudS9zZXJ2aWNlcy93ZWIuc2NtCmluZGV4IDZhMDkzY2Y0ZTQu Ljc2NzAwZGE0MTIgMTAwNjQ0Ci0tLSBhL2dudS9zZXJ2aWNlcy93ZWIuc2NtCisrKyBiL2du dS9zZXJ2aWNlcy93ZWIuc2NtCkBAIC0xNSw2ICsxNSw3IEBACiA7OzsgQ29weXJpZ2h0IMKp IDIwMjAgQXJ1biBJc2FhYyA8YXJ1bmlzYWFjQHN5c3RlbXJlYm9vdC5uZXQ+CiA7OzsgQ29w eXJpZ2h0IMKpIDIwMjAgT2xlZyBQeWtoYWxvdiA8Z28ud2lndXN0QGdtYWlsLmNvbT4KIDs7 OyBDb3B5cmlnaHQgwqkgMjAyMCwgMjAyMSBBbGV4YW5kcnUtU2VyZ2l1IE1hcnRvbiA8YnJv d24xMjE0MDdAcG9zdGVvLnJvPgorOzs7IENvcHlyaWdodCDCqSAyMDIwLCAyMDIxIEplc3Nl IEdpYmJvbnMgPGpnaWJib25zMjM1NytndWl4QGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC00MSwxMSArNDIsMTMgQEAKICAg Izp1c2UtbW9kdWxlIChnbnUgc3lzdGVtIHNoYWRvdykKICAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgYWRtaW4pCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJhc2UpCisg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ251 IHBhY2thZ2VzIGRhdGFiYXNlcykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgd2Vi KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwYXRjaHV0aWxzKQogICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBwaHApCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2Vz IHB5dGhvbikKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uLXh5eikKICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ251cGcpCiAgICM6dXNlLW1vZHVsZSAoZ251 IHBhY2thZ2VzIGd1aWxlKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBsb2dnaW5n KQpAQCAtOTEsNiArOTQsOCBAQAogCiAgICAgICAgICAgICBodHRwZC1zZXJ2aWNlLXR5cGUK IAorICAgICAgICAgICAganVweXRlci1jb25maWd1cmF0aW9uCisKICAgICAgICAgICAgIG5n aW54LWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIG5naW54LWNvbmZpZ3VyYXRpb24/CiAg ICAgICAgICAgICBuZ2lueC1jb25maWd1cmF0aW9uLW5naW54CkBAIC0xOTk0LDMgKzE5OTks MTAzIEBAIHJvb3Q9L3Nydi9nZW1pbmkKICAgICAgICAgICAoc2VydmljZS1leHRlbnNpb24g c2hlcGhlcmQtcm9vdC1zZXJ2aWNlLXR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWdhdGUtc2hlcGhlcmQtc2VydmljZSkpKQogICAgKGRlZmF1bHQtdmFsdWUgKGFnYXRl LWNvbmZpZ3VyYXRpb24pKSkpCisKKworOzs7Cis7OzsgSnVweXRlcgorOzs7CisKKyhkZWZp bmUtcHVibGljIGRlZmF1bHQtanVweXRlci1jb25maWcgIiMiKQorCisoZGVmaW5lLXJlY29y ZC10eXBlKiA8anVweXRlci1jb25maWd1cmF0aW9uPiBqdXB5dGVyLWNvbmZpZ3VyYXRpb24K KyAgICAgICAgICAgICAgICAgICAgIHRoaXMtanVweXRlci1jb25maWd1cmF0aW9uIGp1cHl0 ZXItY29uZmlndXJhdGlvbj8KKyAgICAgICAgICAgICAgICAgICAgIChqdXB5dGVyLXBhY2th Z2UganVweXRlci1jb25maWd1cmF0aW9uLWp1cHl0ZXItcGFja2FnZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCBqdXB5dGVyKSkKKyAgICAgICAg ICAgICAgICAgICAgIChrZXJuZWxzIGp1cHl0ZXItY29uZmlndXJhdGlvbi1rZXJuZWxzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAnKCkpKQorICAgICAgICAg ICAgICAgICAgICAgKHJvb3QtZGlyIGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICIvdmFyL2xpYi9qdXB5 dGVyL25vdGVib29rcyIpKQorICAgICAgICAgICAgICAgICAgICAgKGxvZy1maWxlIGp1cHl0 ZXItY29uZmlndXJhdGlvbi1sb2ctZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChkZWZhdWx0ICNmKSkKKyAgICAgICAgICAgICAgICAgICAgIChzaGVsbCBqdXB5dGVy LWNvbmZpZ3VyYXRpb24tc2hlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVm YXVsdCAoZmlsZS1hcHBlbmQgYmFzaCAiL2Jpbi9iYXNoIikpKQorICAgICAgICAgICAgICAg ICAgICAgKHNlcnZlci1jb25maWcganVweXRlci1jb25maWd1cmF0aW9uLXNlcnZlci1jb25m aWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICNmKSkp OyBUT0RPOiBNYWtlIGNvbmZpZ3VyYXRpb24gRFNMLgorCisKKyhkZWZpbmUgKHNlYXJjaC1w YXRoLXN0cmluZyBzZWFyY2gtcGF0aC1wYWlyKQorICAoc3RyaW5nLWFwcGVuZCAoc2VhcmNo LXBhdGgtc3BlY2lmaWNhdGlvbi12YXJpYWJsZSAoY2FyIHNlYXJjaC1wYXRoLXBhaXIpKQor ICAgICAgICAgICAgICAgICAiPSIKKyAgICAgICAgICAgICAgICAgKGNkciBzZWFyY2gtcGF0 aC1wYWlyKSkpCisKKzs7O1RPRE86IEFkZCBhY3Rpb25zIHRvIGxpc3QganVweXRlciBzZXJ2 ZXJzLCBjaGFuZ2UgcGFzc3dvcmRzLCBldGMuCisoZGVmaW5lIChqdXB5dGVyLXNoZXBoZXJk LXNlcnZpY2UgY29uZmlnKQorICAobGlzdCAoc2hlcGhlcmQtc2VydmljZQorICAgICAgICAg IChwcm92aXNpb24gJyhqdXB5dGVyKSkgO1RPRE86IEFkZCBtYWdpYyB0byBhbGxvdyBtdWx0 aXBsZSBKdXB5dGVyIHNlcnZlcnMKKyAgICAgICAgICAocmVxdWlyZW1lbnQgJyhsb29wYmFj aykpCisgICAgICAgICAgKHN0YXJ0ICN+KG1ha2UtZm9ya2V4ZWMtY29uc3RydWN0b3IKKyAg ICAgICAgICAgICAgICAgICAgIChsaXN0ICIvcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUv YmluL2p1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ZWJvb2siCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1jb25maWc9Igor ICAgICAgICAgICAgICAgICAgICAgIyQob3IgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1zZXJ2 ZXItY29uZmlnIGNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFpbi1m aWxlICJqdXB5dGVyX25vdGVib29rX2NvbmZpZy5weSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQtanVweXRlci1jb25maWcpKQorICAgICAgICAg ICAgICAgICAgICAgIyQoanVweXRlci1jb25maWd1cmF0aW9uLXJvb3QtZGlyIGNvbmZpZykp KQorICAgICAgICAgICAgICAgICAgICAgIzp1c2VyICJqdXB5dGVyIgorICAgICAgICAgICAg ICAgICAgICAgIzpncm91cCAianVweXRlciIKKyAgICAgICAgICAgICAgICAgICAgICM6ZW52 aXJvbm1lbnQtdmFyaWFibGVzIDsgVE9ETyB1c2Ugc2VhcmNoLXBhdGhzIG1hZ2ljIGluc3Rl YWQgb2YgaGFyZC1jb2RpbmcgdGhlc2UgdGhpbmdzLgorICAgICAgICAgICAgICAgICAgICAg KGxpc3QgIkdJX1RZUEVMSUJfUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvbGli L2dpcmVwb3NpdG9yeS0xLjAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1VJTEVf TE9BRF9DT01QSUxFRF9QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9saWIvZ3Vp bGUvMy4wL3NpdGUtY2NhY2hlOi9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9n dWlsZS9zaXRlLzMuMCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJHVUlMRV9MT0FE X1BBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3NoYXJlL2d1aWxlL3NpdGUvMy4w IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhPTUU9L3Zhci9saWIvanVweXRlciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJKVVBZVEVSX1BBVEg9L3J1bi9jdXJyZW50 LXN5c3RlbS9wcm9maWxlL3NoYXJlL2p1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAiUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvYmluOi9ydW4vY3VycmVu dC1zeXN0ZW0vcHJvZmlsZS9zYmluIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBZ VEhPTlBBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSX0xJQlNfU0lURT0v cnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2l0ZS1saWJyYXJ5LyIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICJURVhNRj0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hh cmUvdGV4bWYtZGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJURVhNRkNORj0v cnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hhcmUvdGV4bWYtZGlzdC93ZWIyYyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJYREdfREFUQV9ESVJTPS9ydW4vY3VycmVudC1z eXN0ZW0vcHJvZmlsZS9zaGFyZSIpCisKKyAgICAgICAgICAgICAgICAgICAgICM6ZGlyZWN0 b3J5ICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpciBjb25maWcpCisgICAgICAg ICAgICAgICAgICAgICAjOmxvZy1maWxlICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1sb2ct ZmlsZSBjb25maWcpKSkKKyAgICAgICAgICAoc3RvcCAjfihtYWtlLWtpbGwtZGVzdHJ1Y3Rv cikpCisgICAgICAgICAgKGRvY3VtZW50YXRpb24gIlJ1bnMgYSBKdXB5dGVyIE5vdGVib29r IHNlcnZlci4gIEEgSnVweXRlciBOb3RlYm9vayBpcyBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0 IGFsbG93cyB5b3UgdG8gY3JlYXRlIGFuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250YWlu IGxpdmUgY29kZSwgZXF1YXRpb25zLCB2aXN1YWxpemF0aW9ucywgYW5kIGV4cGxhbmF0b3J5 IHRleHQuIikpKSkKKworKGRlZmluZSAoanVweXRlci1hY2NvdW50IGNvbmZpZykKKyAgKGxp c3QKKyAgICAodXNlci1hY2NvdW50CisgICAgICAobmFtZSAianVweXRlciIpCisgICAgICAo Z3JvdXAgImp1cHl0ZXIiKQorICAgICAgKGNvbW1lbnQgIkp1cHl0ZXIgTm90ZWJvb2sgU2Vy dmVyIikKKyAgICAgIChob21lLWRpcmVjdG9yeSAiL3Zhci9saWIvanVweXRlciIpCisgICAg ICAoc2hlbGwgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1zaGVsbCBjb25maWcpKQorICAgICAg KHN5c3RlbT8gI3QpKQorICAgICh1c2VyLWdyb3VwCisgICAgICAobmFtZSAianVweXRlciIp CisgICAgICAoc3lzdGVtPyAjdCkpKSkKKworKGRlZmluZSAoanVweXRlci1wcm9maWxlIGNv bmZpZykKKyAgKGNvbnMqCisgICAgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1qdXB5dGVyLXBh Y2thZ2UgY29uZmlnKQorICAgIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24ta2VybmVscyBjb25m aWcpKSkKKworKGRlZmluZSAoanVweXRlci1hY3RpdmF0aW9uIGNvbmZpZykKKyAgI34oYmVn aW4KKyAgICAgIChsZXQgKChyb290LWRpciAjJChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9v dC1kaXIgY29uZmlnKSkKKyAgICAgICAgICAgIChwdyAoZ2V0cHduYW0gImp1cHl0ZXIiKSkp CisgICAgICAgICh1bmxlc3MgKGZpbGUtZXhpc3RzPyByb290LWRpcikKKyAgICAgICAgICAo bWtkaXIgcm9vdC1kaXIpCisgICAgICAgICAgKGNob3duIHJvb3QtZGlyIChwYXNzd2Q6dWlk IHB3KQorICAgICAgICAgICAgICAgICAocGFzc3dkOmdpZCBwdykpCisgICAgICAgICAgKGNo bW9kIHJvb3QtZGlyICNvNzAwKSkpKSkKKworKGRlZmluZS1wdWJsaWMganVweXRlci1zZXJ2 aWNlLXR5cGUKKyAgKHNlcnZpY2UtdHlwZQorICAgIChuYW1lICJqdXB5dGVyIikKKyAgICAo ZXh0ZW5zaW9ucyAobGlzdAorICAgICAgICAgICAgICAgICAgKHNlcnZpY2UtZXh0ZW5zaW9u IHNoZXBoZXJkLXJvb3Qtc2VydmljZS10eXBlIGp1cHl0ZXItc2hlcGhlcmQtc2VydmljZSkK KyAgICAgICAgICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBhY2NvdW50LXNlcnZpY2Ut dHlwZSBqdXB5dGVyLWFjY291bnQpCisgICAgICAgICAgICAgICAgICAoc2VydmljZS1leHRl bnNpb24gYWN0aXZhdGlvbi1zZXJ2aWNlLXR5cGUganVweXRlci1hY3RpdmF0aW9uKQorICAg ICAgICAgICAgICAgICAgKHNlcnZpY2UtZXh0ZW5zaW9uIHByb2ZpbGUtc2VydmljZS10eXBl IGp1cHl0ZXItcHJvZmlsZSkpKQorICAgIChkZXNjcmlwdGlvbiAiUnVucyBhIEp1cHl0ZXIg Tm90ZWJvb2sgc2VydmVyLiAgQSBKdXB5dGVyIE5vdGVib29rIGlzIGEgd2ViIGFwcGxpY2F0 aW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgYW5kIHNoYXJlIGRvY3VtZW50cyB0aGF0 IGNvbnRhaW4gbGl2ZSBjb2RlLCBlcXVhdGlvbnMsIHZpc3VhbGl6YXRpb25zLCBhbmQgZXhw bGFuYXRvcnkgdGV4dC4iKQorICAgIChkZWZhdWx0LXZhbHVlIChqdXB5dGVyLWNvbmZpZ3Vy YXRpb24pKSkpCi0tIAoyLjMzLjAKCg== --------------FE9D4055B54C5083D69FF778-- From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 28 15:17:38 2021 Received: (at 50708) by debbugs.gnu.org; 28 Sep 2021 19:17:38 +0000 Received: from localhost ([127.0.0.1]:47026 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mVIbh-0005t4-Br for submit@debbugs.gnu.org; Tue, 28 Sep 2021 15:17:38 -0400 Received: from h87-96-130-155.cust.a3fiber.se ([87.96.130.155]:35436 helo=mail.yoctocell.xyz) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mVIbf-0005sr-2a for 50708@debbugs.gnu.org; Tue, 28 Sep 2021 15:17:36 -0400 From: Xinglu Chen DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yoctocell.xyz; s=mail; t=1632856644; bh=gbF0IEUYTXNx0QXjC2vodx6M76RCGo+BUf+8zh0uHuQ=; h=From:To:Subject:In-Reply-To:Date; b=gSpg9ZfgDGh3VURUzSjtI1FWAXV3ann1u+XI6GFqVNawjOXwUVOmiBlwiwGjLHbZZ cgzCNjetsTlV7nKxBmUdA8FJOSpASnlkEauhGzeWBbGr2LZVISGD1cJu08VpCjr8mf nT+NK/+duq+plv4b2xZSEtvFbYkE1VOjyav1KI04= To: Jesse , 50708@debbugs.gnu.org Subject: Re: [bug#50708] [PATCH] gnu: web: Add jupyter-service In-Reply-To: Date: Tue, 28 Sep 2021 21:17:23 +0200 Message-ID: <87bl4c33y4.fsf@yoctocell.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Wed, Sep 22 2021, Jesse wrote: > Attached is yet another updated patch fixing a mistake in the added > documentation. > > On 9/21/21 7:26 PM, Jesse wrote: >> Attached is an updated patch. > From d264da0811480a8d2acd5e73f58d320e15bf [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: yoctocell.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD 0.4 RDNS_DYNAMIC Delivered to internal network by host with dynamic-looking rDNS 0.0 PDS_RDNS_DYNAMIC_FP RDNS_DYNAMIC with FP steps X-Debbugs-Envelope-To: 50708 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Wed, Sep 22 2021, Jesse wrote: > Attached is yet another updated patch fixing a mistake in the added > documentation. > > On 9/21/21 7:26 PM, Jesse wrote: >> Attached is an updated patch. > From d264da0811480a8d2acd5e73f58d320e15bf [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: yoctocell.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD 0.4 RDNS_DYNAMIC Delivered to internal network by host with dynamic-looking rDNS 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager 0.0 PDS_RDNS_DYNAMIC_FP RDNS_DYNAMIC with FP steps --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Wed, Sep 22 2021, Jesse wrote: > Attached is yet another updated patch fixing a mistake in the added=20 > documentation. > > On 9/21/21 7:26 PM, Jesse wrote: >> Attached is an updated patch. > From d264da0811480a8d2acd5e73f58d320e15bfa9f3 Mon Sep 17 00:00:00 2001 > From: Jesse > Date: Mon, 20 Sep 2021 16:01:22 -0600 > Subject: [PATCH] gnu: web: Add jupyter-service > > * gnu/services/web.scm (gitile-service-type): New variable. > * doc/guix.texi (Version Control Services): Document it. > --- > doc/guix.texi | 52 +++++++++++++++++++ > gnu/services/web.scm | 120 +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 172 insertions(+) It would also be good to have a test for the service. You can look at at (gnu tests ...) modules for some inspiration. > diff --git a/doc/guix.texi b/doc/guix.texi > index 6436e83a7c..0f8aaca413 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -26197,6 +26197,58 @@ The file which should store the logging output o= f Agate. > @end table > @end deftp >=20=20 > +@cindex jupyter > +The Jupyter Notebook is a web application that allows you to create > +and share documents that contain live code, equations, visualizations > +and explanatory text. Uses include: data cleaning and transformation, > +numerical simulation, statistical modeling, machine learning and much > +more. > + > +@deffn (Scheme Variable) jupyter-service-type > +This is the type of the agate service, whose value should be an Agate service? The Jupyter service doesn=E2=80=99t seem to use Agate anywh= ere. > +@code{jupyter-service-type} object, as in this example: > + > +@lisp > +(service jupyter-service-type > + (jupyter-configuration > + (log-file "/var/log/jupyter.log") > + (server-config > + (kernels > + (list jupyter-guile-kernel))))) > + > +@end lisp The indentation looks incorrect. Also the trailing newline isn=E2=80=99t necessary. Something like =2D-8<---------------cut here---------------start------------->8--- (service jupyter-service-type (jupyter-configuration (log-file "/var/log/jupyter.log") (server-config (kernels (list jupyter-guile-kernel))))) =2D-8<---------------cut here---------------end--------------->8--- > +The example above tells the the Jupyter service to provide the > +@code{jupyter-guile-kernel} as an optional kernel. > +@end deffn > + > +@deftp {Data Type} jupyter-configuration > +Data type representing the configuration of Agate. s/Agate/Jupyter/ ? > +@table @asis > +@item @code{jupyter-package} (default: @code{jupyter}) > +The jupyter package to use. =E2=80=9Cjupyter=E2=80=9D should be capitalized. > + > + > +@item @code{kernels} (default: @code{'()} > +A list of kernel packages to use with the jupyter service. > + > +@item @code{root-dir} (default: @file{"/var/lib/jupyter/notebooks"}) > +The directory where the jupyter server looks for jupyter notebooks. > + > +@item @code{log-file} (default: @code{#f}) > +The location of the log file. If #f is given, no log is produced. ^ There should be two spaces after a period. > +@item @code{shell} (default: @code{(file-append bash "/bin/bash")} > +The location of the shell used when starting a web terminal (if it is co= nfigured to allow terminals). Line should be kept at <=3D80 chars. > +@item @code{server-config} (default: @code{#f}) > +A file contianing the jupyter server's config file. If @code{#f} is give= n, an empty file is produced, and the default settings are used. Likewise (<=3D80 line length). What exactly does =E2=80=9CA file=E2=80=9D = mean, do you mean =E2=80=9Cfile-like objects=E2=80=9D (see =E2=80=9C8.10 G-Expressions= =E2=80=9D in the manual)? The example config doesn=E2=80=99t seem to provide anything =E2=80=9CA file= =E2=80=9D either =2D-8<---------------cut here---------------start------------->8--- (service jupyter-service-type (jupyter-configuration (log-file "/var/log/jupyter.log") (server-config (kernels (list jupyter-guile-kernel))))) =2D-8<---------------cut here---------------end--------------->8--- =E2=80=98kernels=E2=80=99 doesn=E2=80=99t seem to be a procedure or macro, = but rather a field in the =E2=80=98jupyter-configuration=E2=80=99 record, so the example needs to= be fixed as well. > + > +@end table > +@end deftp > + > + > @node Certificate Services > @subsection Certificate Services >=20=20 > diff --git a/gnu/services/web.scm b/gnu/services/web.scm > index 6a093cf4e4..2d2946f7a7 100644 > --- a/gnu/services/web.scm > +++ b/gnu/services/web.scm > @@ -15,6 +15,7 @@ > ;;; Copyright =C2=A9 2020 Arun Isaac > ;;; Copyright =C2=A9 2020 Oleg Pykhalov > ;;; Copyright =C2=A9 2020, 2021 Alexandru-Sergiu Marton > +;;; Copyright =C2=A9 2020, 2021 Jesse Gibbons > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -41,11 +42,13 @@ > #:use-module (gnu system shadow) > #:use-module (gnu packages admin) > #:use-module (gnu packages base) > + #:use-module (gnu packages bash) > #:use-module (gnu packages databases) > #:use-module (gnu packages web) > #:use-module (gnu packages patchutils) > #:use-module (gnu packages php) > #:use-module (gnu packages python) > + #:use-module (gnu packages python-xyz) > #:use-module (gnu packages gnupg) > #:use-module (gnu packages guile) > #:use-module (gnu packages logging) > @@ -91,6 +94,8 @@ >=20=20 > httpd-service-type >=20=20 > + jupyter-configuration > + > nginx-configuration > nginx-configuration? > nginx-configuration-nginx > @@ -1994,3 +1999,118 @@ root=3D/srv/gemini > (service-extension shepherd-root-service-type > agate-shepherd-service))) > (default-value (agate-configuration)))) > + > + > +;;; Jupyter configuration > +;;; Jupyter server configuration > +;;; -> includes a list of kernels to allow in the jupyter server > +;;; -> includes a list of configuration options specifically for the jup= yter server > +;;; --> These options can be concatenated to a python file > +;;; --> Nested alist > +;;; ---> '((NotebookApp (allow-remote-access #t))) -> "c.NotebookApp.all= ow_remote_access =3D True" > +;;; -> Include some settings specifying how to run the daemon > +;;; --> location of log file > +;;; --> If a console should be allowed, the location of the shell to be = used. > +;;; --> The package containing the jupyter server itself, default jupyter What do these arrows mean? Also, keep lines <=3D80 chars wide. > +(define-public default-jupyter-config "#") Does the default config have to contain a =E2=80=9C#=E2=80=9D, can=E2=80=99= t it just be an empty string? > + > +(define-record-type* jupyter-configuration > + this-jupyter-configuration jupyter-configuration? > + (jupyter-package jupyter-configuration-jupyter-pack= age > + (default jupyter)) > + (kernels jupyter-configuration-kernels > + (default '())) > + (root-dir jupyter-configuration-root-dir > + (default "/var/lib/jupyter/notebooks")) > + (log-file jupyter-configuration-log-file > + (default #f)) I think it would be good to have a log file by default. > + (shell jupyter-configuration-shell > + (default (file-append bash "/bin/bash"))) > + (server-config jupyter-configuration-server-config > + (default #f))); TODO: Make configura= tion DSL. > + > + > +(define (search-path-string search-path-pair) > + (string-append (search-path-specification-variable (car search-path-pa= ir)) > + "=3D" > + (cdr search-path-pair))) Prefer =E2=80=98match=E2=80=99 over =E2=80=98car=E2=80=99 and =E2=80=98cdr= =E2=80=99. > + > +;;;TODO: Add actions to list jupyter servers, change passwords, etc. > +(define (jupyter-shepherd-service config) > + (list (shepherd-service > + (provision '(jupyter)) ;TODO: Add magic to allow multiple Jupy= ter servers > + (requirement '(loopback)) > + (start #~(make-forkexec-constructor > + (list "/run/current-system/profile/bin/jupyter" > + "notebook" > + (string-append "--config=3D" > + #$(or (jupyter-configuration-server-config config) > + (plain-file "jupyter_notebook_config.py" > + default-jupyter-config)) > + #$(jupyter-configuration-root-dir config))) Prefer =E2=80=98match=E2=80=99 instead of using accessor procedures. Somet= hing like =2D-8<---------------cut here---------------start------------->8--- (match config (($ _ _ root-dir log-file _ server-config) (list (shepherd-service ...)))) =2D-8<---------------cut here---------------end--------------->8--- > + #:user "jupyter" > + #:group "jupyter" > + #:environment-variables ; TODO use search-paths mag= ic instead of hard-coding these things. > + (list "GI_TYPELIB_PATH=3D/run/current-system/profil= e/lib/girepository-1.0" > + "GUILE_LOAD_COMPILED_PATH=3D/run/current-syst= em/profile/lib/guile/3.0/site-ccache:/run/current-system/profile/share/guil= e/site/3.0" > + "GUILE_LOAD_PATH=3D/run/current-system/profil= e/share/guile/site/3.0" > + "HOME=3D/var/lib/jupyter" > + "JUPYTER_PATH=3D/run/current-system/profile/s= hare/jupyter" > + "PATH=3D/run/current-system/profile/bin:/run/= current-system/profile/sbin" > + "PYTHONPATH=3D/run/current-system/profile/lib= /python3.8/site-packages" > + "R_LIBS_SITE=3D/run/current-system/profile/si= te-library/" > + "TEXMF=3D/run/current-system/profile/share/te= xmf-dist" > + "TEXMFCNF=3D/run/current-system/profile//shar= e/texmf-dist/web2c" > + "XDG_DATA_DIRS=3D/run/current-system/profile/= share") > + > + #:directory #$(jupyter-configuration-root-dir confi= g) > + #:log-file #$(jupyter-configuration-log-file config= ))) > + (stop #~(make-kill-destructor)) > + (documentation "Runs a Jupyter Notebook server. A Jupyter Note= book is a web application that allows you to create and share documents tha= t contain live code, equations, visualizations, and explanatory text.")))) Watch the line length! :-) > + > +(define (jupyter-account config) > + (list > + (user-account > + (name "jupyter") > + (group "jupyter") > + (comment "Jupyter Notebook Server") > + (home-directory "/var/lib/jupyter") > + (shell (jupyter-configuration-shell config)) > + (system? #t)) > + (user-group > + (name "jupyter") > + (system? #t)))) > + > +(define (jupyter-profile config) > + (cons* > + (jupyter-configuration-jupyter-package config) > + (jupyter-configuration-kernels config))) Prefer =E2=80=98match=E2=80=99 instead of using accessor procedures. > + > +(define (jupyter-activation config) > + #~(begin > + (let ((root-dir #$(jupyter-configuration-root-dir config)) > + (pw (getpwnam "jupyter"))) > + (unless (file-exists? root-dir) > + (mkdir root-dir) > + (chown root-dir (passwd:uid pw) > + (passwd:gid pw)) > + (chmod root-dir #o700))))) > + > +;;; Jupyter service type > +;;; -> Information vital to settinng up the server, like the port and ac= cepted parameters > +;;; -> list of kernels considered permissible. > +;;; -> a shepherd service extension that runs the jupyter server > +;;; --> shepherd service to list the running servers, set the password, = etc. > +;;; --> Make a log file only readable by root? > +;;; -> an accounts service extension describing the user that runs the a= ccounts > +;;; --> group "jupyter" > +(define-public jupyter-service-type > + (service-type > + (name "jupyter") > + (extensions (list > + (service-extension shepherd-root-service-type jupyter-= shepherd-service) > + (service-extension account-service-type jupyter-accoun= t) > + (service-extension activation-service-type jupyter-act= ivation) > + (service-extension profile-service-type jupyter-profil= e))) > + (description "Runs a Jupyter Notebook server. A Jupyter Notebook is = a web application that allows you to create and share documents that contai= n live code, equations, visualizations, and explanatory text.") Keep lines <=3D80 chars, and use double-spacing. > + (default-value (jupyter-configuration)))) > --=20 > 2.33.0 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJJBAEBCAAzFiEEAVhh4yyK5+SEykIzrPUJmaL7XHkFAmFTakMVHHB1YmxpY0B5 b2N0b2NlbGwueHl6AAoJEKz1CZmi+1x5ZeEQALpe1vcjYaUg+tpPsIRIcrgG6AGX uy44G76f6iodJ61ORImldfIQ7fJWpBRWtFecPOhfuhgFYdoNaGf7poNSF4mRYtgp 0ZPVcQbgOqcxxFy7RASsREtDiSqDdWQwoptEkjryAP3L5hxc7G9rLCVIFKV8WqLj NHQwSV4JLhik003j2awu1SvGbYHQlANwQt9uC3Yh18vmrBEzucqrB1d7iIyevR8e PGAz7Z6TYCRf5x3JDYK4CGq4bsgpPHjjyiioAkQ5Pgb8OMIeHkb0zWIt10o1Cv1p aVinhx3Naf/w1emaad3TL7rG42aN4aPDlLCykLDUwJqlgLJ0hz2BAE4CfhCA2Sl/ uudwNmN14O8slEK8pU/HgzgAXxuYG8iLgx7/zY6RkKxqLmfKLl5N8zx9uE1iImLE 8maGetj9/x8yMfbnlZHMBYT0RQsUEbo/srMGfFNcBQlzoF1lKABIVqkRnBpH+NMt ogdolWuSqdpLIdKnNGdxoCbk/bXH1YLrX+aHJZz3qLrPbodtm97WR2KnV5/bf04Z 1ns96yMUPX2pcu//3fkU2yrYjBPNL/DOo96jbD88BlmRxIq+rWS1k0PuKD0otjYE lKjKrSSKWwFoAwyKJkdde7vttHVFFtpqSc3fbeCS1hPoZR5w/RqOSKwaikrabCw2 2LSBikYlfHUKb6Cv =+0pq -----END PGP SIGNATURE----- --=-=-=--