diff mbox series

[bug#45284] gnu: protonvpn-cli: Update to 2.2.6.

Message ID 20201217045258.3365-1-rprior@protonmail.com
State Accepted
Headers show
Series [bug#45284] gnu: protonvpn-cli: Update to 2.2.6. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Ryan Prior Dec. 17, 2020, 4:53 a.m. UTC
* 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(-)

Comments

Ryan Prior Dec. 17, 2020, 4:57 a.m. UTC | #1
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
Efraim Flashner Dec. 17, 2020, 9:55 a.m. UTC | #2
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?
Ryan Prior Dec. 23, 2020, 3:42 a.m. UTC | #3
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
Leo Famulari Dec. 24, 2020, 9:21 p.m. UTC | #4
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.
diff mbox series

Patch

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