X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/f136c8f23d6dc0b52540456d50187f3417afb5e3..1fe5791d8dd78914941d9ef370ef9e49808c9c9e:/gnu/packages/video.scm diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e4e71e9dcc..af45f0f3db 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge ;;; Copyright © 2014, 2015, 2016 David Thompson -;;; Copyright © 2014, 2015, 2016 Mark H Weaver +;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2015 Andy Patterson @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2016 Dmitry Nikolaev ;;; Copyright © 2016 Andy Patterson -;;; Copyright © 2016, 2017 ng0 +;;; Copyright © 2016, 2017 Nils Gillmann ;;; Copyright © 2016 Eric Bavier ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Feng Shu @@ -19,11 +19,12 @@ ;;; Copyright © 2017 Chris Marusich ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017 Ethan R. Jones -;;; Copyright © 2017 Clément Lassieur +;;; Copyright © 2017, 2018 Clément Lassieur ;;; Copyright © 2017 Gregor Giesen ;;; Copyright © 2017, 2018 Rutger Helling ;;; Copyright © 2018 Roel Janssen ;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2018 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,6 +44,7 @@ (define-module (gnu packages video) #:use-module (ice-9 match) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) #:use-module (guix packages) @@ -56,11 +58,13 @@ #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system waf) + #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) + #:use-module (gnu packages backup) #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages boost) @@ -92,6 +96,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages iso-codes) + #:use-module (gnu packages libidn) #:use-module (gnu packages libreoffice) #:use-module (gnu packages linux) #:use-module (gnu packages lua) @@ -108,7 +113,9 @@ #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages qt) + #:use-module (gnu packages rdesktop) #:use-module (gnu packages ruby) + #:use-module (gnu packages samba) #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) #:use-module (gnu packages shells) @@ -116,6 +123,7 @@ #:use-module (gnu packages texinfo) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) + #:use-module (gnu packages upnp) #:use-module (gnu packages version-control) #:use-module (gnu packages vulkan) #:use-module (gnu packages web) @@ -153,22 +161,22 @@ (let ((out (assoc-ref outputs "out")) (ncurses (assoc-ref inputs "ncurses"))) (setenv "CONFIG_SHELL" (which "bash")) - (zero? (system* "./configure" - (string-append "--prefix=" out) - (string-append "--build=" build) - ;; The ancient config.guess is unable to - ;; guess the host triplet on mips64el. - ,@(if (string=? "mips64el-linux" - (%current-system)) - '("--host=mips64el-unknown-linux-gnu") - '()) - ;; The same is also true with aarch64. - ,@(if (string=? "aarch64-linux" - (%current-system)) - '("--host=aarch64-unknown-linux-gnu") - '()) - (string-append "--with-ncurses=" - ncurses))))))))) + (invoke "./configure" + (string-append "--prefix=" out) + (string-append "--build=" build) + ;; The ancient config.guess is unable to + ;; guess the host triplet on mips64el. + ,@(if (string=? "mips64el-linux" + (%current-system)) + '("--host=mips64el-unknown-linux-gnu") + '()) + ;; The same is also true with aarch64. + ,@(if (string=? "aarch64-linux" + (%current-system)) + '("--host=aarch64-unknown-linux-gnu") + '()) + (string-append "--with-ncurses=" + ncurses)))))))) (home-page "http://aa-project.sourceforge.net/aalib/") (synopsis "ASCII-art library") (description @@ -206,9 +214,8 @@ old-fashioned output methods with powerful ascii-art renderer.") (modify-phases %standard-phases ;; XXX We need to run ./bootstrap because of the build ;; system fixes above. - (add-after - 'unpack 'bootstrap - (lambda _ (zero? (system* "sh" "bootstrap"))))))) + (replace 'bootstrap + (lambda _ (invoke "sh" "bootstrap")))))) (home-page "http://liba52.sourceforge.net/") (synopsis "ATSC A/52 stream decoder") (description "liba52 is a library for decoding ATSC A/52 streams. The @@ -304,15 +311,15 @@ H.264 (MPEG-4 AVC) video streams.") (base32 "0hknnnnx9661igm1r73dc7aqxnnrl5a8yvyvr1nhd9ymn2klwpl5")) (modules '((guix build utils))) - (snippet - '(begin - ;; Delete bundled libraries. - (for-each delete-file-recursively - '("lib/libebml" - "lib/libmatroska" - "lib/nlohmann-json" - "lib/pugixml" - "lib/utf8-cpp")))))) + (snippet '(begin + ;; Delete bundled libraries. + (for-each delete-file-recursively + '("lib/libebml" + "lib/libmatroska" + "lib/nlohmann-json" + "lib/pugixml" + "lib/utf8-cpp")) + #t)))) (build-system gnu-build-system) (inputs `(("boost" ,boost) @@ -360,13 +367,13 @@ H.264 (MPEG-4 AVC) video streams.") (replace 'build (lambda _ (let ((-j (list "-j" (number->string (parallel-job-count))))) - (zero? (apply system* "rake" -j))))) + (apply invoke "rake" -j)))) (replace 'check (lambda _ - (zero? (system* "rake" "tests/unit")))) + (invoke "rake" "tests/unit"))) (replace 'install (lambda _ - (zero? (system* "rake" "install"))))))) + (invoke "rake" "install")))))) (home-page "https://mkvtoolnix.download") (synopsis "Tools to create, alter and inspect Matroska files") (description @@ -378,7 +385,7 @@ and creating Matroska files from other media files (@code{mkvmerge}).") (define-public x265 (package (name "x265") - (version "2.6") + (version "2.8") (source (origin (method url-fetch) @@ -386,15 +393,19 @@ and creating Matroska files from other media files (@code{mkvmerge}).") "x265_" version ".tar.gz")) (sha256 (base32 - "1gyd94jkwdii9308m07nymsbxrmrcl81c0j8i10zhslr2mj07w0v")) + "0qx8mavwdzdpkkby7n29i9av7zsnklavacwfz537mf62q2pzjnbf")) + (patches (search-patches "x265-fix-ppc64le-build.patch")) (modules '((guix build utils))) - (snippet - '(delete-file-recursively "source/compat/getopt")))) + (snippet '(begin + (delete-file-recursively "source/compat/getopt") + #t)))) (build-system cmake-build-system) (arguments `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built - ;; Currently the source code doesn't check for aarch64 - ,@(if (string-prefix? "aarch64" (or (%current-target-system) (%current-system))) + ;; Currently the source code doesn't check for aarch64. + ,@(if (any (cute string-prefix? <> (or (%current-system) + (%current-target-system))) + '("armhf" "aarch64")) '(#:configure-flags '("-DENABLE_PIC=TRUE")) '()) #:phases @@ -470,7 +481,7 @@ canvas operations.") (define-public libdca (package (name "libdca") - (version "0.0.5") + (version "0.0.6") (source (origin (method url-fetch) (uri (string-append @@ -478,7 +489,7 @@ canvas operations.") version "/libdca-" version ".tar.bz2")) (sha256 (base32 - "0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v")))) + "0h0zvcn97i9kyljdpifzi8in9xnw31fx3b3ggj96p8h0l2d8mycq")))) (build-system gnu-build-system) (home-page "https://www.videolan.org/developers/libdca.html") (synopsis "DTS Coherent Acoustics decoder") @@ -513,7 +524,7 @@ SMPTE 314M.") (define-public libmatroska (package (name "libmatroska") - (version "1.4.8") + (version "1.4.9") (source (origin (method url-fetch) @@ -521,12 +532,14 @@ SMPTE 314M.") name "/" name "-" version ".tar.xz")) (sha256 (base32 - "14n9sw974prr3yp4yjb7aadi6x2yz5a0hjw8fs3qigy5shh2piyq")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) + "1j4mjzx6mjzfjf9hz8g4w84krf5jccmr5cyynll0j1vwv3aiv9iq")))) + (build-system cmake-build-system) (inputs `(("libebml" ,libebml))) + (arguments + `(#:configure-flags + (list "-DBUILD_SHARED_LIBS=YES") + #:tests? #f)) ; no test suite (home-page "https://www.matroska.org") (synopsis "C++ library to parse Matroska files (.mkv and .mka)") (description @@ -541,7 +554,7 @@ libebml is a C++ library to read and write EBML files.") (define-public libva (package (name "libva") - (version "2.0.0") + (version "2.1.0") (source (origin (method url-fetch) @@ -553,7 +566,7 @@ libebml is a C++ library to read and write EBML files.") (string-append "https://www.freedesktop.org/software/vaapi/releases/" "libva/libva-" version "/libva-" version ".tar.bz2"))) (sha256 - (base32 "0cz5i62jnibmnx0i80i9yipq39v16qr6fw461f6hvrh9lbwh21mv")))) + (base32 "03sb1b3fxw8myf9kz6rxw5f3v1p0vfmk34779qx0q8fk24x9bypk")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -562,7 +575,8 @@ libebml is a C++ library to read and write EBML files.") ("libx11" ,libx11) ("libxext" ,libxext) ("libxfixes" ,libxfixes) - ("mesa" ,mesa))) + ("mesa" ,mesa) + ("wayland" ,wayland))) (arguments `(#:phases (modify-phases %standard-phases @@ -572,7 +586,8 @@ libebml is a C++ library to read and write EBML files.") (let ((out (assoc-ref outputs "out"))) (substitute* "va/drm/va_drm_auth_x11.c" (("\"libva-x11\\.so\\.%d\"") - (string-append "\"" out "/lib/libva-x11.so.%d\""))))))) + (string-append "\"" out "/lib/libva-x11.so.%d\""))) + #t)))) ;; Most drivers are in mesa's $prefix/lib/dri, so use that. (Can be ;; overridden at run-time via LIBVA_DRIVERS_PATH.) #:configure-flags @@ -595,14 +610,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (define-public ffmpeg (package (name "ffmpeg") - (version "3.4.2") + (version "4.0.1") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "0h6prjn1ijkzzhkyj8mazp0wpx7m0n9ycadjxagf9czqirbyk4ib")))) + "1vn04n0n46zdxq14cma3w8ml2ckh5jxwlybsc4xmvcqdqq0mqpv0")))) (build-system gnu-build-system) (inputs `(("fontconfig" ,fontconfig) @@ -744,13 +759,13 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (("#! /bin/sh") (string-append "#!" (which "sh")))) (setenv "SHELL" (which "bash")) (setenv "CONFIG_SHELL" (which "bash")) - (zero? (apply system* - "./configure" - (string-append "--prefix=" out) - ;; Add $libdir to the RUNPATH of all the binaries. - (string-append "--extra-ldflags=-Wl,-rpath=" - out "/lib") - configure-flags))))) + (apply invoke + "./configure" + (string-append "--prefix=" out) + ;; Add $libdir to the RUNPATH of all the binaries. + (string-append "--extra-ldflags=-Wl,-rpath=" + out "/lib") + configure-flags)))) (add-before 'check 'set-ld-library-path (lambda _ @@ -768,6 +783,18 @@ convert and stream audio and video. It includes the libavcodec audio/video codec library.") (license license:gpl2+))) +(define-public ffmpeg-3.4 + (package + (inherit ffmpeg) + (version "3.4.2") + (source (origin + (method url-fetch) + (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" + version ".tar.xz")) + (sha256 + (base32 + "0h6prjn1ijkzzhkyj8mazp0wpx7m0n9ycadjxagf9czqirbyk4ib")))))) + (define-public ffmpeg-2.8 (package (inherit ffmpeg) @@ -788,29 +815,10 @@ audio/video codec library.") flag)) ,flags)))))) -;; Annoyingly enough, the latest mpv release does not build with the stable -;; release of ffmpeg. Use a git commit until the situation is fixed. -(define-public ffmpeg-git - (let ((commit "3f887440677328c9cfed97ad81d14051ffa32aae") - (revision "1")) - (package - (inherit ffmpeg) - (name "ffmpeg-git") - (version (string-append "3.4-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/FFmpeg/FFmpeg.git") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1b7n3g4m2rbvrwsgbfl8wl91z42g1ld42clwxs8qpl9ny5rwz6sq"))))))) - (define-public vlc (package (name "vlc") - (version "2.2.8") + (version "3.0.3") (source (origin (method url-fetch) (uri (string-append @@ -818,55 +826,90 @@ audio/video codec library.") version "/vlc-" version ".tar.xz")) (sha256 (base32 - "1v32snw46rkgbdqdy3dssl2y13i8p2cr1cw1i18r6vdmiy24dw4v")))) + "0lavzly8l0ll1d9iris9cnirgcs77g48lxj14058dxqkvd5v1a4v")))) (build-system gnu-build-system) (native-inputs - `(("git" ,git) ; needed for a test + `(("flex" ,flex) + ("bison" ,bison) + ("gettext" ,gettext-minimal) + ("git" ,git) ; needed for a test ("pkg-config" ,pkg-config))) ;; FIXME: Add optional inputs once available. (inputs `(("alsa-lib" ,alsa-lib) ("avahi" ,avahi) ("dbus" ,dbus) + ("eudev" ,eudev) ("flac" ,flac) - ("ffmpeg" ,ffmpeg-2.8) ;fails to build against ffmpeg 3.0 + ("ffmpeg" ,ffmpeg) ("fontconfig" ,fontconfig) ("freetype" ,freetype) + ("fribidi" ,fribidi) ("gnutls" ,gnutls) ("liba52" ,liba52) + ("libarchive" ,libarchive) + ("libass" ,libass) + ("libavc1394" ,libavc1394) + ("libbluray" ,libbluray) + ("libcaca" ,libcaca) ("libcddb" ,libcddb) + ("libdca" ,libdca) ("libdvbpsi" ,libdvbpsi) + ("libdvdnav" ,libdvdnav) + ("libdvdread" ,libdvdread) + ("libebml" ,libebml) ("libgcrypt" ,libgcrypt) + ("libidn" ,libidn) ("libkate" ,libkate) ("libmad" ,libmad) + ("libmatroska" ,libmatroska) + ("libmodplug" ,libmodplug) + ("libmpeg2" ,libmpeg2) ("libogg" ,libogg) ("libpng" ,libpng) + ("libraw1394" ,libraw1394) + ("librsvg" ,librsvg) ("libsamplerate" ,libsamplerate) + ("libsecret" ,libsecret) ("libssh2" ,libssh2) + ("libupnp" ,libupnp) + ("libva" ,libva) + ("libvdpau" ,libvdpau) ("libvorbis" ,libvorbis) + ("libvpx" ,libvpx) ("libtheora" ,libtheora) + ("libx264" ,libx264) ("libxext" ,libxext) ("libxi" ,libxi) ("libxinerama" ,libxinerama) ("libxml2" ,libxml2) ("libxpm" ,libxpm) ("livemedia-utils" ,livemedia-utils) - ("lua" ,lua-5.1) + ("lua" ,lua-5.2) ("mesa" ,mesa) ("opus" ,opus) ("perl" ,perl) ("pulseaudio" ,pulseaudio) ("python" ,python-wrapper) ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg) ("qtx11extras" ,qtx11extras) + ("samba" ,samba) ("sdl" ,sdl) ("sdl-image" ,sdl-image) ("speex" ,speex) + ("speexdsp" ,speexdsp) + ("taglib" ,taglib) + ("twolame" ,twolame) + ("unzip" ,unzip) + ("wayland" ,wayland) + ("wayland-protocols" ,wayland-protocols) ("x265" ,x265) ("xcb-util-keysyms" ,xcb-util-keysyms))) (arguments `(#:configure-flags `("CXXFLAGS=-std=gnu++11" + "BUILDCC=gcc" ,(string-append "LDFLAGS=-Wl,-rpath -Wl," (assoc-ref %build-inputs "ffmpeg") "/lib")) ;needed for the tests @@ -883,11 +926,24 @@ audio/video codec library.") ;; which fails in our sandboxed build system (substitute* "test/run_vlc.sh" (("./vlc --ignore-config") "echo")) - ;; XXX Likely not needed for >2.2.6. - (substitute* "modules/gui/qt4/components/interface_widgets.cpp" - (("") "")) + + ;; modules/text_renderer/freetype/text_layout.c uses a + ;; now-deprecated interface 'fribidi_get_par_embedding_levels' + ;; from fribidi.h, so for now we enable the use of deprecated + ;; fribidi interfaces from this file. + ;; FIXME: Try removing this for vlc >= 3.0.3. + (substitute* "modules/text_renderer/freetype/text_layout.c" + (("# define FRIBIDI_NO_DEPRECATED 1") "")) + + ;; Fix build against Qt 5.11. + (substitute* "modules/gui/qt/actions_manager.cpp" + (("#include ") "#include +#include ")) + (substitute* "modules/gui/qt/components/simple_preferences.cpp" + (("#include ") "#include +#include ")) #t))) - (add-after 'install 'regenerate-plugin-cache + (add-after 'strip 'regenerate-plugin-cache (lambda* (#:key outputs #:allow-other-keys) ;; The 'install-exec-hook' rule in the top-level Makefile.am ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using @@ -904,9 +960,16 @@ audio/video codec library.") (for-each (lambda (file) (let ((s (lstat file))) (unless (eq? (stat:type s) 'symlink) - (utime file 0 0 0 0)))) + (utime file 1 1)))) (find-files plugindir)) - (zero? (system* cachegen plugindir)))))))) + (invoke cachegen plugindir)))) + (add-after 'install 'wrap-executable + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (plugin-path (getenv "QT_PLUGIN_PATH"))) + (wrap-program (string-append out "/bin/vlc") + `("QT_PLUGIN_PATH" ":" prefix (,plugin-path)))) + #t))))) (home-page "https://www.videolan.org/") (synopsis "Audio and video framework") (description "VLC is a cross-platform multimedia player and framework @@ -976,8 +1039,7 @@ treaming protocols.") (("#! /bin/sh") (string-append "#!" (which "sh")))) (setenv "SHELL" (which "bash")) (setenv "CONFIG_SHELL" (which "bash")) - (zero? (system* - "./configure" + (invoke "./configure" (string-append "--extra-cflags=-I" libx11 "/include") ; to detect libx11 "--disable-ffmpeg_a" ; disables bundled ffmpeg @@ -999,7 +1061,7 @@ treaming protocols.") (or (%current-target-system) (nix-system->gnu-triplet (%current-system))))))) - "--disable-iwmmxt")))))))) + "--disable-iwmmxt"))))))) (home-page "https://www.mplayerhq.hu/design7/news.html") (synopsis "Audio and video player") (description "MPlayer is a movie player. It plays most MPEG/VOB, AVI, @@ -1030,7 +1092,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (inputs `(("alsa-lib" ,alsa-lib) ("enca" ,enca) - ("ffmpeg" ,ffmpeg-git) + ("ffmpeg" ,ffmpeg) ("jack" ,jack-1) ("ladspa" ,ladspa) ("lcms" ,lcms) @@ -1058,11 +1120,11 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") ("pulseaudio" ,pulseaudio) ("rsound" ,rsound) ("shaderc" ,shaderc) - ("vulkan-icd-loader" ,vulkan-icd-loader) + ("vulkan-loader" ,vulkan-loader) ("waf" ,python-waf) ("wayland" ,wayland) ("wayland-protocols" ,wayland-protocols) - ("libxkbcommon", libxkbcommon) + ("libxkbcommon" ,libxkbcommon) ("youtube-dl" ,youtube-dl) ("zlib" ,zlib))) (arguments @@ -1072,7 +1134,8 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") 'configure 'setup-waf (lambda* (#:key inputs #:allow-other-keys) (copy-file (assoc-ref inputs "waf") "waf") - (setenv "CC" "gcc")))) + (setenv "CC" "gcc") + #t))) #:configure-flags (list "--enable-libmpv-shared" "--enable-cdda" "--enable-dvdread" @@ -1158,7 +1221,7 @@ access to mpv's powerful playback capabilities.") (define-public youtube-dl (package (name "youtube-dl") - (version "2018.02.26") + (version "2018.06.19") (source (origin (method url-fetch) (uri (string-append "https://yt-dl.org/downloads/" @@ -1166,7 +1229,7 @@ access to mpv's powerful playback capabilities.") version ".tar.gz")) (sha256 (base32 - "0ijjnx8qjxk07v5dbz3n5z3cvz8dlkmh7jkyvgng7inl74c29zq5")))) + "0ys2mc84r7mjpn7rykb57sn3ii1kp3divjdn2ivwqknj8jrzg3z6")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion @@ -1276,7 +1339,7 @@ other site that youtube-dl supports.") (define-public you-get (package (name "you-get") - (version "0.4.1025") + (version "0.4.1077") (source (origin (method url-fetch) (uri (string-append @@ -1285,7 +1348,7 @@ other site that youtube-dl supports.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "10103jw1gzar85jlajzl9wslk08vw21n26hkhfcz5bvkm9lxxs2c")))) + "04vxc91k627qgsqs8dhqajrb6vpj4pw21jlwbha28qakfiz2x11k")))) (build-system python-build-system) (inputs `(("ffmpeg" ,ffmpeg))) ; for multi-part and >=1080p videos @@ -1315,7 +1378,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.") (define-public youtube-viewer (package (name "youtube-viewer") - (version "3.3.3") + (version "3.3.4") (source (origin (method url-fetch) (uri (string-append @@ -1324,7 +1387,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1j572his6qmazlmyrbnfq62s9bqml875ay7wy26byy9hfc7m0vgk")))) + "1dqaxkz5svv0lmxds6lppcpzhkq6gar2raw9gx6imrd7yz02fpgn")))) (build-system perl-build-system) (native-inputs `(("perl-module-build" ,perl-module-build))) @@ -1344,16 +1407,18 @@ audio, images) from the Web. It can use either mpv or vlc for playback.") (guix build utils) (srfi srfi-26)) #:module-build-flags '("--gtk") - #:phases (modify-phases %standard-phases - (add-after 'install 'wrap-program - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin-dir (string-append (assoc-ref outputs "out") - "/bin/")) - (perl-path (getenv "PERL5LIB"))) - (for-each (cut wrap-program <> - `("PERL5LIB" ":" prefix (,perl-path))) - (find-files bin-dir)) - #t)))))) + #:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin-dir (string-append out "/bin/")) + (site-dir (string-append out "/lib/perl5/site_perl/")) + (lib-path (getenv "PERL5LIB"))) + (for-each (cut wrap-program <> + `("PERL5LIB" ":" prefix (,lib-path ,site-dir))) + (find-files bin-dir)) + #t)))))) (synopsis "Lightweight application for searching and streaming videos from YouTube") (description @@ -1509,7 +1574,7 @@ encapsulated.") (define-public libdvdcss (package (name "libdvdcss") - (version "1.4.1") + (version "1.4.2") (source (origin (method url-fetch) (uri (string-append "https://download.videolan.org/pub/" @@ -1517,7 +1582,7 @@ encapsulated.") name "-" version ".tar.bz2")) (sha256 (base32 - "1b7awvyahivglp7qmgx2g5005kc5npv257gw7wxdprjsnx93f1zb")))) + "0x957zzpf4w2cp8zlk29prj8i2q6hay3lzdzsyz8y3cwxivyvhkq")))) (build-system gnu-build-system) (home-page "https://www.videolan.org/developers/libdvdcss.html") (synopsis "Library for accessing DVDs as block devices") @@ -1699,10 +1764,9 @@ capabilities.") (arguments '(#:phases (modify-phases %standard-phases - (add-after - 'unpack 'autogen - (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) + (add-after 'unpack 'autogen + (lambda _ + (invoke "sh" "autogen.sh")))))) (home-page "http://www.vapoursynth.com/") (synopsis "Video processing framework") (description "VapourSynth is a C++ library and Python module for video @@ -1751,14 +1815,14 @@ and custom quantization matrices.") (define-public streamlink (package (name "streamlink") - (version "0.10.0") + (version "0.11.0") (source (origin (method url-fetch) (uri (pypi-uri "streamlink" version)) (sha256 (base32 - "17299xnd9jzi7m1d2rr4xdlj47q64bzj2957nlsrhw0hskds1s6h")))) + "02h8b3k8l5zz4vjm0nhxvl1pm924jms8y7sjl40fbybrzvsa4mg2")))) (build-system python-build-system) (home-page "https://github.com/streamlink/streamlink") (native-inputs @@ -1771,7 +1835,8 @@ and custom quantization matrices.") ("python-iso3166" ,python-iso3166) ("python-iso639" ,python-iso639) ("python-pycryptodome" ,python-pycryptodome) - ("python-requests" ,python-requests))) + ("python-requests" ,python-requests) + ("python-urllib3" ,python-urllib3))) (synopsis "Extract streams from various services") (description "Streamlink is command-line utility that extracts streams from sites like Twitch.tv and pipes them into a video player of choice.") @@ -1780,6 +1845,43 @@ from sites like Twitch.tv and pipes them into a video player of choice.") (define-public livestreamer (deprecated-package "livestreamer" streamlink)) +(define-public twitchy + (let ((commit "0c0f925b9c7ff2aed4a3b0046561cb794143c398")) ;Fixes tests. + (package + (name "twitchy") + (version (git-version "3.2" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BasioMeusPuga/twitchy.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02aizvsr744sh8bdqvwwsmp2qpczlzn8fy76h5dyd3517n9nlcz9")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'check-setup + (lambda _ + (setenv "HOME" (getcwd)) ;Needs to write to ‘$HOME’. + #t)) + (add-after 'install 'install-rofi-plugin + (lambda* (#:key outputs #:allow-other-keys) + (install-file "plugins/rofi-twitchy" + (string-append (assoc-ref outputs "out") + "/bin"))))))) + (inputs + `(("python-requests" ,python-requests) + ("streamlink" ,streamlink))) + (home-page "https://github.com/BasioMeusPuga/twitchy") + (synopsis "Command-line interface for Twitch.tv") + (description + "This package provides a command-line interface for Twitch.tv") + (license license:gpl3+)))) + (define-public mlt (package (name "mlt") @@ -1793,10 +1895,11 @@ from sites like Twitch.tv and pipes them into a video player of choice.") (base32 "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47")) (modules '((guix build utils))) - (snippet - ;; As of glibc 2.26, no longer is. - '(substitute* "src/framework/mlt_property.h" - (("xlocale\\.h") "locale.h"))))) + (snippet '(begin + ;; As of glibc 2.26, no longer is. + (substitute* "src/framework/mlt_property.h" + (("xlocale\\.h") "locale.h")) + #t)))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests @@ -1817,7 +1920,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.") #t))))) (inputs `(("alsa-lib" ,alsa-lib) - ("ffmpeg" ,ffmpeg) + ("ffmpeg" ,ffmpeg-3.4) ("fftw" ,fftw) ("libxml2" ,libxml2) ("jack" ,jack-1) @@ -1933,9 +2036,9 @@ and JACK.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("dri2proto" ,dri2proto) - ("libx11" ,libx11 "out") - ("libxext" ,libxext))) + `(("libx11" ,libx11 "out") + ("libxext" ,libxext) + ("xorgproto" ,xorgproto))) (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/") (synopsis "Video Decode and Presentation API") (description "VDPAU is the Video Decode and Presentation API for UNIX. It @@ -1982,7 +2085,8 @@ implementation.") "1x2ag1f2fwa4yh1g5spv99w9x1m33hbxlqwyhm205ssq0ra234bx")) (patches (search-patches "libvdpau-va-gl-unbundle.patch")) (modules '((guix build utils))) - (snippet '(delete-file-recursively "3rdparty")))) + (snippet '(begin (delete-file-recursively "3rdparty") + #t)))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; Tests require a running X11 server, with VA-API support. @@ -2036,7 +2140,7 @@ making @dfn{screencasts}.") (define-public simplescreenrecorder (package (name "simplescreenrecorder") - (version "0.3.9") + (version "0.3.11") (source (origin (method url-fetch) @@ -2045,7 +2149,7 @@ making @dfn{screencasts}.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1gnf9wbiq2fcbqcn1a5nfmp8r0nxrrlgh2wly2mfkkwymynhx0pk")))) + "0l6irdadqpajvv0dj3ngs1231n559l0y1pykhs2h7526qm4w7xal")))) (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. @@ -2090,10 +2194,11 @@ Other features include a live preview and live streaming.") "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn")))) (build-system gnu-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen.sh - (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen.sh + (lambda _ + (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake))) @@ -2158,7 +2263,7 @@ Content System specification.") (define-public mps-youtube (package (name "mps-youtube") - (version "0.2.7.1") + (version "0.2.8") (source (origin (method url-fetch) @@ -2167,7 +2272,7 @@ Content System specification.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1s7h35yx6f0szf8mm8612ic913w3v05m2kwphjfcxnpq0ammhyci")))) + "0x7cmfh199q9j396v7bz81nnvanfllhsg86489i5dw2p3yyc9wnm")))) (build-system python-build-system) (arguments ;; Tests need to be disabled until #556 upstream is fixed. It reads as if the @@ -2249,7 +2354,7 @@ supported players in addition to this package.") `(#:tests? #f ;tests require Ruby and claim to be unsupported #:phases (modify-phases %standard-phases - (add-before 'patch-source-shebangs 'bootstrap-gtk + (replace 'bootstrap ;; Run bootstrap ahead of time so that shebangs get patched. (lambda _ (setenv "CONFIG_SHELL" (which "sh")) @@ -2257,7 +2362,7 @@ supported players in addition to this package.") ;; Patch the Makefile so that it doesn't bootstrap again. (substitute* "gtk/module.rules" ((".*autogen\\.sh.*") "")) - (zero? (system* "sh" "./gtk/autogen.sh")))) + (invoke "sh" "./gtk/autogen.sh"))) (add-before 'configure 'disable-contrib (lambda _ (substitute* "make/include/main.defs" @@ -2279,9 +2384,9 @@ supported players in addition to this package.") ;; errors on unrecognized arguments, ;; e.g. --enable-fast-install (let ((out (assoc-ref outputs "out"))) - (zero? (apply system* "./configure" - (string-append "--prefix=" out) - (or configure-flags '())))))) + (apply invoke "./configure" + (string-append "--prefix=" out) + (or configure-flags '()))))) (add-after 'configure 'chdir-build (lambda _ (chdir "./build") #t))))) (home-page "https://handbrake.fr") @@ -2414,7 +2519,7 @@ practically any type of media.") #t)) (add-after 'change-to-build-dir 'autogen (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) + (invoke "sh" "autogen.sh")))))) (home-page "https://mediaarea.net/en/MediaInfo") (synopsis "Library for retrieving media metadata") (description "MediaInfo is a library used for retrieving technical @@ -2459,7 +2564,7 @@ MPEG-2, MPEG-4, DVD (VOB)... ("libtool" ,libtool) ("pkg-config" ,pkg-config) ("zlib" ,zlib) - ("libmediainfo", libmediainfo) + ("libmediainfo" ,libmediainfo) ("libzen" ,libzen))) (build-system gnu-build-system) (arguments @@ -2473,7 +2578,7 @@ MPEG-2, MPEG-4, DVD (VOB)... #t)) (add-after 'change-to-build-dir 'autogen (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) + (invoke "sh" "autogen.sh")))))) (home-page "https://mediaarea.net/en/MediaInfo") (synopsis "Utility for reading media metadata") (description "MediaInfo is a utility used for retrieving technical @@ -2494,10 +2599,11 @@ many codecs and formats supported by libmediainfo.") (base32 "0f5kxpayqn3yhabqrd2cqlc74i6x2xr01jfkank1lcilxnfyrsnq")) (modules '((guix build utils))) - (snippet - ;; As of glibc 2.26, no longer is. - '(substitute* "liveMedia/include/Locale.hh" - (("xlocale\\.h") "locale.h"))))) + (snippet '(begin + ;; As of glibc 2.26, no longer is. + (substitute* "liveMedia/include/Locale.hh" + (("xlocale\\.h") "locale.h")) + #t)))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests @@ -2514,8 +2620,8 @@ many codecs and formats supported by libmediainfo.") #t)) (replace 'configure (lambda _ - (zero? (system* "./genMakefiles" - "linux-with-shared-libraries"))))))) + (invoke "./genMakefiles" + "linux-with-shared-libraries")))))) (home-page "http://www.live555.com/liveMedia/") (synopsis "Set of C++ libraries for multimedia streaming") (description "This code forms a set of C++ libraries for multimedia @@ -2712,8 +2818,8 @@ alpha blending etc).") (modify-phases %standard-phases (add-after 'unpack 'autotools (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) - ;; TODO: opencv for additional face detection filters + (invoke "sh" "autogen.sh")))))) + ;; TODO: opencv for additional face detection filters. (inputs `(("gavl" ,gavl) ("cairo" ,cairo))) @@ -2759,16 +2865,16 @@ It counts more than 100 plugins.") (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,(autoconf-wrapper)) + `(("autoconf" ,autoconf-wrapper) ("automake" ,automake) ("pkg-config" ,pkg-config))) (inputs `(("libjpeg" ,libjpeg) - ("ffmpeg" ,ffmpeg) + ("ffmpeg" ,ffmpeg-3.4) ("sqlite" ,sqlite))) (arguments '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'bootstrap + (replace 'bootstrap (lambda _ (patch-shebang "version.sh") (invoke "autoreconf" "-vfi")))) @@ -2786,3 +2892,77 @@ changed. Or in other words, it can detect motion.") ;; Some files say "version 2" and others "version 2 or later". (license license:gpl2))) + +(define-public subdl + (let ((commit "4cf5789b11f0ff3f863b704b336190bf968cd471") + (revision "1")) + (package + (name "subdl") + (version (git-version "1.0.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alexanderwink/subdl.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + (source (assoc-ref %build-inputs "source")) + (python (assoc-ref %build-inputs "python"))) + (install-file (string-append source "/subdl") bin) + (patch-shebang (string-append bin "/subdl") + (list (string-append python "/bin"))))))) + (inputs `(("python" ,python))) + (synopsis "Command-line tool for downloading subtitles from opensubtitles.org") + (description "Subdl is a command-line tool for downloading subtitles from +opensubtitles.org. By default, it will search for English subtitles, display +the results, download the highest-rated result in the requested language and +save it to the appropriate filename.") + (license license:gpl3+) + (home-page "https://github.com/alexanderwink/subdl")))) + +(define-public l-smash + (package + (name "l-smash") + (version "2.14.5") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/" name "/" name "/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0dary0h65kq6sv93iabv25djlvzr5ckdcp3ywagbix44wqfw7xz6")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no tests + #:make-flags + (list (string-append "LDFLAGS=-Wl,-L.,-rpath=" + (assoc-ref %outputs "out") "/lib")) + #:phases + (modify-phases %standard-phases + ;; configure fails if it is followed by CONFIG_SHELL + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (invoke "./configure" (string-append "--prefix=" out) + "--disable-static"))))))) + (native-inputs + `(("which" ,which))) + (home-page "https://l-smash.github.io/l-smash/") + (synopsis "MP4 multiplexer and demultiplexer library") + (description + "L-SMASH is a cross-platform library that handles the ISO base media file +format and some of its derived file formats, including MP4. It operates as a +multiplexer and demultiplexer, and can mux video and audio in several formats +using standalone executable files.") + (license license:isc)))