gnu: vlc: Update to 3.0.3, and add more inputs.

Co-authored-by: Roel Janssen <roel@gnu.org>

* gnu/packages/video.scm (vlc): Update to 3.0.3.
[native-inputs]: Add flex, bison, and gettext-minimal.
[inputs]: Replace ffmpeg-2.8 with the latest ffmpeg.  Replace lua-5.1 with
lua-5.2.  Add eudev, fribidi, libarchive, libass, libavc1394, libbluray,
libcaca, libdca, libdvdnav, libdvdread, libebml, libidn, libmatroska,
libmodplug, libmpeg2, libraw1394, librsvg, libsecret, libupnp, libva,
libvdpau, libvpx, libx264, qtsvg, samba, speexdsp, taglib, twolame, unzip,
wayland, and wayland-protocols.
[arguments]: Add BUILDCC=gcc to configure-flags.  In the 'patch-source' phase,
remove a vestigial substitution fix, enable the use of fribidi deprecated
interfaces, and adjust the file names in substitutions from "gui/qt4" to
"gui/qt".  Move the 'regenerate-plugin-cache' phase after 'strip', and in it,
set the timestamps to 1 second after the epoch, and use 'invoke'.  Add new
'wrap-executable' phase.
This commit is contained in:
Mark H Weaver 2018-04-18 21:32:46 -04:00
parent c0d7c1244a
commit 7627705293
No known key found for this signature in database
GPG Key ID: 7CEF29847562C516
1 changed files with 67 additions and 14 deletions

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
@ -63,6 +63,7 @@
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages avahi) #:use-module (gnu packages avahi)
#:use-module (gnu packages backup)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
@ -94,6 +95,7 @@
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages imagemagick) #:use-module (gnu packages imagemagick)
#:use-module (gnu packages iso-codes) #:use-module (gnu packages iso-codes)
#:use-module (gnu packages libidn)
#:use-module (gnu packages libreoffice) #:use-module (gnu packages libreoffice)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
@ -110,7 +112,9 @@
#:use-module (gnu packages python-crypto) #:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web) #:use-module (gnu packages python-web)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages rdesktop)
#:use-module (gnu packages ruby) #:use-module (gnu packages ruby)
#:use-module (gnu packages samba)
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
#:use-module (gnu packages serialization) #:use-module (gnu packages serialization)
#:use-module (gnu packages shells) #:use-module (gnu packages shells)
@ -118,6 +122,7 @@
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils) #:use-module (gnu packages textutils)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages upnp)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages vulkan) #:use-module (gnu packages vulkan)
#:use-module (gnu packages web) #:use-module (gnu packages web)
@ -809,7 +814,7 @@ audio/video codec library.")
(define-public vlc (define-public vlc
(package (package
(name "vlc") (name "vlc")
(version "2.2.8") (version "3.0.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -817,55 +822,90 @@ audio/video codec library.")
version "/vlc-" version ".tar.xz")) version "/vlc-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1v32snw46rkgbdqdy3dssl2y13i8p2cr1cw1i18r6vdmiy24dw4v")))) "0lavzly8l0ll1d9iris9cnirgcs77g48lxj14058dxqkvd5v1a4v"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (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))) ("pkg-config" ,pkg-config)))
;; FIXME: Add optional inputs once available. ;; FIXME: Add optional inputs once available.
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
("avahi" ,avahi) ("avahi" ,avahi)
("dbus" ,dbus) ("dbus" ,dbus)
("eudev" ,eudev)
("flac" ,flac) ("flac" ,flac)
("ffmpeg" ,ffmpeg-2.8) ;fails to build against ffmpeg 3.0 ("ffmpeg" ,ffmpeg)
("fontconfig" ,fontconfig) ("fontconfig" ,fontconfig)
("freetype" ,freetype) ("freetype" ,freetype)
("fribidi" ,fribidi)
("gnutls" ,gnutls) ("gnutls" ,gnutls)
("liba52" ,liba52) ("liba52" ,liba52)
("libarchive" ,libarchive)
("libass" ,libass)
("libavc1394" ,libavc1394)
("libbluray" ,libbluray)
("libcaca" ,libcaca)
("libcddb" ,libcddb) ("libcddb" ,libcddb)
("libdca" ,libdca)
("libdvbpsi" ,libdvbpsi) ("libdvbpsi" ,libdvbpsi)
("libdvdnav" ,libdvdnav)
("libdvdread" ,libdvdread)
("libebml" ,libebml)
("libgcrypt" ,libgcrypt) ("libgcrypt" ,libgcrypt)
("libidn" ,libidn)
("libkate" ,libkate) ("libkate" ,libkate)
("libmad" ,libmad) ("libmad" ,libmad)
("libmatroska" ,libmatroska)
("libmodplug" ,libmodplug)
("libmpeg2" ,libmpeg2)
("libogg" ,libogg) ("libogg" ,libogg)
("libpng" ,libpng) ("libpng" ,libpng)
("libraw1394" ,libraw1394)
("librsvg" ,librsvg)
("libsamplerate" ,libsamplerate) ("libsamplerate" ,libsamplerate)
("libsecret" ,libsecret)
("libssh2" ,libssh2) ("libssh2" ,libssh2)
("libupnp" ,libupnp)
("libva" ,libva)
("libvdpau" ,libvdpau)
("libvorbis" ,libvorbis) ("libvorbis" ,libvorbis)
("libvpx" ,libvpx)
("libtheora" ,libtheora) ("libtheora" ,libtheora)
("libx264" ,libx264)
("libxext" ,libxext) ("libxext" ,libxext)
("libxi" ,libxi) ("libxi" ,libxi)
("libxinerama" ,libxinerama) ("libxinerama" ,libxinerama)
("libxml2" ,libxml2) ("libxml2" ,libxml2)
("libxpm" ,libxpm) ("libxpm" ,libxpm)
("livemedia-utils" ,livemedia-utils) ("livemedia-utils" ,livemedia-utils)
("lua" ,lua-5.1) ("lua" ,lua-5.2)
("mesa" ,mesa) ("mesa" ,mesa)
("opus" ,opus) ("opus" ,opus)
("perl" ,perl) ("perl" ,perl)
("pulseaudio" ,pulseaudio) ("pulseaudio" ,pulseaudio)
("python" ,python-wrapper) ("python" ,python-wrapper)
("qtbase" ,qtbase) ("qtbase" ,qtbase)
("qtsvg" ,qtsvg)
("qtx11extras" ,qtx11extras) ("qtx11extras" ,qtx11extras)
("samba" ,samba)
("sdl" ,sdl) ("sdl" ,sdl)
("sdl-image" ,sdl-image) ("sdl-image" ,sdl-image)
("speex" ,speex) ("speex" ,speex)
("speexdsp" ,speexdsp)
("taglib" ,taglib)
("twolame" ,twolame)
("unzip" ,unzip)
("wayland" ,wayland)
("wayland-protocols" ,wayland-protocols)
("x265" ,x265) ("x265" ,x265)
("xcb-util-keysyms" ,xcb-util-keysyms))) ("xcb-util-keysyms" ,xcb-util-keysyms)))
(arguments (arguments
`(#:configure-flags `(#:configure-flags
`("CXXFLAGS=-std=gnu++11" `("CXXFLAGS=-std=gnu++11"
"BUILDCC=gcc"
,(string-append "LDFLAGS=-Wl,-rpath -Wl," ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
(assoc-ref %build-inputs "ffmpeg") (assoc-ref %build-inputs "ffmpeg")
"/lib")) ;needed for the tests "/lib")) ;needed for the tests
@ -882,18 +922,24 @@ audio/video codec library.")
;; which fails in our sandboxed build system ;; which fails in our sandboxed build system
(substitute* "test/run_vlc.sh" (substitute* "test/run_vlc.sh"
(("./vlc --ignore-config") "echo")) (("./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
(("<qx11info_x11.h>") "<QtX11Extras/qx11info_x11.h>")) ;; 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. ;; Fix build against Qt 5.11.
(substitute* "modules/gui/qt4/actions_manager.cpp" (substitute* "modules/gui/qt/actions_manager.cpp"
(("#include <vlc_keys.h>") "#include <vlc_keys.h> (("#include <vlc_keys.h>") "#include <vlc_keys.h>
#include <QAction>")) #include <QAction>"))
(substitute* "modules/gui/qt4/components/simple_preferences.cpp" (substitute* "modules/gui/qt/components/simple_preferences.cpp"
(("#include <QFont>") "#include <QFont> (("#include <QFont>") "#include <QFont>
#include <QButtonGroup>")) #include <QButtonGroup>"))
#t))) #t)))
(add-after 'install 'regenerate-plugin-cache (add-after 'strip 'regenerate-plugin-cache
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
;; The 'install-exec-hook' rule in the top-level Makefile.am ;; The 'install-exec-hook' rule in the top-level Makefile.am
;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using
@ -910,9 +956,16 @@ audio/video codec library.")
(for-each (lambda (file) (for-each (lambda (file)
(let ((s (lstat file))) (let ((s (lstat file)))
(unless (eq? (stat:type s) 'symlink) (unless (eq? (stat:type s) 'symlink)
(utime file 0 0 0 0)))) (utime file 1 1))))
(find-files plugindir)) (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/") (home-page "https://www.videolan.org/")
(synopsis "Audio and video framework") (synopsis "Audio and video framework")
(description "VLC is a cross-platform multimedia player and framework (description "VLC is a cross-platform multimedia player and framework