diff mbox series

[bug#41455,1/2] gnu: Add python-libtmux

Message ID 87y2pgiclc.fsf@alice.lan
State Accepted
Headers show
Series [bug#41455,1/2] gnu: Add python-libtmux | expand

Checks

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

Commit Message

Edouard Klein May 25, 2020, 9:32 a.m. UTC
* gnu/packages/check.scm (python-pytest-4): New variable.
* gnu/packages/tmux.scm (python-libtmux): New variable.
---
 gnu/packages/check.scm | 49 ++++++++++++++++++++++++++++++++++++++++++
 gnu/packages/tmux.scm  | 48 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 97 insertions(+)

Comments

Marius Bakke May 25, 2020, 10:43 p.m. UTC | #1
Edouard Klein <edk@beaver-labs.com> writes:

> * gnu/packages/check.scm (python-pytest-4): New variable.
> * gnu/packages/tmux.scm (python-libtmux): New variable.

Thanks!  Can you submit these as two separate patches?

> +    (native-inputs
> +     `(("python-setuptools-scm" ,python-setuptools-scm)
> +       ("git" ,git)))
> +    (arguments `(#:phases
> +                 (modify-phases %standard-phases
> +                   (add-after 'unpack 'git-tag
> +                     (lambda _
> +                       ;; setuptools-scm needs to know the version
> +                       (invoke "git" "init")
> +                       (invoke "git" "add" ".")
> +                       (invoke "git" "config" "user.name" "John Doe")
> +                       (invoke "git" "config" "user.email" "nobody@example.com")
> +                       (invoke "git" "commit" "-m" "dummy commit")
> +                       (invoke "git" "tag" ,version))))))

This is weird, we haven't needed this before.  Is there a way to avoid
the dependency on git here?  In the worst case maybe we can create
".git/refs/tags/,version" manually?  :-/

Also, please make this inherit from pytest instead of duplicating all
the fields.

[...]
  
> +(define-public python-libtmux
> +  (package
> +    (name "python-libtmux")
> +    (version "0.8.2")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       ;; Pypi source tarball does not include tests
> +       (uri (git-reference
> +             (url "https://github.com/tmux-python/libtmux.git")
> +             (commit (string-append "v" version))))
> +       (file-name "python-libtmux")
> +       (sha256
> +        (base32
> +         "1akjv6aqpc690c4l2cjh0fxbpxxg63sfjggapfjjjaqmcl38g1dz"))))
> +    (build-system python-build-system)
> +    (propagated-inputs
> +     `(("python-pytest-4" ,python-pytest-4)

Do you know if pytest 4 is really needed?  Often Python packages pin a
specific version for no good reason, and one can simply substitute "=="
with ">=" in setup.py and it's all good.

> +       ("tmux" ,tmux)

Even though this is useless without tmux, I'm not sure if we should
propagate it.  Some users might have custom versions of tmux, but would
still want to use this library.  WDYT?

> +       ("procps" ,procps)))  ;; Tests need top

                                ^ only one semicolon for margin comments
                                ;typically without a space, like this

> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'check
> +           (lambda _
> +             ;; Extend PYTHONPATH so the built package will be found.
> +             (setenv "PYTHONPATH"
> +                     (string-append (getcwd) "/build/lib:"
> +                                    (getenv "PYTHONPATH")))
> +             ;; Skip tests that I suspect fail because of a change
> +             ;; in behavior in tmux 3 from tmux 2
> +             ;; https://github.com/tmux-python/libtmux/issues/281
> +             (invoke "pytest" "-vv" "-k"
> +                     (string-append "not test_show_option_unknown "
> +                                    "and not test_show_window_option_unknown"))
> +             #t)))))
> +    (home-page
> +     "https://github.com/tmux-python/libtmux")

This line break is unnecessary.

Otherwise looks good.  Can you send updated patches?
diff mbox series

Patch

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 7d7fd189bc..5d3e44a16d 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -33,6 +33,7 @@ 
 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
+;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -66,6 +67,7 @@ 
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages time)
   #:use-module (gnu packages xml)
   #:use-module (guix utils)
@@ -819,6 +821,53 @@  and many external plugins.")
     (license license:expat)
     (properties `((python2-variant . ,(delay python2-pytest))))))
 
