GNU bug report logs - #45284
[PATCH] gnu: protonvpn-cli: Update to 2.2.6.

Previous Next

Package: guix-patches;

Reported by: Ryan Prior <rprior <at> protonmail.com>

Date: Thu, 17 Dec 2020 04:54:01 UTC

Severity: normal

Tags: patch

Done: Leo Famulari <leo <at> famulari.name>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 45284 in the body.
You can then email your comments to 45284 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Thu, 17 Dec 2020 04:54:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ryan Prior <rprior <at> protonmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Thu, 17 Dec 2020 04:54:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ryan Prior <rprior <at> protonmail.com>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: protonvpn-cli: Update to 2.2.6.
Date: Thu, 17 Dec 2020 04:53:04 +0000
* gnu/packages/vpn.scm (protonvpn-cli): Update to 2.2.6.
  - Propagates all packages needed to connect.
---
 gnu/packages/vpn.scm | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 0c504ca6cc..4c9cb16209 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -351,7 +351,7 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
 (define-public protonvpn-cli
   (package
     (name "protonvpn-cli")
-    (version "2.2.4")
+    (version "2.2.6")
     (source
      (origin
        ;; PyPI has a ".whl" file but not a proper source release.
@@ -363,7 +363,7 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08yca0a0prrnrc7ir7ajd56yxvxpcs4m1k8f5kf273f5whgr7wzw"))))
+         "0y7v9ikrmy5dbjlpbpacp08gy838i8z54m8m4ps7ldk1j6kyia3n"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f)) ; no tests in repo
     (native-inputs
@@ -373,8 +373,13 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
        ("python-pythondialog" ,python-pythondialog)
        ("python-requests" ,python-requests)))
     (propagated-inputs
-     `(("openvpn" ,openvpn)
-       ("dialog" ,dialog)))
+     `(("dialog" ,dialog)
+       ("iproute2" ,iproute)
+       ("iptables" ,iptables)
+       ("ncurses" ,ncurses)
+       ("openvpn" ,openvpn)
+       ("procps" ,procps)
+       ("which" ,which)))
     (synopsis "Command-line client for ProtonVPN")
     (description
      "This is the official command-line interface for ProtonVPN, a secure
-- 
2.29.2






Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Thu, 17 Dec 2020 04:58:01 GMT) Full text and rfc822 format available.

Message #8 received at 45284 <at> debbugs.gnu.org (full text, mbox):

From: Ryan Prior <rprior <at> protonmail.com>
To: "45284 <at> debbugs.gnu.org" <45284 <at> debbugs.gnu.org>
Subject: Propagated packages
Date: Thu, 17 Dec 2020 04:57:24 +0000
[Message part 1 (text/plain, inline)]
This protonvpn-cli package propagates a bunch of things, even moreso than before. I've verified that it needs them to connect, but I think we can avoid propagating them if I carefully go in and patch the system shell invocations to use explicit paths.

I don't know when I'll have time to do that, so I'd recommend merging this patch to make the latest protonvpn-cli available. In any case I'll try and get a patched package with minimal if any propagation out ASAP.

Cheers,
Ryan
[Message part 2 (text/html, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Thu, 17 Dec 2020 09:56:02 GMT) Full text and rfc822 format available.

Message #11 received at 45284 <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: Ryan Prior <rprior <at> protonmail.com>
Cc: "45284 <at> debbugs.gnu.org" <45284 <at> debbugs.gnu.org>
Subject: Re: [bug#45284] Propagated packages
Date: Thu, 17 Dec 2020 11:55:45 +0200
[Message part 1 (text/plain, inline)]
On Thu, Dec 17, 2020 at 04:57:24AM +0000, Ryan Prior via Guix-patches via wrote:
> This protonvpn-cli package propagates a bunch of things, even moreso than before. I've verified that it needs them to connect, but I think we can avoid propagating them if I carefully go in and patch the system shell invocations to use explicit paths.
> 
> I don't know when I'll have time to do that, so I'd recommend merging this patch to make the latest protonvpn-cli available. In any case I'll try and get a patched package with minimal if any propagation out ASAP.
> 

Does the current protonvpn-cli not work? That is a lot of propagated
inputs. Is it possible to wrap the binary instead?

-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Wed, 23 Dec 2020 03:39:01 GMT) Full text and rfc822 format available.

Message #14 received at 45284 <at> debbugs.gnu.org (full text, mbox):

From: Ryan Prior <rprior <at> protonmail.com>
To: 45284 <at> debbugs.gnu.org
Subject: [PATCH] gnu: protonvpn-cli: Stop propagating inputs.
Date: Wed, 23 Dec 2020 03:38:08 +0000
* gnu/packages/vpn.scm (protonvpn-cli): Stop propagating inputs.
  - Adds all necessary inputs.
  - Wraps entrypoint to avoid propagation.
---
 gnu/packages/vpn.scm | 37 +++++++++++++++++++++++++++++++------
 1 file changed, 31 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index c1f0b65e84..72ca9ee31b 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -364,16 +364,41 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
        (sha256
         (base32 "0y7v9ikrmy5dbjlpbpacp08gy838i8z54m8m4ps7ldk1j6kyia3n"))))
     (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; no tests in repo
+    (arguments
+     '(#:tests? #f ; no tests in repo
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'wrap 'wrap-wrapper
+           ;; Wrap entrypoint with paths to its hard dependencies.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((entrypoint (string-append (assoc-ref outputs "out") "/bin/.protonvpn-real")))
+               (wrap-program entrypoint
+                            `("PATH" ":" prefix
+                              ,(map (lambda (name)
+                                      (let ((input (assoc-ref inputs name)))
+                                        (string-append input "/bin:"
+                                                       input "/sbin")))
+                                    (list "dialog"
+                                          "iproute2"
+                                          "iptables"
+                                          "ncurses"
+                                          "openvpn"
+                                          "procps"
+                                          "which")))))
+             #t)))))
     (native-inputs
      `(("python-docopt" ,python-docopt)))
     (inputs
-     `(("python-jinja2" ,python-jinja2)
+     `(("dialog" ,dialog)
+       ("iproute2" ,iproute)
+       ("iptables" ,iptables)
+       ("ncurses" ,ncurses)
+       ("openvpn" ,openvpn)
+       ("procps" ,procps)
+       ("python-jinja2" ,python-jinja2)
        ("python-pythondialog" ,python-pythondialog)
-       ("python-requests" ,python-requests)))
-    (propagated-inputs
-     `(("openvpn" ,openvpn)
-       ("dialog" ,dialog)))
+       ("python-requests" ,python-requests)
+       ("which" ,which)))
     (synopsis "Command-line client for ProtonVPN")
     (description
      "This is the official command-line interface for ProtonVPN, a secure
-- 
2.29.2






Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Wed, 23 Dec 2020 03:44:02 GMT) Full text and rfc822 format available.

Message #17 received at 45284 <at> debbugs.gnu.org (full text, mbox):

From: Ryan Prior <rprior <at> protonmail.com>
To: "45284 <at> debbugs.gnu.org" <45284 <at> debbugs.gnu.org>
Subject: Double wrapper for protonvpn
Date: Wed, 23 Dec 2020 03:42:48 +0000
[Message part 1 (text/plain, inline)]
Hi there! This patch updates the protonvpn-cli package to use a wrapper, so now it doesn't propagate anything.

I ran into a hitch when wrapping the program the same way it's typically done didn't work. I was getting a "bad interpreter" error from the kernel when I ran the program. Digging into it, I discovered it's because the program was double-wrapped, and the second wrapping garbled the work done by the first wrapping.

Investigating further, I determined the messiness stems from python-build-system automatically wrapping my output for me to set the PYTHONPATH. From my searching in gnu/packages/python-* sources, there isn't much explicit wrapping in python land.
So y'all know me, I decided to try the dumbest possible thing first: I wrapped the wrapper.

It works fine. But you end up with a situation like:
- invoke protonvpn
- which sets PYTHONPATH and invokes .protonvpn-real
- which sets PATH and calls ..protonvpn-real-real

Additionally, in the build output we have a "wrap" phase and then a "wrap-wrapper" phase.

So what do you think? Is my dumb solution that works thus not dumb, and we should ship it? Or is there a better way of composing wrappers so that I'm not creating this billiards game situation with the entrypoint?

Cheers,
Ryan
[Message part 2 (text/html, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Thu, 24 Dec 2020 21:22:02 GMT) Full text and rfc822 format available.

Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Ryan Prior via Guix-patches via <guix-patches <at> gnu.org>
Cc: 45284 <at> debbugs.gnu.org
Subject: Re: [bug#45284] [PATCH] gnu: protonvpn-cli: Stop propagating inputs.
Date: Thu, 24 Dec 2020 16:20:56 -0500
On Wed, Dec 23, 2020 at 03:38:08AM +0000, Ryan Prior via Guix-patches via wrote:
> * gnu/packages/vpn.scm (protonvpn-cli): Stop propagating inputs.
>   - Adds all necessary inputs.
>   - Wraps entrypoint to avoid propagation.

Thanks! I wrote the commit message and pushed as bcfa8b4a285c4948b61bc7297ade28a7c0e59e2c




Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Thu, 24 Dec 2020 21:22:02 GMT) Full text and rfc822 format available.

Message #23 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Ryan Prior via Guix-patches via <guix-patches <at> gnu.org>
Cc: "45284 <at> debbugs.gnu.org" <45284-done <at> debbugs.gnu.org>
Subject: Re: [bug#45284] Double wrapper for protonvpn
Date: Thu, 24 Dec 2020 16:21:50 -0500
On Wed, Dec 23, 2020 at 03:42:48AM +0000, Ryan Prior via Guix-patches via wrote:
> So what do you think? Is my dumb solution that works thus not dumb, and we should ship it? Or is there a better way of composing wrappers so that I'm not creating this billiards game situation with the entrypoint?

There are plenty of Guix packages that create multiple wrappers. I'm
sure there is room for improvement but this is fine if it works for you.




Information forwarded to guix-patches <at> gnu.org:
bug#45284; Package guix-patches. (Thu, 24 Dec 2020 21:22:02 GMT) Full text and rfc822 format available.

Reply sent to Leo Famulari <leo <at> famulari.name>:
You have taken responsibility. (Thu, 24 Dec 2020 21:22:03 GMT) Full text and rfc822 format available.

Notification sent to Ryan Prior <rprior <at> protonmail.com>:
bug acknowledged by developer. (Thu, 24 Dec 2020 21:22:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 22 Jan 2021 12:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 93 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.