[PATCH] gnu: Add protonvpn-cli.

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Ryan Prior
Owner
unassigned
Submitted by
Ryan Prior
Severity
normal
R
R
Ryan Prior wrote on 21 May 2020 05:29
(address . guix-patches@gnu.org)
20200521032943.26115-1-rprior@protonmail.com
* gnu/packages/vpn.scm (protonvpn-cli): New variable.
---
gnu/packages/vpn.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (61 lines)
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index da881493bf..b47cad2ae0 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -55,6 +56,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages python-web)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml))
@@ -311,6 +313,38 @@ security protocol that utilizes SSL/TLS for key exchange. It is capable of
traversing network address translators (@dfn{NAT}s) and firewalls.")
(license license:gpl2)))
+(define-public protonvpn-cli
+ (package
+ (name "protonvpn-cli")
+ (version "2.2.2")
+ (source
+ (origin
+ ;; PyPI has a ".whl" file but not a proper source release.
+ ;; Thus, fetch code from Git.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ProtonVPN/linux-cli.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ixjb02kj4z79whm1izd8mrn2h0rp9cmw4im1qvp93rahqxdd4n8"))))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f))
+ (native-inputs
+ `(("docopt" ,python-docopt)))
+ (inputs
+ `(("pythondialog" ,python-pythondialog)
+ ("requests" ,python-requests)))
+ (propagated-inputs
+ `(("openvpn" ,openvpn)))
+ (synopsis "Command-line client for ProtonVPN")
+ (description
+ "ProtonVPN is a secure point-to-point virtual private networking service
+with a gratis tier.")
+ (home-page "https://github.com/ProtonVPN/linux-cli")
+ (license license:gpl3)))
+
(define-public tinc
(package
(name "tinc")
--
2.26.2
L
L
Ludovic Courtès wrote on 23 May 2020 16:17
(name . Ryan Prior)(address . rprior@protonmail.com)(address . 41431@debbugs.gnu.org)
87o8qe68hh.fsf@gnu.org
Hi,

Ryan Prior <rprior@protonmail.com> skribis:

Toggle quote (2 lines)
> * gnu/packages/vpn.scm (protonvpn-cli): New variable.

Overall LGTM, with minor issues:

Toggle quote (2 lines)
> + (arguments '(#:tests? #f))

When enabling the tests, I get:

Toggle snippet (16 lines)
starting phase `check'
running "python setup.py" with command "test" and parameters ()
running test
running egg_info
writing protonvpn_cli.egg-info/PKG-INFO
writing dependency_links to protonvpn_cli.egg-info/dependency_links.txt
writing entry points to protonvpn_cli.egg-info/entry_points.txt
writing requirements to protonvpn_cli.egg-info/requires.txt
writing top-level names to protonvpn_cli.egg-info/top_level.txt
reading manifest file 'protonvpn_cli.egg-info/SOURCES.txt'
writing manifest file 'protonvpn_cli.egg-info/SOURCES.txt'
running build_ext
error: [Errno 13] Permission denied: '/.pvpn-cli'
command "python" "-c" "import setuptools, tokenize;__file__='setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" failed with status 1

So there are definitely tests, but for some reason they’re not working
as expected. Could you take a look? (In general we don’t disable tests
unless there’s a compelling reason to do so.)

Toggle quote (6 lines)
> + (description
> + "ProtonVPN is a secure point-to-point virtual private networking service
> +with a gratis tier.")
> + (home-page "https://github.com/ProtonVPN/linux-cli")
> + (license license:gpl3)))

This is ‘gpl3+’ AFAICS since nothing says “version 3 only.”

Could you send an updated patch?

Bonus points if you expound the description a bit. :-)

Thanks,
Ludo’.
R
R
Ryan Prior wrote on 23 May 2020 21:11
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 41431@debbugs.gnu.org)
FcbDXqVEwHrupr0XmpHuOF2BQE1lctUHTPQvcjNxWeJA1O3yjKsuP20q-uGCKTphx1_xKHN0Paet8Cwfld9fsIAau-GnHlzQyIohHTm0FIg=@protonmail.com
??????? Original Message ???????
On Saturday, May 23, 2020 2:17 PM, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (2 lines)
> there are definitely tests

What makes you so sure? `grep -r '\Wtest' .` suggests that the only reference to testing in the whole repo is in protonvpn_cli/utils.py (wait_for_network) which tests for a network connection at runtime. I don't think they are shipping any tests; setup.py can test to make sure you can actually install your dependencies, but that's not a meaningful upstream test, it's a default behavior.


Toggle quote (4 lines)
> > - (license license:gpl3)))
>
> This is ‘gpl3+’ AFAICS since nothing says “version 3 only.”

