[PATCH] gnu: Add nginx-rtmp-module.

DoneSubmitted by Jack Hill.
Details
4 participants
  • Sarah Morgensen
  • Jack Hill
  • Jonathan Brielmaier
  • Ludovic Courtès
Owner
unassigned
Severity
normal
J
J
Jack Hill wrote on 12 Jul 22:39 +0200
(address . guix-patches@gnu.org)
20210712203920.9243-1-jackhill@jackhill.us
* gnu/packages/web.scm (nginx-rtmp-module): New variable.--- gnu/packages/web.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+)
Toggle diff (81 lines)diff --git a/gnu/packages/web.scm b/gnu/packages/web.scmindex 2cc8619b19..ad51bfdf55 100644--- a/gnu/packages/web.scm+++ b/gnu/packages/web.scm@@ -50,6 +50,7 @@ ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org> ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>+;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us> ;;; ;;; This file is part of GNU Guix. ;;;@@ -771,6 +772,66 @@ documentation.") (description "This NGINX module provides a scripting support with Lua programming language."))) +(define-public nginx-rtmp-module+ (package+ (inherit nginx)+ (name "nginx-rtmp-module")+ (version "1.2.2")+ (source+ (origin+ (method git-fetch)+ (uri (git-reference+ (url "https://github.com/arut/nginx-rtmp-module")+ (commit (string-append "v" version))))+ (file-name (git-file-name name version))+ (sha256+ (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))+ (build-system gnu-build-system)+ (inputs+ `(("nginx-sources" ,(package-source nginx))+ ,@(package-inputs nginx)))+ (arguments+ (substitute-keyword-arguments+ `(#:configure-flags '("--add-dynamic-module=.")+ #:make-flags '("modules")+ #:modules ((guix build utils)+ (guix build gnu-build-system))+ ,@(package-arguments nginx))+ ((#:phases phases)+ `(modify-phases ,phases+ ;; The LICENSE file will be overwritten with the one from nginx+ ;; when unpacking the nginx source, so copy this one to its own+ ;; file.+ (add-after 'unpack 'preserve-license-file+ (lambda _ (copy-file "LICENSE" "LICENSE.rtmp")))+ (add-after 'preserve-license-file 'unpack-nginx-sources+ (lambda* (#:key inputs native-inputs #:allow-other-keys)+ (begin+ ;; The nginx source code is part of the module’s source.+ (format #t "decompressing nginx source code~%")+ (let ((tar (assoc-ref inputs "tar"))+ (nginx-srcs (assoc-ref inputs "nginx-sources")))+ (invoke (string-append tar "/bin/tar")+ "xvf" nginx-srcs "--strip-components=1"))+ #t)))+ (replace 'install+ (lambda* (#:key outputs #:allow-other-keys)+ (let ((modules-dir (string-append (assoc-ref outputs "out")+ "/etc/nginx/modules")))+ (install-file "objs/ngx_rtmp_module.so" modules-dir)+ #t)))+ (delete 'fix-root-dirs)+ (delete 'install-man-page)))))+ (home-page "https://github.com/arut/nginx-rtmp-module")+ (synopsis "NGINX module for audo and video streaming with RTMP")+ (description "This NGINX module provides streaming with the @acronym{RTMP,+Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},+and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept+incoming RTMP streams for recording or redistribution. It also supports+on-demand streaming from a file on disk and pulling from an upstream RTMP+steam. Remote control of the module is possible over HTTP.")+ (license license:bsd-2)))+ (define-public lighttpd (package (name "lighttpd")-- 2.32.0
J
J
Jonathan Brielmaier wrote on 12 Jul 22:52 +0200
(address . 49539@debbugs.gnu.org)
984dcf9d-6046-3e68-fd97-586a113180b8@web.de
On 12.07.21 22:39, Jack Hill wrote:
Toggle quote (1 lines)> * gnu/packages/web.scm (nginx-rtmp-module): New variable.
[...]
Toggle quote (1 lines)> + (synopsis "NGINX module for audo and video streaming with RTMP")
^ audio
Toggle quote (7 lines)> + (description "This NGINX module provides streaming with the @acronym{RTMP,> +Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},> +and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept> +incoming RTMP streams for recording or redistribution. It also supports> +on-demand streaming from a file on disk and pulling from an upstream RTMP> +steam. Remote control of the module is possible over HTTP.")
^ stream?
J
J
Jack Hill wrote on 12 Jul 23:11 +0200
(name . Jonathan Brielmaier)(address . jonathan.brielmaier@web.de)(address . 49539@debbugs.gnu.org)
alpine.DEB.2.21.2107121710170.2109@marsh.hcoop.net
On Mon, 12 Jul 2021, Jonathan Brielmaier wrote:
Toggle quote (6 lines)> On 12.07.21 22:39, Jack Hill wrote:>> * gnu/packages/web.scm (nginx-rtmp-module): New variable.> [...]>> + (synopsis "NGINX module for audo and video streaming with RTMP")> ^ audio
Whoops, thank you for catching this.
Toggle quote (12 lines)>> + (description "This NGINX module provides streaming with the >> @acronym{RTMP,>> +Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming >> over HTTP},>> +and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to >> accept>> +incoming RTMP streams for recording or redistribution. It also supports>> +on-demand streaming from a file on disk and pulling from an upstream RTMP>> +steam. Remote control of the module is possible over HTTP.")>> ^ stream?
At least steam is a real word to the spellchecker :) I'll post v2 with these fixed shortly.
Thanks!Jack
J
J
Jack Hill wrote on 12 Jul 23:13 +0200
[PATCH v2] gnu: Add nginx-rtmp-module.
(address . 49539@debbugs.gnu.org)
20210712211322.14238-1-jackhill@jackhill.us
* gnu/packages/web.scm (nginx-rtmp-module): New variable.--- gnu/packages/web.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+)
Toggle diff (81 lines)diff --git a/gnu/packages/web.scm b/gnu/packages/web.scmindex 2cc8619b19..a659ad456a 100644--- a/gnu/packages/web.scm+++ b/gnu/packages/web.scm@@ -50,6 +50,7 @@ ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org> ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>+;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us> ;;; ;;; This file is part of GNU Guix. ;;;@@ -771,6 +772,66 @@ documentation.") (description "This NGINX module provides a scripting support with Lua programming language."))) +(define-public nginx-rtmp-module+ (package+ (inherit nginx)+ (name "nginx-rtmp-module")+ (version "1.2.2")+ (source+ (origin+ (method git-fetch)+ (uri (git-reference+ (url "https://github.com/arut/nginx-rtmp-module")+ (commit (string-append "v" version))))+ (file-name (git-file-name name version))+ (sha256+ (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))+ (build-system gnu-build-system)+ (inputs+ `(("nginx-sources" ,(package-source nginx))+ ,@(package-inputs nginx)))+ (arguments+ (substitute-keyword-arguments+ `(#:configure-flags '("--add-dynamic-module=.")+ #:make-flags '("modules")+ #:modules ((guix build utils)+ (guix build gnu-build-system))+ ,@(package-arguments nginx))+ ((#:phases phases)+ `(modify-phases ,phases+ ;; The LICENSE file will be overwritten with the one from nginx+ ;; when unpacking the nginx source, so copy this one to its own+ ;; file.+ (add-after 'unpack 'preserve-license-file+ (lambda _ (copy-file "LICENSE" "LICENSE.rtmp")))+ (add-after 'preserve-license-file 'unpack-nginx-sources+ (lambda* (#:key inputs native-inputs #:allow-other-keys)+ (begin+ ;; The nginx source code is part of the module’s source.+ (format #t "decompressing nginx source code~%")+ (let ((tar (assoc-ref inputs "tar"))+ (nginx-srcs (assoc-ref inputs "nginx-sources")))+ (invoke (string-append tar "/bin/tar")+ "xvf" nginx-srcs "--strip-components=1"))+ #t)))+ (replace 'install+ (lambda* (#:key outputs #:allow-other-keys)+ (let ((modules-dir (string-append (assoc-ref outputs "out")+ "/etc/nginx/modules")))+ (install-file "objs/ngx_rtmp_module.so" modules-dir)+ #t)))+ (delete 'fix-root-dirs)+ (delete 'install-man-page)))))+ (home-page "https://github.com/arut/nginx-rtmp-module")+ (synopsis "NGINX module for audio and video streaming with RTMP")+ (description "This NGINX module provides streaming with the @acronym{RTMP,+Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},+and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept+incoming RTMP streams for recording or redistribution. It also supports+on-demand streaming from a file on disk and pulling from an upstream RTMP+stream. Remote control of the module is possible over HTTP.")+ (license license:bsd-2)))+ (define-public lighttpd (package (name "lighttpd")-- 2.32.0
S
S
Sarah Morgensen wrote on 22 Jul 06:05 +0200
Re: bug#49539: [PATCH] gnu: Add nginx-rtmp-module.
(name . Jack Hill)(address . jackhill@jackhill.us)(address . 49539@debbugs.gnu.org)
86im13ro1i.fsf_-_@mgsn.dev
Hi!
Jack Hill <jackhill@jackhill.us> writes:
Toggle quote (63 lines)> * gnu/packages/web.scm (nginx-rtmp-module): New variable.> ---> gnu/packages/web.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++> 1 file changed, 61 insertions(+)>> diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm> index 2cc8619b19..a659ad456a 100644> --- a/gnu/packages/web.scm> +++ b/gnu/packages/web.scm> @@ -50,6 +50,7 @@> ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>> ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>> ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>> +;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us>> ;;;> ;;; This file is part of GNU Guix.> ;;;> @@ -771,6 +772,66 @@ documentation.")> (description "This NGINX module provides a scripting support with Lua> programming language.")))> > +(define-public nginx-rtmp-module> + (package> + (inherit nginx)> + (name "nginx-rtmp-module")> + (version "1.2.2")> + (source> + (origin> + (method git-fetch)> + (uri (git-reference> + (url "https://github.com/arut/nginx-rtmp-module")> + (commit (string-append "v" version))))> + (file-name (git-file-name name version))> + (sha256> + (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))> + (build-system gnu-build-system)> + (inputs> + `(("nginx-sources" ,(package-source nginx))> + ,@(package-inputs nginx)))> + (arguments> + (substitute-keyword-arguments> + `(#:configure-flags '("--add-dynamic-module=.")> + #:make-flags '("modules")> + #:modules ((guix build utils)> + (guix build gnu-build-system))> + ,@(package-arguments nginx))> + ((#:phases phases)> + `(modify-phases ,phases> + ;; The LICENSE file will be overwritten with the one from nginx> + ;; when unpacking the nginx source, so copy this one to its own> + ;; file.> + (add-after 'unpack 'preserve-license-file> + (lambda _ (copy-file "LICENSE" "LICENSE.rtmp")))> + (add-after 'preserve-license-file 'unpack-nginx-sources> + (lambda* (#:key inputs native-inputs #:allow-other-keys)> + (begin> + ;; The nginx source code is part of the module’s source.> + (format #t "decompressing nginx source code~%")> + (let ((tar (assoc-ref inputs "tar"))> + (nginx-srcs (assoc-ref inputs "nginx-sources")))> + (invoke (string-append tar "/bin/tar")> + "xvf" nginx-srcs "--strip-components=1"))
You can probably drop the direct reference to tar and just use `(invoke"tar" ...)`
Also, if you want to avoid the extra step of renaming the originalLICENSE, you can use `--transform=s,/LICENSE$,/LICENSE.nginx,` as anargument to tar.
Toggle quote (23 lines)> + #t)))> + (replace 'install> + (lambda* (#:key outputs #:allow-other-keys)> + (let ((modules-dir (string-append (assoc-ref outputs "out")> + "/etc/nginx/modules")))> + (install-file "objs/ngx_rtmp_module.so" modules-dir)> + #t)))> + (delete 'fix-root-dirs)> + (delete 'install-man-page)))))> + (home-page "https://github.com/arut/nginx-rtmp-module")> + (synopsis "NGINX module for audio and video streaming with RTMP")> + (description "This NGINX module provides streaming with the @acronym{RTMP,> +Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},> +and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept> +incoming RTMP streams for recording or redistribution. It also supports> +on-demand streaming from a file on disk and pulling from an upstream RTMP> +stream. Remote control of the module is possible over HTTP.")> + (license license:bsd-2)))> +> (define-public lighttpd> (package> (name "lighttpd")
--Sarah
J
J
Jack Hill wrote on 22 Jul 22:53 +0200
Re: [bug#49539] [PATCH] gnu: Add nginx-rtmp-module.
(name . Sarah Morgensen)(address . iskarian@mgsn.dev)(address . 49539@debbugs.gnu.org)
alpine.DEB.2.21.2107221649500.2109@marsh.hcoop.net
On Wed, 21 Jul 2021, Sarah Morgensen wrote:
Toggle quote (26 lines)> Jack Hill <jackhill@jackhill.us> writes:>>> + ((#:phases phases)>> + `(modify-phases ,phases>> + ;; The LICENSE file will be overwritten with the one from nginx>> + ;; when unpacking the nginx source, so copy this one to its own>> + ;; file.>> + (add-after 'unpack 'preserve-license-file>> + (lambda _ (copy-file "LICENSE" "LICENSE.rtmp")))>> + (add-after 'preserve-license-file 'unpack-nginx-sources>> + (lambda* (#:key inputs native-inputs #:allow-other-keys)>> + (begin>> + ;; The nginx source code is part of the module’s source.>> + (format #t "decompressing nginx source code~%")>> + (let ((tar (assoc-ref inputs "tar"))>> + (nginx-srcs (assoc-ref inputs "nginx-sources")))>> + (invoke (string-append tar "/bin/tar")>> + "xvf" nginx-srcs "--strip-components=1"))>> You can probably drop the direct reference to tar and just use `(invoke> "tar" ...)`>> Also, if you want to avoid the extra step of renaming the original> LICENSE, you can use `--transform=s,/LICENSE$,/LICENSE.nginx,` as an> argument to tar.
Thanks for suggesting these improvements! I've incorporated them into a version 3 that I'll post shortly.
Best,Jack
P.S. The same opportunities for improvement exists in some of our other nginx modules, from which I copied this phase. The next time we update those might be a good time to clean them up.
J
J
Jack Hill wrote on 22 Jul 22:55 +0200
[PATCH v3] gnu: Add nginx-rtmp-module.
(address . 49539@debbugs.gnu.org)(address . iskarian@mgsn.dev)
20210722205556.12542-1-jackhill@jackhill.us
* gnu/packages/web.scm (nginx-rtmp-module): New variable.--- gnu/packages/web.scm | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+)
Toggle diff (79 lines)diff --git a/gnu/packages/web.scm b/gnu/packages/web.scmindex 2cc8619b19..c0db8d9436 100644--- a/gnu/packages/web.scm+++ b/gnu/packages/web.scm@@ -50,6 +50,7 @@ ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org> ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>+;;; Copyright © 2021 Jack Hill <jackhill@jackhill.us> ;;; ;;; This file is part of GNU Guix. ;;;@@ -771,6 +772,64 @@ documentation.") (description "This NGINX module provides a scripting support with Lua programming language."))) +(define-public nginx-rtmp-module+ (package+ (inherit nginx)+ (name "nginx-rtmp-module")+ (version "1.2.2")+ (source+ (origin+ (method git-fetch)+ (uri (git-reference+ (url "https://github.com/arut/nginx-rtmp-module")+ (commit (string-append "v" version))))+ (file-name (git-file-name name version))+ (sha256+ (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))+ (build-system gnu-build-system)+ (inputs+ `(("nginx-sources" ,(package-source nginx))+ ,@(package-inputs nginx)))+ (arguments+ (substitute-keyword-arguments+ `(#:configure-flags '("--add-dynamic-module=.")+ #:make-flags '("modules")+ #:modules ((guix build utils)+ (guix build gnu-build-system))+ ,@(package-arguments nginx))+ ((#:phases phases)+ `(modify-phases ,phases+ (add-after 'unpack 'unpack-nginx-sources+ (lambda* (#:key inputs native-inputs #:allow-other-keys)+ (begin+ ;; The nginx source code is part of the module’s source.+ (format #t "decompressing nginx source code~%")+ (invoke "tar" "xvf" (assoc-ref inputs "nginx-sources")+ ;; This packages's LICENSE file would be+ ;; overwritten with the one from nginx when+ ;; unpacking the nginx source, so rename the nginx+ ;; one when unpacking.+ "--transform=s,/LICENSE$,/LICENSE.nginx,"+ "--strip-components=1")+ #t)))+ (replace 'install+ (lambda* (#:key outputs #:allow-other-keys)+ (let ((modules-dir (string-append (assoc-ref outputs "out")+ "/etc/nginx/modules")))+ (install-file "objs/ngx_rtmp_module.so" modules-dir)+ #t)))+ (delete 'fix-root-dirs)+ (delete 'install-man-page)))))+ (home-page "https://github.com/arut/nginx-rtmp-module")+ (synopsis "NGINX module for audio and video streaming with RTMP")+ (description "This NGINX module provides streaming with the @acronym{RTMP,+Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},+and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept+incoming RTMP streams for recording or redistribution. It also supports+on-demand streaming from a file on disk and pulling from an upstream RTMP+stream. Remote control of the module is possible over HTTP.")+ (license license:bsd-2)))+ (define-public lighttpd (package (name "lighttpd")-- 2.32.0
S
S
Sarah Morgensen wrote on 25 Jul 00:07 +0200
Re: bug#49539: [PATCH] gnu: Add nginx-rtmp-module.
(name . Jack Hill)(address . jackhill@jackhill.us)(address . 49539@debbugs.gnu.org)
86sg03pdqd.fsf_-_@mgsn.dev
Hi,
Glad I could help. I forgot to mention also, the `begin` probably isn'tnecessary (it's probably leftover from when it was a snippet somewhere),but as you say that can be taken care of over time.
Jack Hill <jackhill@jackhill.us> writes:
[...]
Toggle quote (4 lines)> P.S. The same opportunities for improvement exists in some of our other nginx> modules, from which I copied this phase. The next time we update those might be> a good time to clean them up.
How common is this? Would it warrant an nginx-build-system, or perhapseven a common idiom/general system for packages using multiple sources?Or are the ways in which these packages uses secondary sources differentenough that unifying them would be difficult?
--Sarah
L
L
Ludovic Courtès wrote on 29 Jul 21:48 +0200
(name . Jack Hill)(address . jackhill@jackhill.us)
87a6m4296g.fsf_-_@gnu.org
Hi,
Jack Hill <jackhill@jackhill.us> skribis:
Toggle quote (2 lines)> * gnu/packages/web.scm (nginx-rtmp-module): New variable.
Applied. Thank you and thanks to Sarah for reviewing!
Ludo’.
Closed
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send email to 49539@debbugs.gnu.org