From: Roel Janssen <roel@gnu.org>
To: Mark H Weaver <mhw@netris.org>
Cc: guix-devel@gnu.org
Subject: Re: Help needed updating vlc to version 3.0.1.
Date: Tue, 24 Apr 2018 00:29:22 +0200 [thread overview]
Message-ID: <877eoximkd.fsf@gnu.org> (raw)
In-Reply-To: <878t9dings.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 2319 bytes --]
Roel Janssen <roel@gnu.org> writes:
> Roel Janssen <roel@gnu.org> writes:
>
>> Mark H Weaver <mhw@netris.org> 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
>>> <https://doc.qt.io/archives/qt-4.8/resources.html>, 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
[-- Attachment #2: 0001-DRAFT-gnu-vlc-Update-to-3.0.1-and-add-more-inputs.patch --]
[-- Type: text/x-patch, Size: 8306 bytes --]
From 47d20a29bd237a211f2805d470fb4db9726103d6 Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
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 <andreas@enge.fr>
;;; 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, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
@@ -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"
- (("<qx11info_x11.h>") "<QtX11Extras/qx11info_x11.h>"))
+ ;; 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
prev parent reply other threads:[~2018-04-23 22:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-21 8:36 Help needed updating vlc to version 3.0.1 Mark H Weaver
2018-04-21 19:53 ` Chris Marusich
2018-04-21 20:20 ` Mark H Weaver
2018-04-23 22:00 ` Roel Janssen
2018-04-23 22:09 ` Roel Janssen
2018-04-23 22:29 ` Roel Janssen [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877eoximkd.fsf@gnu.org \
--to=roel@gnu.org \
--cc=guix-devel@gnu.org \
--cc=mhw@netris.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.