From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roel Janssen Subject: Re: Help needed updating vlc to version 3.0.1. Date: Tue, 24 Apr 2018 00:29:22 +0200 Message-ID: <877eoximkd.fsf@gnu.org> References: <87tvs53qhn.fsf@netris.org> <87a7ttinvv.fsf@gnu.org> <878t9dings.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40791) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fAjxh-0005sK-Hs for guix-devel@gnu.org; Mon, 23 Apr 2018 18:29:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fAjxe-0003U0-8I for guix-devel@gnu.org; Mon, 23 Apr 2018 18:29:29 -0400 In-reply-to: <878t9dings.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Mark H Weaver Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Roel Janssen writes: > Roel Janssen writes: > >> Mark H Weaver writes: >> >>> Hello Guix, >>> >>> Below I've attached a draft patch to update vlc to 3.0.1, and also to >>> add several more inputs based on reading the output of the 'configure' >>> script. >>> >>> It builds successfully and mostly works except for one problem: the >>> icons are missing from the control buttons on the main window of the Qt >>> interface. The icons in question are .svg files in the source tarball, >>> but are converted into data structures within C++ source code using >>> 'rcc'. >>> >>> strace reveals that vlc is performing 'stat' system calls on bogus file >>> names beginning with ":/", e.g. ":/toolbar/play_b.svg". These >>> correspond to the missing icons. According to >>> , these names that >>> begin with ":/" are meant to be references to resources that were >>> imported using 'rcc'. >>> >>> I can't afford to spend more time on this right now. I don't use vlc >>> myself, but for security reasons I think it's important to keep our >>> media players up-to-date, especially media players like vlc that bundle >>> their own codecs. I expect that vlc is quite popular, which makes it >>> all the more important. >>> >>> I'm hoping that someone with more knowledge of Qt will step up to debug >>> this problem. Any volunteers? >>> >>> Note, this patch is based on core-updates, but hopefully it would work >>> on 'master' too. >> >> Thanks a lot for working on this! I applied your patch to ‘master’ and >> built VLC. It is missing the icons. >> >> Then I manually built it inside a ‘guix environment vlc’. >> Launching it shows the icons. Leaving the environment and running the >> same executable misses the icons. >> >> Could it be that we need to propagate an input? >> I'll try to dissect it further. > > After setting QT_PLUGIN_PATH outside of the environment, the icons > appear in the Guix-compiled vlc-3.0.1. I think the files in > QT_PLUGIN_PATH do not originate from VLC, but instead from Qt and > QtSvg. > > Should we wrap the executable so that QT_PLUGIN_PATH is defined? The attached patch adds such a wrap phase, with which running ‘vlc’ the icons work again. Kind regards, Roel Janssen --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-DRAFT-gnu-vlc-Update-to-3.0.1-and-add-more-inputs.patch Content-Transfer-Encoding: 8bit >From 47d20a29bd237a211f2805d470fb4db9726103d6 Mon Sep 17 00:00:00 2001 From: Roel Janssen Date: Tue, 24 Apr 2018 00:26:42 +0200 Subject: [PATCH] DRAFT: gnu: vlc: Update to 3.0.1, and add more inputs. --- gnu/packages/video.scm | 81 +++++++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 12 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index dc5a37566..e90207185 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 @@ -63,6 +63,7 @@ #: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) @@ -94,6 +95,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) @@ -110,7 +112,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) @@ -118,6 +122,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) @@ -805,7 +810,7 @@ audio/video codec library.") (define-public vlc (package (name "vlc") - (version "2.2.8") + (version "3.0.1") (source (origin (method url-fetch) (uri (string-append @@ -813,55 +818,90 @@ audio/video codec library.") version "/vlc-" version ".tar.xz")) (sha256 (base32 - "1v32snw46rkgbdqdy3dssl2y13i8p2cr1cw1i18r6vdmiy24dw4v")))) + "008krfhykm9447wc1kkw82bsw3f6ikljgrqyb1sinwlxnkghqw6f")))) (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 @@ -878,11 +918,21 @@ 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" - (("") "")) + ;; The check_POTFILES.sh test fails for vlc-3.0.1 with the + ;; message: "modules/gui/qt/ui/about.h: source file missing!". + ;; FIXME: Try removing this for vlc >= 3.0.2. + (substitute* "test/Makefile.in" + (("^TESTS =(.*) check_POTFILES.sh(.*)" all pre post) + (string-append "TESTS =" pre post))) + ;; 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.2. + (substitute* "modules/text_renderer/freetype/text_layout.c" + (("# define FRIBIDI_NO_DEPRECATED 1") "")) #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 @@ -899,9 +949,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 -- 2.17.0 --=-=-=--