Subject: [bug#46862] Giara - A free-software client for Reddit

From: Efraim Flashner <[email-masked]>
Date: Tue, 9 Mar 2021 09:59:12 +0200

It definitely launched much faster than on my pinephone. A couple of comments inlined.

Also, I wasn't able to login to giara. I got redirected to icecat and
was able to login and press authorize as expected, but nothing happened
with the giara window and it stayed at 'waiting for authorization'. I'm
not sure if it's because I'm not running a GTK desktop, but I didn't
investigate too far.

On Mon, Mar 01, 2021 at 04:44:23PM -0500, Raghav Gururajan via Guix-patches via wrote:

> From 20c12e445cdca94ca8277b89d16c69ad5cd1af79 Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Mon, 1 Mar 2021 15:10:06 -0500
> Subject: [PATCH 1/5] gnu: Add python-betamax-serializers.
> 
> * gnu/packages/python-check.scm (python-betamax-serializers): New variable.
> ---
>  gnu/packages/python-check.scm | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
> index c23741825b..ac96310cd0 100644
> --- a/gnu/packages/python-check.scm
> +++ b/gnu/packages/python-check.scm
> @@ -40,6 +40,27 @@
>    #:use-module (guix download)
>    #:use-module (guix build-system python))
>  

This package should be in python-web with the other python-betamax
packages

> +(define-public python-betamax-serializers
> +  (package
> +    (name "python-betamax-serializers")
> +    (version "0.2.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri
> +        (pypi-uri "betamax-serializers" version))

This can be on one line

> +       (sha256
> +        (base32 "0ja9isbjmzzhxdj69s0kdsvw8nkp073w6an6a4liy5vk3fdl2p1l"))))
> +    (build-system python-build-system)
> +    (propagated-inputs
> +     `(("python-betamax" ,python-betamax)
> +       ("python-pyyaml" ,python-pyyaml)))
> +    (synopsis "Set of third-party serializers for Betamax")
> +    (description "Betamax-Serializers are an experimental set of Serializers for
> +Betamax that may possibly end up in the main package.")
> +    (home-page "https://gitlab.com/betamax/serializers")
> +    (license license:asl2.0)))
> +
>  (define-public python-coveralls
>    (package
>      (name "python-coveralls")
> -- 
> 2.30.1
> 

> From 2bc948be9324add1b6b15795c5d65dda2d956d6e Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Mon, 1 Mar 2021 15:33:33 -0500
> Subject: [PATCH 2/5] gnu: Add python-testfixtures.
> 
> * gnu/packages/python-check.scm (python-testfixtures): New variable.
> ---
>  gnu/packages/python-check.scm | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
> index ac96310cd0..10b35846f5 100644
> --- a/gnu/packages/python-check.scm
> +++ b/gnu/packages/python-check.scm
> @@ -28,7 +28,9 @@
>  (define-module (gnu packages python-check)
>    #:use-module (gnu packages)
>    #:use-module (gnu packages check)
> +  #:use-module (gnu packages django)
>    #:use-module (gnu packages openstack)
> +  #:use-module (gnu packages python-build)
>    #:use-module (gnu packages python-web)
>    #:use-module (gnu packages python-xyz)
>    #:use-module (gnu packages web)
> @@ -40,6 +42,32 @@
>    #:use-module (guix download)
>    #:use-module (guix build-system python))
>  
> +(define-public python-testfixtures
> +  (package
> +    (name "python-testfixtures")
> +    (version "6.17.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri
> +        (pypi-uri "testfixtures" version))

This can be on one line

> +       (sha256
> +        (base32 "1nlv2hz20czjp4a811ichl5kwg99rh84l0mw9wq4rk3idzfs1hsy"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:tests? #f))          ; PyTest-Django fails to build in master
> +    (native-inputs
> +     `(("python-pytest" ,python-pytest)
> +       ("python-pytest-cov" ,python-pytest-cov)
> +       ;;("python-pytest-django" ,python-pytest-django)
> +       ("python-twine" ,python-twine)
> +       ("python-wheel" ,python-wheel)))
> +    (synopsis "Tests components for Python")
> +    (description "Testfixtures is a collection of helpers and mock objects that
> +are useful when writing automated tests in Python.")
> +    (home-page "https://testfixtures.readthedocs.io/en/latest/")
> +    (license license:expat)))
> +
>  (define-public python-betamax-serializers
>    (package
>      (name "python-betamax-serializers")
> -- 
> 2.30.1
> 

> From 8ff9766b7228d5772c5b7f5449031163e8e7ecd1 Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Mon, 1 Mar 2021 15:37:23 -0500
> Subject: [PATCH 3/5] gnu: Add python-prawcore.
> 
> * gnu/packages/python-web.scm (python-prawcore): New variable.
> ---
>  gnu/packages/python-web.scm | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
> index ab3769b360..27b31143ea 100644
> --- a/gnu/packages/python-web.scm
> +++ b/gnu/packages/python-web.scm
> @@ -91,6 +91,32 @@
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (srfi srfi-1))
>  
> +(define-public python-prawcore
> +  (package
> +    (name "python-prawcore")
> +    (version "2.0.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri
> +        (pypi-uri "prawcore" version))

This can be on one line

> +       (sha256
> +        (base32 "1l9nrn4s03xl8fvkyybdk86bm9cyyk43alkxf9g014a9ynvdk65l"))))
> +    (build-system python-build-system)
> +    (native-inputs
> +     `(("python-betamax" ,python-betamax)
> +       ("python-betamax-matchers" ,python-betamax-matchers)
> +       ("python-betamax-serializers" ,python-betamax-serializers)
> +       ("python-mock" ,python-mock)
> +       ("python-pytest" ,python-pytest)
> +       ("python-testfixtures" ,python-testfixtures)))
> +    (propagated-inputs
> +     `(("python-requests" ,python-requests)))
> +    (synopsis "Core component of PRAW")
> +    (description "PRAWcore is a low-level communication layer used by PRAW.")
> +    (home-page "https://praw.readthedocs.io/en/latest/")
> +    (license license:bsd-2)))
> +
>  (define-public python-aiohttp
>    (package
>      (name "python-aiohttp")
> -- 
> 2.30.1
> 

> From a5e10670128fb2a7fcffa4a03e979231cc403a6d Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Mon, 1 Mar 2021 16:01:21 -0500
> Subject: [PATCH 4/5] gnu: Add python-praw.
> 
> * gnu/packages/python-web.scm (python-raw): New variable.
> ---
>  gnu/packages/python-web.scm | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
> index 27b31143ea..9acafd14e3 100644
> --- a/gnu/packages/python-web.scm
> +++ b/gnu/packages/python-web.scm
> @@ -117,6 +117,34 @@
>      (home-page "https://praw.readthedocs.io/en/latest/")
>      (license license:bsd-2)))
>  
> +(define-public python-praw
> +  (package
> +    (name "python-praw")
> +    (version "7.2.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri
> +        (pypi-uri "praw" version))

This can be on one line

> +       (sha256
> +        (base32 "0ll1a0n8xs8gykizdsfrw63jp6bc39ab0pk3yzwcak96fyxh0ij3"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:tests? #f))    ; https://github.com/praw-dev/praw/issues/1699

There were a couple of failing tests, but I was able to run the test
suite with the following code:

    (arguments
     `(;#:tests? #f
       #:phases
       (modify-phases %standard-phases
         (replace 'check
           (lambda* (#:key tests? #:allow-other-keys)
             (when tests?
               (invoke "pytest"))
             #t)))))

> +    (native-inputs
> +     `(("python-betamax" ,python-betamax)
> +       ("python-betamax-matchers" ,python-betamax-matchers)
> +       ("python-pytest" ,python-pytest)))
> +    (propagated-inputs
> +     `(("python-prawcore" ,python-prawcore)
> +       ("python-websocket-client" ,python-websocket-client)))
> +    (synopsis "Python Reddit API Wrapper")
> +    (description "PRAW is a Python package that allows for simple access to
> +Reddit’s API.  It aims to be easy to use and internally follows all of Reddit’s
> +API rules.")
> +    (home-page "https://praw.readthedocs.io/en/latest/")
> +    (license license:bsd-2)))
> +
>  (define-public python-aiohttp
>    (package
>      (name "python-aiohttp")
> -- 
> 2.30.1
> 

> From d7a3665d04a70e1d0a09da805a3d3974e8c9ce5c Mon Sep 17 00:00:00 2001
> From: Raghav Gururajan <[email-masked]>
> Date: Mon, 1 Mar 2021 16:40:12 -0500
> Subject: [PATCH 5/5] gnu: Add giara.

This should probably be in syndication.scm

> 
> * gnu/packages/web.scm (giara): New variable.
> ---
>  gnu/packages/web.scm | 67 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 67 insertions(+)
> 
> diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
> index 3e9fdbb7f6..cbceb36dea 100644
> --- a/gnu/packages/web.scm
> +++ b/gnu/packages/web.scm
> @@ -164,13 +164,80 @@
>    #:use-module (gnu packages sphinx)
>    #:use-module (gnu packages texinfo)
>    #:use-module (gnu packages textutils)
> +  #:use-module (gnu packages time)
>    #:use-module (gnu packages tls)
>    #:use-module (gnu packages valgrind)
>    #:use-module (gnu packages version-control)
>    #:use-module (gnu packages vim)
> +  #:use-module (gnu packages webkit)
>    #:use-module (gnu packages xml)
>    #:use-module ((srfi srfi-1) #:select (delete-duplicates)))
>  
> +(define-public giara
> +  (package
> +    (name "giara")
> +    (version "0.3")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri
> +        (git-reference

This can be on the previous line

> +         (url "https://gitlab.gnome.org/World/giara")
> +         (commit version)))
> +       (file-name
> +        (git-file-name name version))

Ditto

> +       (sha256
> +        (base32 "004qmkfrgd37axv0b6hfh6v7nx4pvy987k5yv4bmlmkj9sbqm6f9"))))
> +    (build-system meson-build-system)
> +    (arguments
> +     `(#:glib-or-gtk? #t
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'install 'wrap-programs
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (bin (string-append out "/bin/"))
> +                    (lib (string-append out "/lib/python"
> +                                        ,(version-major+minor
> +                                          (package-version python))
> +                                        "/site-packages")))
> +               (for-each
> +                (lambda (program)
> +                  (wrap-program program
> +                    `("PYTHONPATH" = (,(getenv "PYTHONPATH") ,lib))
> +                    `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
> +                (append
> +                 (map (lambda (prog) (string-append bin prog))
> +                      '("giara"))))

There's only one binary to wrap, so this can be shorter
(wrap-program (string-append bin "giara")
 `("PYTHONPATH" ...

Also, should it be wrapped with prefix instead of an absolute value?
Then other environment variables affecting those ones would be honored.

> +               #t))))))
> +    (native-inputs
> +     `(("gettext" ,gettext-minimal)
> +       ("glib:bin" ,glib "bin")
> +       ("gobject-introspection" ,gobject-introspection)
> +       ("gtk+:bin" ,gtk+ "bin")
> +       ("pkg-config" ,pkg-config)
> +       ("xmllint" ,libxml2)))
> +    (inputs
> +     `( ;; ("appstream-cli" ,appstream-cli)
> +       ("glib" ,glib)
> +       ("gtk+" ,gtk+)
> +       ("gtksourceview" ,gtksourceview)
> +       ("libhandy" ,libhandy)
> +       ("python" ,python)
> +       ("python-beautifulsoup" ,python-beautifulsoup4)
> +       ("python-dateutil" ,python-dateutil)
> +       ("python-mistune" ,python-mistune)
> +       ("python-pillow" ,python-pillow)
> +       ("python-praw" ,python-praw)
> +       ("python-pycairo" ,python-pycairo)
> +       ("python-pygobject" ,python-pygobject)
> +       ("python-requests" ,python-requests)
> +       ("webkitgtk" ,webkitgtk)))
> +    (synopsis "Client for Reddit")
> +    (description "Giara is a reddit app, built with Python, GTK and Handy.")
> +    (home-page "https://giara.gabmus.org/")
> +    (license license:gpl3+)))
> +
>  (define-public qhttp
>    (package
>      (name "qhttp")
> -- 
> 2.30.1
> 

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted