aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/video.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/video.scm')
-rw-r--r--gnu/packages/video.scm266
1 files changed, 176 insertions, 90 deletions
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4bd2dca909..4120174484 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -42,6 +42,8 @@
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -134,6 +136,7 @@
#:use-module (gnu packages ocr)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
+ #:use-module (gnu packages perl-web)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pretty-print)
@@ -526,7 +529,7 @@ H.264 (MPEG-4 AVC) video streams.")
(define-public straw-viewer
(package
(name "straw-viewer")
- (version "0.0.2")
+ (version "0.0.6")
(source
(origin
(method git-fetch)
@@ -535,7 +538,8 @@ H.264 (MPEG-4 AVC) video streams.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "067j8wdfy29bi5ahky10xzzs8cr3mn95wl4kyqqjvjzri77a25j3"))))
+ (base32
+ "0a9g10r56jdm2jx2yg9i8j8nczq74x78c29bhannr7ybnm2r6w2a"))))
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)
@@ -610,7 +614,7 @@ available.")
(define-public x265
(package
(name "x265")
- (version "3.3")
+ (version "3.4")
(outputs '("out" "static"))
(source
(origin
@@ -620,7 +624,7 @@ available.")
(string-append "https://download.videolan.org/videolan/x265/"
"x265_" version ".tar.gz")))
(sha256
- (base32 "170b61cgpcs5n35qps0p40dqs1q81vkgagzbs4zv7pzls6718vpj"))
+ (base32 "0wl62hfsdqpf3r3z3s6l9bz7pdb1rcik5ll00b3yaadplqipy162"))
(patches (search-patches "x265-arm-flags.patch"))
(modules '((guix build utils)))
(snippet '(begin
@@ -637,8 +641,7 @@ available.")
#:configure-flags
;; Ensure position independent code for everyone.
(list "-DENABLE_PIC=TRUE"
- ,@(if (string-prefix? "armhf" (or (%current-system)
- (%current-target-system)))
+ ,@(if (target-arm?)
'("-DENABLE_ASSEMBLY=OFF")
'())
(string-append "-DCMAKE_INSTALL_PREFIX="
@@ -649,9 +652,6 @@ available.")
(lambda _
(delete-file-recursively "build")
(chdir "source")
- ;; recognize armv8 in 32-bit mode as ARM
- (substitute* "CMakeLists.txt"
- (("armv6l") "armv8l"))
#t))
(add-before 'configure 'build-12-bit
(lambda* (#:key (configure-flags '()) #:allow-other-keys)
@@ -971,7 +971,12 @@ operate properly.")
("mesa" ,mesa)
("openal" ,openal)
("pulseaudio" ,pulseaudio)
- ("rav1e" ,rav1e)
+ ;; XXX: rav1e depends on rust, which currently only works on x86_64.
+ ;; See also the related configure flag when changing this.
+ ,@(if (string-prefix? "x86_64" (or (%current-target-system)
+ (%current-system)))
+ `(("rav1e" ,rav1e))
+ '())
("sdl" ,sdl2)
("soxr" ,soxr)
("speex" ,speex)
@@ -1053,7 +1058,10 @@ operate properly.")
"--enable-libmp3lame"
"--enable-libopus"
"--enable-libpulse"
- "--enable-librav1e"
+ ,@(if (string-prefix? "x86_64" (or (%current-target-system)
+ (%current-system)))
+ '("--enable-librav1e")
+ '())
"--enable-libsoxr"
"--enable-libspeex"
"--enable-libtheora"
@@ -1118,6 +1126,24 @@ convert and stream audio and video. It includes the libavcodec
audio/video codec library.")
(license license:gpl2+)))
+;; ungoogled-chromium crashes with ffmpeg 4.3, so stick with this version for
+;; now. See <https://issues.guix.gnu.org/41987>.
+(define-public ffmpeg-4.2
+ (package
+ (inherit ffmpeg)
+ (version "4.2.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0cddkb5sma9dzy8i59sfls19rhjlq40zn9mh3x666dqkxl5ckxlx"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags flags)
+ `(delete "--enable-librav1e" ,flags))))))
+
(define-public ffmpeg-3.4
(package
(inherit ffmpeg)
@@ -1146,7 +1172,7 @@ audio/video codec library.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/stepmania/ffmpeg.git")
+ (url "https://github.com/stepmania/ffmpeg")
(commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
(sha256
(base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
@@ -1172,7 +1198,7 @@ audio/video codec library.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/dirkvdb/ffmpegthumbnailer.git")
+ (url "https://github.com/dirkvdb/ffmpegthumbnailer")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -1445,7 +1471,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mpv-player/mpv.git")
+ (url "https://github.com/mpv-player/mpv")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -1507,6 +1533,14 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(("\"youtube-dl\",")
(string-append "\"" ytdl "/bin/youtube-dl\",")))
#t)))
+ (add-before 'configure 'build-reproducibly
+ (lambda _
+ ;; Somewhere in the build system library dependencies are enumerated
+ ;; and passed as linker flags, but the order in which they are added
+ ;; varies. See <https://github.com/mpv-player/mpv/issues/7855>.
+ ;; Set PYTHONHASHSEED as a workaround for deterministic results.
+ (setenv "PYTHONHASHSEED" "1")
+ #t))
(add-before
'configure 'setup-waf
(lambda* (#:key inputs #:allow-other-keys)
@@ -1614,7 +1648,7 @@ To load this plugin, specify the following option when starting mpv:
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2020.06.06")
+ (version "2020.06.16.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@@ -1622,7 +1656,7 @@ To load this plugin, specify the following option when starting mpv:
version ".tar.gz"))
(sha256
(base32
- "1qrrr14glv0jv377n61paq55b6k58jpnwbz2sp5xfl4wnxy5hqny"))))
+ "1q0080cvxpfakgbzigbnl9adnga3jz1sqig2rsiq52rarqbc01px"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
@@ -1766,7 +1800,7 @@ other site that youtube-dl supports.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/soimort/you-get.git")
+ (url "https://github.com/soimort/you-get")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -1805,7 +1839,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/trizen/youtube-viewer.git")
+ (url "https://github.com/trizen/youtube-viewer")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -2189,7 +2223,7 @@ capabilities.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/vapoursynth/vapoursynth.git")
+ (url "https://github.com/vapoursynth/vapoursynth")
(commit (string-append "R" version))))
(file-name (git-file-name name version))
(sha256
@@ -2294,7 +2328,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/BasioMeusPuga/twitchy.git")
+ (url "https://github.com/BasioMeusPuga/twitchy")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -2333,16 +2367,16 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
(define-public mlt
(package
(name "mlt")
- (version "6.18.0")
+ (version "6.20.0")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mltframework/mlt.git")
+ (url "https://github.com/mltframework/mlt")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "0iiqym15n8kbnjzj0asmm86gs23yykz0va5b475cc4v2vv5admgx"))))
+ "14kayzas2wisyw0z27qkcm4qnxbdb7bqa0hg7gaj5kbm3nvsnafk"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests
@@ -2363,7 +2397,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
#t)))))
(inputs
`(("alsa-lib" ,alsa-lib)
- ("ffmpeg" ,ffmpeg-3.4)
+ ("ffmpeg" ,ffmpeg)
("fftw" ,fftw)
("frei0r-plugins" ,frei0r-plugins)
("gdk-pixbuf" ,gdk-pixbuf)
@@ -2430,7 +2464,7 @@ be used for realtime video capture via Linux-specific APIs.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/obsproject/obs-studio.git")
+ (url "https://github.com/obsproject/obs-studio")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -2594,17 +2628,17 @@ making @dfn{screencasts}.")
(define-public simplescreenrecorder
(package
(name "simplescreenrecorder")
- (version "0.3.11")
+ (version "0.4.2")
(source
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/MaartenBaert/ssr.git")
+ (url "https://github.com/MaartenBaert/ssr")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "0n702dnv4qshgn3b90ixvplfafjhgz6040yir5vy8khjdpciysq4"))))
+ "1dzp5yzqlha65crzklx2qlan6ssw1diwzfpc4svd7gnr858q2292"))))
(build-system cmake-build-system)
;; Although libx11, libxfixes, libxext are listed as build dependencies in
;; README.md, the program builds and functions properly without them.
@@ -2615,6 +2649,7 @@ making @dfn{screencasts}.")
("glu" ,glu)
("jack" ,jack-1)
("libxi" ,libxi)
+ ("libxinerama" ,libxinerama)
("pulseaudio" ,pulseaudio)
("qtbase" ,qtbase)
("qtx11extras" ,qtx11extras)))
@@ -2711,14 +2746,14 @@ specifications.")
(define-public libaacs
(package
(name "libaacs")
- (version "0.9.0")
+ (version "0.10.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://ftp.videolan.org/pub/videolan/libaacs/"
- version "/" name "-" version ".tar.bz2"))
+ version "/libaacs-" version ".tar.bz2"))
(sha256
- (base32 "1kms92i0c7i1yl659kqjf19lm8172pnpik5lsxp19xphr74vvq27"))))
+ (base32 "1zhjdcph8sqx7ak35s22kc736icwq135jlypggkp6vqyyygb3xlk"))))
(inputs
`(("libgcrypt" ,libgcrypt)))
(native-inputs
@@ -2739,7 +2774,7 @@ Content System specification.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/mps-youtube/mps-youtube.git")
+ (url "https://github.com/mps-youtube/mps-youtube")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -3194,7 +3229,7 @@ and ITU-T H.222.0.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/FFMS/ffms2.git")
+ (url "https://github.com/FFMS/ffms2")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -3296,7 +3331,7 @@ tools for styling them, including a built-in real-time video preview.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/pitivi/gst-transcoder.git")
+ (url "https://github.com/pitivi/gst-transcoder")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -3410,7 +3445,7 @@ It counts more than 100 plugins.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/Motion-Project/motion.git")
+ (url "https://github.com/Motion-Project/motion")
(commit (string-append "release-" version))))
(sha256
(base32
@@ -3424,7 +3459,7 @@ It counts more than 100 plugins.")
("pkg-config" ,pkg-config)))
(inputs
`(("libjpeg" ,libjpeg-turbo)
- ("ffmpeg" ,ffmpeg-3.4)
+ ("ffmpeg" ,ffmpeg)
("libmicrohttpd" ,libmicrohttpd)
("sqlite" ,sqlite)))
(arguments
@@ -3457,7 +3492,7 @@ changed. Or in other words, it can detect motion.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/alexanderwink/subdl.git")
+ (url "https://github.com/alexanderwink/subdl")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -3491,7 +3526,7 @@ save it to the appropriate filename.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/l-smash/l-smash.git")
+ (url "https://github.com/l-smash/l-smash")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -3555,7 +3590,7 @@ online.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/georgmartius/vid.stab.git")
+ (url "https://github.com/georgmartius/vid.stab")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -3704,7 +3739,7 @@ transitions, and effects and then export your film to many common formats.")
(define-public dav1d
(package
(name "dav1d")
- (version "0.7.0")
+ (version "0.7.1")
(source
(origin
(method url-fetch)
@@ -3712,7 +3747,7 @@ transitions, and effects and then export your film to many common formats.")
"/dav1d/" version "/dav1d-" version ".tar.xz"))
(sha256
(base32
- "0xcykraf42gkymzqx1k1lcdclgk9y5yf7rr56vslrgmr0r849qnk"))))
+ "1hnkfcg57bv5rib6cnj39dy1jx0q7zi5fb2fz52hf2y0bv8bad1k"))))
(build-system meson-build-system)
(native-inputs `(("nasm" ,nasm)))
(home-page "https://code.videolan.org/videolan/dav1d")
@@ -3731,7 +3766,7 @@ speed and correctness.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/atomnuker/wlstream.git")
+ (url "https://github.com/atomnuker/wlstream")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -3828,7 +3863,7 @@ to convenience of translating and batch processing of multiple documents.")
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/FNA-XNA/Theorafile.git")
+ (url "https://github.com/FNA-XNA/Theorafile")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@@ -3885,16 +3920,16 @@ transcode or reformat the videos in any way, producing perfect backups.")
(define-public svt-av1
(package
(name "svt-av1")
- (version "0.8.3")
+ (version "0.8.4")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/OpenVisualCloud/SVT-AV1.git")
+ (url "https://github.com/OpenVisualCloud/SVT-AV1")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "1rh4sz1bmrsxyxfxajsffw5jd17djcrymhwsi877v02fgln027qr"))))
+ "0xad35q9sv5w0iihcf9q1f1m7br5anl3vsyx9svnx128iqf0n997"))))
(build-system cmake-build-system)
;; SVT-AV1 only supports Intel-compatible CPUs.
(supported-systems '("x86_64-linux" "i686-linux"))
@@ -3950,7 +3985,7 @@ result in several formats:
(define-public rav1e
(package
(name "rav1e")
- (version "0.3.0")
+ (version "0.3.3")
(source
(origin
(method url-fetch)
@@ -3959,60 +3994,54 @@ result in several formats:
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1bsmj8kqzs5pf8dl98rsl6a67cljj1gkj3b5hmd8hn8wdy4ya173"))))
+ "053bh8hc6jj81ydq4gcak01b0ady59hvkl7d87im3y8nafg7xzb4"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
- (("rust-simd-helpers" ,rust-simd-helpers-0.1)
- ("rust-ivf" ,rust-ivf-0.1)
- ("rust-cfg-if" ,rust-cfg-if-0.1)
- ("rust-paste" ,rust-paste-0.1)
- ("rust-signal-hook" ,rust-signal-hook-0.1)
- ("rust-aom-sys" ,rust-aom-sys-0.1)
- ("rust-nasm-rs" ,rust-nasm-rs-0.1)
+ (("rust-aom-sys" ,rust-aom-sys-0.1)
("rust-arbitrary" ,rust-arbitrary-0.2)
- ("rust-better-panic" ,rust-better-panic-0.2)
- ("rust-noop-proc-macro"
- ,rust-noop-proc-macro-0.2)
- ("rust-num-traits" ,rust-num-traits-0.2)
- ("rust-rand-chacha" ,rust-rand-chacha-0.2)
- ("rust-err-derive" ,rust-err-derive-0.2)
- ("rust-interpolate-name"
- ,rust-interpolate-name-0.2)
- ("rust-rustc-version" ,rust-rustc-version-0.2)
- ("rust-scan-fmt" ,rust-scan-fmt-0.2)
- ("rust-libc" ,rust-libc-0.2)
- ("rust-image" ,rust-image-0.22)
- ("rust-arg-enum-proc-macro"
- ,rust-arg-enum-proc-macro-0.3)
- ("rust-num-derive" ,rust-num-derive-0.3)
- ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
+ ("rust-arg-enum-proc-macro" ,rust-arg-enum-proc-macro-0.3)
+ ("rust-arrayvec" ,rust-arrayvec-0.5)
("rust-backtrace" ,rust-backtrace-0.3)
+ ("rust-bitstream-io" ,rust-bitstream-io-0.8)
+ ("rust-byteorder" ,rust-byteorder-1.3)
+ ("rust-cfg-if" ,rust-cfg-if-0.1)
+ ("rust-clap" ,rust-clap-2)
+ ("rust-console" ,rust-console-0.11)
+ ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
+ ("rust-fern" ,rust-fern-0.6)
+ ("rust-image" ,rust-image-0.23)
+ ("rust-interpolate-name" ,rust-interpolate-name-0.2)
+ ("rust-itertools" ,rust-itertools-0.9)
+ ("rust-ivf" ,rust-ivf-0.1)
+ ("rust-libc" ,rust-libc-0.2)
("rust-log" ,rust-log-0.4)
- ("rust-y4m" ,rust-y4m-0.5)
- ("rust-arrayvec" ,rust-arrayvec-0.5)
- ("rust-toml" ,rust-toml-0.5)
- ("rust-fern" ,rust-fern-0.5)
- ("rust-rust-hawktracer"
- ,rust-rust-hawktracer-0.7)
+ ("rust-noop-proc-macro" ,rust-noop-proc-macro-0.2)
+ ("rust-num-derive" ,rust-num-derive-0.3)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-paste" ,rust-paste-0.1)
("rust-rand" ,rust-rand-0.7)
- ("rust-itertools" ,rust-itertools-0.8)
- ("rust-bitstream-io" ,rust-bitstream-io-0.8)
- ("rust-console" ,rust-console-0.9)
+ ("rust-rand-chacha" ,rust-rand-chacha-0.2)
+ ("rust-rayon" ,rust-rayon-1)
+ ("rust-rust-hawktracer" ,rust-rust-hawktracer-0.7)
+ ("rust-scan-fmt" ,rust-scan-fmt-0.2)
("rust-serde" ,rust-serde-1.0)
+ ("rust-signal-hook" ,rust-signal-hook-0.1)
+ ("rust-simd-helpers" ,rust-simd-helpers-0.1)
+ ("rust-thiserror" ,rust-thiserror-1.0)
+ ("rust-toml" ,rust-toml-0.5)
+ ("rust-y4m" ,rust-y4m-0.5)
("rust-cc" ,rust-cc-1.0)
- ("rust-rayon" ,rust-rayon-1.3)
- ("rust-byteorder" ,rust-byteorder-1.3)
- ("rust-clap" ,rust-clap-2)
+ ("rust-nasm-rs" ,rust-nasm-rs-0.1)
+ ("rust-rustc-version" ,rust-rustc-version-0.2)
("rust-vergen" ,rust-vergen-3.1))
#:cargo-development-inputs
- (("rust-rand-chacha" ,rust-rand-chacha-0.2)
- ("rust-interpolate-name"
- ,rust-interpolate-name-0.2)
+ (("rust-assert-cmd" ,rust-assert-cmd-1)
("rust-criterion" ,rust-criterion-0.3)
- ("rust-pretty-assertions"
- ,rust-pretty-assertions-0.6)
+ ("rust-interpolate-name" ,rust-interpolate-name-0.2)
+ ("rust-pretty-assertions" ,rust-pretty-assertions-0.6)
("rust-rand" ,rust-rand-0.7)
+ ("rust-rand-chacha" ,rust-rand-chacha-0.2)
("rust-semver" ,rust-semver-0.9))
#:phases
(modify-phases %standard-phases
@@ -4039,7 +4068,7 @@ result in several formats:
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/phw/peek.git")
+ (url "https://github.com/phw/peek")
(commit version)))
(file-name (git-file-name name version))
(sha256
@@ -4073,7 +4102,7 @@ can also directly record to WebM or MP4 if you prefer.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/ammen99/wf-recorder.git")
+ (url "https://github.com/ammen99/wf-recorder")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
@@ -4134,3 +4163,60 @@ brightness, contrast, and frame rate.")
;; 'COPYING' is GPLv3 but source headers say GPLv2+.
(license license:gpl2+)))
+
+(define-public get-iplayer
+ (package
+ (name "get-iplayer")
+ (version "3.26")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/get-iplayer/get_iplayer")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0lsz5hz1ia5j612540rb0f31y7j2k5gf7x5i43l8k06b90wi73d6"))))
+ (build-system perl-build-system)
+ (arguments
+ `(#:tests? #f ; no tests
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/share/man/man1")))
+ (install-file "get_iplayer" bin)
+ (install-file "get_iplayer.cgi" bin)
+ (install-file "get_iplayer.1" man))
+ #t))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (perllib (string-append out "/lib/perl5/site_perl/"
+ ,(package-version perl))))
+ (wrap-program (string-append out "/bin/get_iplayer")
+ `("PERL5LIB" ":"
+ prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
+ (wrap-program (string-append out "/bin/get_iplayer.cgi")
+ `("PERL5LIB" ":"
+ prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
+ #t))))))
+ (inputs
+ `(("perl-mojolicious" ,perl-mojolicious)
+ ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
+ ("perl-xml-libxml" ,perl-xml-libxml)))
+ (home-page "https://github.com/get-iplayer/get_iplayer")
+ (synopsis "Download or stream available BBC iPlayer TV and radio programmes")
+ (description "@code{get_iplayer} lists, searches and records BBC iPlayer
+TV/Radio, BBC Podcast programmes. Other third-party plugins may be available.
+@code{get_iplayer} has three modes: recording a complete programme for later
+playback, streaming a programme directly to a playback application, such as
+mplayer; and as a @dfn{Personal Video Recorder} (PVR), subscribing to search
+terms and recording programmes automatically. It can also stream or record live
+BBC iPlayer output.")
+ (license license:gpl3+)))