+(define-public python-pytest-4
+  (package
+    (name "python-pytest-4")
+    (version "4.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       ;; Pypi source tarball does not include tests
+       (uri (git-reference
+             (url "https://github.com/pytest-dev/pytest.git")
+             (commit version)))
+       (file-name "python-pytest-4")
+       (sha256
+        (base32
+         "0igxfasjqabkzlb81vxqr58pfsdwjx4zzd1nc1b48wn6xnkkllhk"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-atomicwrites" ,python-atomicwrites)
+       ("python-attrs" ,python-attrs)
+       ("python-attrs" ,python-attrs)
+       ("python-more-itertools" ,python-more-itertools)
+       ("python-pluggy" ,python-pluggy)
+       ("python-six" ,python-six)
+       ("python-py" ,python-py)
+       ("python-wcwidth" ,python-wcwidth)))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("git" ,git)))
+    (arguments `(#:phases
+                 (modify-phases %standard-phases
+                   (add-after 'unpack 'git-tag
+                     (lambda _
+                       ;; setuptools-scm needs to know the version
+                       (invoke "git" "init")
+                       (invoke "git" "add" ".")
+                       (invoke "git" "config" "user.name" "John Doe")
+                       (invoke "git" "config" "user.email" "nobody@example.com")
+                       (invoke "git" "commit" "-m" "dummy commit")
+                       (invoke "git" "tag" ,version))))))
+    (home-page "https://docs.pytest.org/en/latest/")
+    (synopsis "Python testing library")
+    (description
+     "Pytest is a testing tool that provides auto-discovery of test modules
+and functions, detailed info on failing assert statements, modular fixtures,
+and many external plugins.")
+    (license license:expat)))
+
 ;; Pytest 4.x are the last versions that support Python 2.
 (define-public python2-pytest
   (package
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index 8b54849b18..c4dd963b53 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -7,6 +7,7 @@ 
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,8 +31,11 @@ 
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages ncurses))
 
@@ -138,6 +142,50 @@  command and helper commands provided by tmuxifier to manage Tmux sessions and
 windows.")
     (license license:expat)))
 
+(define-public python-libtmux
+  (package
+    (name "python-libtmux")
+    (version "0.8.2")
+    (source
+     (origin
+       (method git-fetch)
+       ;; Pypi source tarball does not include tests
+       (uri (git-reference
+             (url "https://github.com/tmux-python/libtmux.git")
+             (commit (string-append "v" version))))
+       (file-name "python-libtmux")
+       (sha256
+        (base32
+         "1akjv6aqpc690c4l2cjh0fxbpxxg63sfjggapfjjjaqmcl38g1dz"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pytest-4" ,python-pytest-4)
+       ("tmux" ,tmux)
+       ("procps" ,procps)))  ;; Tests need top
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Extend PYTHONPATH so the built package will be found.
+             (setenv "PYTHONPATH"
+                     (string-append (getcwd) "/build/lib:"
+                                    (getenv "PYTHONPATH")))
+             ;; Skip tests that I suspect fail because of a change
+             ;; in behavior in tmux 3 from tmux 2
+             ;; https://github.com/tmux-python/libtmux/issues/281
+             (invoke "pytest" "-vv" "-k"
+                     (string-append "not test_show_option_unknown "
+                                    "and not test_show_window_option_unknown"))
+             #t)))))
+    (home-page
+     "https://github.com/tmux-python/libtmux")
+    (synopsis "Scripting library / orm for tmux")
+    (description "Libtmux is the tool behind tmuxp, a tmux workspace manager in python.
+It builds upon tmux's target and formats to create an object mapping to traverse,
+ inspect and interact with live tmux sessions.")
+    (license license:expat)))
+
 (define-public tmux-xpanes
   (package
     (name "tmux-xpanes")