Subject: [bug#59851] Add Moonlight

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 16 Jan 2023 11:05:53 -0500

Hello,

phodina <[email-masked]> writes:

> Hello,
>
> these patches add support for game streaming solution for Nvidia GameStream protocol. The client is open source. However, the games and the server is a non-libre application.
>
> ----
> Petr
>
> From 413514efa6d87236d6f3e26166ac82fc3a85a9dd Mon Sep 17 00:00:00 2001
> From: Petr Hodina <[email-masked]>
> Date: Sat, 3 Dec 2022 10:35:36 +0100
> Subject: [PATCH 4/6] gnu: Add moonlight-common.
>
> * gnu/packages/games.scm (moonlight-common): New variable.
>
> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index 9d79efbe94..131784bc2a 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -5857,6 +5857,50 @@ (define-public bambam
>  colors, pictures, and sounds.")
>      (license license:gpl3+)))
>  
> +(define-public moonlight-common
> +  (let ((commit "8c55c086d596607041e4394fb62a1bc800b7f37c")
> +        (revision "1"))
> +    (package
> +      (name "moonlight-common")
> +      (version commit)
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url
> +                       "https://github.com/moonlight-stream/moonlight-common-c")
> +                      (commit version)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32
> +                  "0pqm0a2p2sqvazv5gak6gl7d405kaaq6r13l7yhycm0myayqavrp"))))
> +      (build-system cmake-build-system)
> +      (arguments
> +       `(#:tests? #f
> +         #:phases (modify-phases %standard-phases
> +                    (add-after 'unpack 'use-enet-pkg

Perhaps name the phase 'use-system-enet-package' or
'unbundle-enet-moonlight'.

> +                      (lambda _
> +                        (substitute* "CMakeLists.txt"
> +                          (("add_subdirectory\\(enet\\)")
> +                           ""))))
> +                    (replace 'install
> +                      (lambda* (#:key outputs source #:allow-other-keys)
> +                        (let* ((out (assoc-ref outputs "out"))
> +                               (include (string-append out "/include"))
> +                               (lib (string-append out "/lib")))
> +                          (mkdir-p include)
> +                          (mkdir-p lib)
> +                          (install-file (string-append source
> +                                                       "/src/Limelight.h")
> +                                        include)
> +                          (install-file "libmoonlight-common-c.so" lib)))))))

It seems their build system is broken if it doesn't install these, and
thus should be reported upstream (with a comment linking to it here).

> +      (native-inputs (list pkg-config))
> +      (inputs (list qtbase-5 openssl enet-moonlight))

Please sort inputs :-).

> +      (synopsis "Core implementation of Nvidia's GameStream protocol")

I'd use "GameStream protocol core implementation"

> +      (description
> +       "This package provides the code GameStream code shared between @code{Moonlight} clients.")j

Provides the "core".

> +      (home-page "https://github.com/moonlight-stream/moonlight-common-c")
> +      (license license:gpl3))))

The license should be gpl3+, as the LICENSE text contains the original
"or any later version" and there doesn't seem to be source headers
contradicting that.

-- 
Thanks,
Maxim