Subject: [PATCH v3] gnu: Add syncplay.

From: aurtzy <[email-masked]>
Date: Sat, 29 Jun 2024 17:37:55 -0400

* gnu/packages/video.scm (syncplay): New variable.

Change-Id: I72cdfa3db2b4b7ef6c3ef0b8585d138c272046a7
---

Hi Maxim,

Just got around to looking at this package again with a new patch as things
have changed since my last reply (and I didn't cc you before, oops..).

In addition to addressing your initial review, notable changes from v2
include:

- Update to current latest version of Syncplay (1.7.3).
- Patch is no longer needed.
- This patch puts syncplay in (gnu packages video) instead of the previous
  (gnu packages networking) since the latter seemed more concerned with
  system-level networking.  Does this make sense?

> > Is it compatible with Qt 6?  To try it, replace qtwayland-5 with
> > qtwayland, and specify a #:qtbase qtbase argument.
>
> Looks like it is!  #:qtbase doesn't seem to be supported by gnu-build-system or
> python-build-system (switched to the latter for this v2; elaborated further
> below) and I had to make a few other adjustments to get it working, so I may
> need advice if I've missed anything here.
>
> A patch has been added to fix a Qt 6 issue causing Syncplay to crash.
>
> > These should be inputs, not propagated-inputs, unless it can be used as
> > a library?  Also, please sort the inputs alphabetically.
>
> Fixed; not a library.  It appears I was using an inappropriate build system for
> this package - I originally made them propagated because gnu-build-system wasn't
> doing whatever wrapping python-build-system does to make the inputs available,
> so this v2 uses python-build-system instead now.
>
> Best,
>
> aurtzy

Cheers,

aurtzy

gnu/packages/video.scm | 54 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 411ad4c2bf..57a05f3eff 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -68,6 +68,7 @@
 ;;; Copyright © 2023 Saku Laesvuori <[email-masked]>
 ;;; Copyright © 2023 Jaeme Sifat <[email-masked]>
 ;;; Copyright © 2023 Zheng Junjie <[email-masked]>
+;;; Copyright © 2024 aurtzy <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -6349,3 +6350,56 @@ (define-public svtplay-dl
 broadcasters including SVT Play, Sveriges Radio, TV4 Play, along with many
 others.")
     (license license:expat)))
+
+(define-public syncplay
+  (package
+    (name "syncplay")
+    (version "1.7.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Syncplay/syncplay")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08bgndszja4n2kql2qmzl6qrzawxvcwmywsc69lq0dzjnpdk96la"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:imported-modules `(,@%python-build-system-modules
+                           (guix build qt-utils)
+                           (guix build utils))
+      #:modules '((guix build python-build-system)
+                  (guix build qt-utils)
+                  (guix build utils))
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'check)
+                   (replace 'install
+                     (lambda _
+                       (invoke "make" "install" "DESTDIR="
+                               (string-append "PREFIX="
+                                              #$output))))
+                   (add-after 'install 'wrap-qt
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       (wrap-qt-program "syncplay"
+                                        #:output #$output
+                                        #:inputs inputs
+                                        #:qt-major-version "6"))))))
+    (native-inputs (list python-pyside-6))
+    (inputs (list bash-minimal
+                  python-certifi
+                  python-idna
+                  python-service-identity
+                  python-twisted
+                  qtwayland))
+    (home-page "https://syncplay.pl")
+    (synopsis "Client/server to synchronize media playback on many computers")
+    (description
+     "Syncplay is a solution to synchronize video playback across multiple
+instances of media players over the Internet.  When one person pauses/unpauses
+playback or skips to a position in the video, this is replicated across all
+media players connected to the same server and in the same \"room\" (viewing
+session).  A built-in text chat for discussing the synced media is also
+included for convenience.")
+    (license license:asl2.0)))

base-commit: 78b881722f08325c76096557313a0faee847c66f
-- 
2.45.2