Nothing says "or any later version" either—I had been under the impression that the "plus" was opt-in, but reading GPLv3 again it appears to be opt-out. I don't know, that's not my area of expertise. I've updated the patch to gpl3+ with your recommendation in any case.

Toggle quote (4 lines)
> Could you send an updated patch?
>
> Bonus points if you expound the description a bit. :-)

Of course! Here you go.


Thanks,
Ryan
From e24ca007737ab7f6e7572cee2b827578ff42a36a Mon Sep 17 00:00:00 2001
From: Ryan Prior <rprior@protonmail.com>
Date: Wed, 20 May 2020 22:28:11 -0500
Subject: [PATCH] gnu: Add protonvpn-cli.

* gnu/packages/vpn.scm (protonvpn-cli): New variable.
---
gnu/packages/vpn.scm | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)

Toggle diff (63 lines)
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index da881493bf..8f7fb3b577 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -55,6 +56,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages python-web)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml))
@@ -311,6 +313,40 @@ security protocol that utilizes SSL/TLS for key exchange. It is capable of
traversing network address translators (@dfn{NAT}s) and firewalls.")
(license license:gpl2)))
+(define-public protonvpn-cli
+ (package
+ (name "protonvpn-cli")
+ (version "2.2.2")
+ (source
+ (origin
+ ;; PyPI has a ".whl" file but not a proper source release.
+ ;; Thus, fetch code from Git.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ProtonVPN/linux-cli.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ixjb02kj4z79whm1izd8mrn2h0rp9cmw4im1qvp93rahqxdd4n8"))))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f)) ; no tests in repo
+ (native-inputs
+ `(("docopt" ,python-docopt)))
+ (inputs
+ `(("pythondialog" ,python-pythondialog)
+ ("requests" ,python-requests)))
+ (propagated-inputs
+ `(("openvpn" ,openvpn)))
+ (synopsis "Command-line client for ProtonVPN")
+ (description
+ "Official CLI for ProtonVPN, a secure point-to-point virtual private
+networking service with a gratis tier. It can automatically find and connect
+to the fastest servers or use TOR over VPN. The gratis tier offers unlimited
+bandwidth for up to 10 devices.")
+ (home-page "https://github.com/ProtonVPN/linux-cli")
+ (license license:gpl3+)))
+
(define-public tinc
(package
(name "tinc")
--
2.26.2
L
L
Ludovic Courtès wrote on 24 May 2020 22:02
(name . Ryan Prior)(address . rprior@protonmail.com)(address . 41431-done@debbugs.gnu.org)
87zh9x2j9z.fsf@gnu.org
Hi,

Ryan Prior <rprior@protonmail.com> skribis:

Toggle quote (7 lines)
> ??????? Original Message ???????
> On Saturday, May 23, 2020 2:17 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> there are definitely tests
>
> What makes you so sure? `grep -r '\Wtest' .` suggests that the only reference to testing in the whole repo is in protonvpn_cli/utils.py (wait_for_network) which tests for a network connection at runtime. I don't think they are shipping any tests; setup.py can test to make sure you can actually install your dependencies, but that's not a meaningful upstream test, it's a default behavior.

Oh my bad. I was fooled by the fact that “something” seemed to be
happening when enabling tests.

Toggle quote (6 lines)
>> > - (license license:gpl3)))
>>
>> This is ‘gpl3+’ AFAICS since nothing says “version 3 only.”
>
> Nothing says "or any later version" either—I had been under the impression that the "plus" was opt-in, but reading GPLv3 again it appears to be opt-out. I don't know, that's not my area of expertise. I've updated the patch to gpl3+ with your recommendation in any case.

Right, there’s this paragraph in the license:

Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

In Guix we encode it by adding “+” as in “or any later version”.

Toggle quote (6 lines)
> From: Ryan Prior <rprior@protonmail.com>
> Date: Wed, 20 May 2020 22:28:11 -0500
> Subject: [PATCH] gnu: Add protonvpn-cli.
>
> * gnu/packages/vpn.scm (protonvpn-cli): New variable.

Applied, thanks!

Ludo’.
Closed
?