From c139aa951b15c55547f83a54d43068010062f0ca Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 18 Oct 2017 21:53:08 +0200 Subject: [PATCH] Import vlc-nightly from AUR and fix mistakes * Add qt5-svg to dependencies; otherwise I will not be able to build Qt GUI at all * Prevent using SVGs which doesn't exist * Fix indentation (standard for Arch packages is 2 spaces) * Make use of prepare() function --- .../0001-Prevent-including-missing-SVGs.patch | 33 +++++ vlc/nightly/PKGBUILD | 140 ++++++++++++++++++ vlc/nightly/find-deps.py | 48 ++++++ vlc/nightly/update-vlc-plugin-cache.hook | 11 ++ 4 files changed, 232 insertions(+) create mode 100644 vlc/nightly/0001-Prevent-including-missing-SVGs.patch create mode 100644 vlc/nightly/PKGBUILD create mode 100755 vlc/nightly/find-deps.py create mode 100644 vlc/nightly/update-vlc-plugin-cache.hook diff --git a/vlc/nightly/0001-Prevent-including-missing-SVGs.patch b/vlc/nightly/0001-Prevent-including-missing-SVGs.patch new file mode 100644 index 00000000..dd5a4626 --- /dev/null +++ b/vlc/nightly/0001-Prevent-including-missing-SVGs.patch @@ -0,0 +1,33 @@ +--- a/modules/gui/qt/vlc.qrc 2017-10-18 21:40:51.489682799 +0200 ++++ b/modules/gui/qt/vlc.qrc 2017-10-18 21:39:05.602097150 +0200 +@@ -106,19 +106,19 @@ + pixmaps/sample_skins.png + + +- pixmaps/prefs/advprefs_audio.svg +- pixmaps/prefs/advprefs_codec.svg +- pixmaps/prefs/advprefs_extended.svg +- pixmaps/prefs/advprefs_intf.svg +- pixmaps/prefs/advprefs_playlist.svg +- pixmaps/prefs/advprefs_sout.svg +- pixmaps/prefs/advprefs_video.svg ++ pixmaps/prefs/advprefs_audio.png ++ pixmaps/prefs/advprefs_codec.png ++ pixmaps/prefs/advprefs_extended.png ++ pixmaps/prefs/advprefs_intf.png ++ pixmaps/prefs/advprefs_playlist.png ++ pixmaps/prefs/advprefs_sout.png ++ pixmaps/prefs/advprefs_video.png + + +- pixmaps/win7/win7thumbnail_pause.svg +- pixmaps/win7/win7thumbnail_prev.svg +- pixmaps/win7/win7thumbnail_play.svg +- pixmaps/win7/win7thumbnail_next.svg ++ pixmaps/win7/win7thumbnail_pause.png ++ pixmaps/win7/win7thumbnail_prev.png ++ pixmaps/win7/win7thumbnail_play.png ++ pixmaps/win7/win7thumbnail_next.png + + + pixmaps/playlist/sidebar-icons/disc.svg diff --git a/vlc/nightly/PKGBUILD b/vlc/nightly/PKGBUILD new file mode 100644 index 00000000..115e5d8d --- /dev/null +++ b/vlc/nightly/PKGBUILD @@ -0,0 +1,140 @@ +# $Id$ +# Maintainer: Sebastian Weiland +# Contributor: Martchus +# Original package: Xavion + +_appname_=vlc +pkgname=${_appname_}-nightly +pkgver=3.0.0v20171018 +_pkgver=3.0.0 +_snapshot_=20171018 +_snapver_=0238 +_nightly_=${_snapshot_}-${_snapver_} +pkgrel=1 +pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player - nightly snapshot" +arch=("i686" "x86_64") +url="http://www.videolan.org/vlc/" +license=("LGPL2.1" "GPL2") +_undetected_depends=() +depends=('libmatroska' 'a52dec' 'sidplay2-libs' 'libfdk-aac' 'faad2' 'ffmpeg' 'libdca' 'daala-git' 'libdvbpsi' + 'libdvdnav' 'libmad' 'libmpcdec' 'libmpeg2' + 'libproxy' 'libshout' 'libtar' 'libtiger' 'libupnp' + 'libxinerama' 'libxpm' 'lua' 'sdl_image' 'mesa' 'sndio' 'wayland' 'wayland-protocols' + 'taglib' 'xcb-util-keysyms' 'zvbi' 'libsecret' 'libarchive' 'qt5-base' 'qt5-svg' 'libglvnd' + 'hicolor-icon-theme' 'qt5-x11extras' "${_detected_depends[@]}") +makedepends=('aalib' 'flac' 'git' + 'libavc1394' 'libbluray' 'libcaca' 'libdc1394' 'libdvdcss' + 'libgme' 'libgoom2' 'libmtp' 'libnotify' 'librsvg' + 'libssh2' 'lirc' 'live-media' 'opus' + 'portaudio' 'projectm' 'twolame' 'vcdimager' 'smbclient') +optdepends=('aalib: for ASCII art plugin' + 'avahi: for service discovery using bonjour protocol' + 'flac: for Free Lossless Audio Codec plugin' + 'kdelibs: KDE Solid hardware integration' + 'libavc1394: for devices using the 1394ta AV/C' + 'libbluray: for Blu-Ray support' + 'libcaca: for colored ASCII art video output' + 'libcdio: for audio CD playback support' + 'libdc1394: for IEEE 1394 plugin' + 'libdvdcss: for decoding encrypted DVDs' + 'libgme: for libgme plugin' + 'libgoom2: for libgoom plugin' + 'libmtp: for MTP devices support' + 'libnotify: for notification plugin' + 'librsvg: for SVG plugin' + 'libssh2: for sftp support' + 'libva-intel-driver: back-end for intel cards' + 'libva-vdpau-driver: vdpau back-end for nvidia' + 'lirc: for lirc plugin' + 'lua-socket: for http interface' + 'ncurses: for ncurses interface support' + 'opus: for opus support' + 'portaudio: for portaudio support' + 'projectm: for ProjectM visualisation plugin' + 'smbclient: for SMB access plugin' + 'ttf-dejavu: for subtitle font' + 'ttf-freefont: for subtitle font' + 'twolame: for TwoLAME mpeg2 encoder plugin' + 'vcdimager: navigate VCD with libvcdinfo') +conflicts=("${_appname_}-plugin" "${_appname_}") +provides=("${_appname_}") +replaces=("${_appname_}-plugin") +options=("!emptydirs") +source=("http://nightlies.videolan.org/build/source/vlc-${_pkgver}-${_nightly_}-git.tar.xz" + 'update-vlc-plugin-cache.hook' + 'https://git.archlinux.org/svntogit/packages.git/plain/trunk/lua53_compat.patch?h=packages/vlc' + '0001-Prevent-including-missing-SVGs.patch' + 'find-deps.py') + +pkgver() { + printf 3.0.0v$_snapshot_ +} + +prepare() { + cd "${_appname_}-3.0.0-git" + + ./bootstrap + + patch -Np1 -i "${srcdir}/vlc" + sed -i -e 's:truetype/ttf-dejavu:TTF:g' modules/visualization/projectm.cpp + sed -i -e 's:truetype/freefont:TTF:g' modules/text_renderer/freetype/freetype.c + patch -p1 -i "$srcdir/0001-Prevent-including-missing-SVGs.patch" +} + +build() { + cd "${_appname_}-3.0.0-git" + + export CFLAGS+=" -I/usr/include/samba-4.0" + export CPPFLAGS+=" -I/usr/include/samba-4.0" + export CXXFLAGS+=" -std=gnu++11" + export LUAC=/usr/bin/luac + export LUA_LIBS="`pkg-config --libs lua`" + export RCC=/usr/bin/rcc-qt5 + export PKG_CONFIG_PATH="/usr/lib/ffmpeg2.8/pkgconfig" + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --disable-rpath \ + --enable-faad \ + --enable-nls \ + --enable-lirc \ + --enable-ncurses \ + --enable-realrtsp \ + --enable-aa \ + --enable-upnp \ + --enable-opus \ + --enable-sftp \ + --enable-fdkaac \ + --enable-archive \ + --enable-bluray \ + --enable-daala + + ./compile +} + +package() { + cd "${_appname_}-3.0.0-git" + + make -i DESTDIR="${pkgdir}" install + + for res in 16 32 48 128; do + install -D -m644 "${srcdir}/${_appname_}-3.0.0-git/share/icons/${res}x${res}/${_appname_}.png" \ + "${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/${_appname_}.png" + done + + install -Dm644 "$srcdir"/update-vlc-plugin-cache.hook "$pkgdir"/usr/share/libalpm/hooks/update-vlc-plugin-cache.hook + + # Update dependencies automatically based on dynamic libraries + # _detected_depends=($(find "$pkgdir"/usr -name "*.so" | xargs python "$srcdir"/find-deps.py)) + + # msg 'Auto-detected dependencies:' + # echo "${_detected_depends[@]}" | fold -s -w 79 | sed 's/^/ /' + # depends=("${_detected_depends[@]}" "${_undetected_depends[@]}") +} + +sha256sums=('82abfbd64cd6606afaf1c938f5b7cb8e29484d258719ee674d1a769bfce94431' + 'c6f60c50375ae688755557dbfc5bd4a90a8998f8cf4d356c10d872a1a0b44f3a' + 'd1cb88a1037120ea83ef75b2a13039a16825516b776d71597d0e2eae5df2d8fa' + '599ce4bf0db5fc74f54bc03136b662606c22b8435b81440b02fc73f52d09bd7f' + '90b0e34d5772d2307ba07a1c2aa715db7488389003cfe6d3570b2a9c63061db7') diff --git a/vlc/nightly/find-deps.py b/vlc/nightly/find-deps.py new file mode 100755 index 00000000..92095f93 --- /dev/null +++ b/vlc/nightly/find-deps.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +""" +Usage: find-deps.py [ ...] + +Finds (pacman/ALPM) dependencies for a binary or set of binaries based +on dynamically linked libraries. + +""" + +import sys +import os +import subprocess +import re + +def subprocess_get_lines(args, fail_okay=False): + try: + output = subprocess.check_output(args) + except subprocess.CalledProcessError as e: + if fail_okay: + output = e.output + else: + raise + return output.decode().splitlines() + +# Get the filenames of the libs we need +#del os.environ['LD_PRELOAD'] # otherwise fakeroot will interfere +ldd_output = subprocess_get_lines(['ldd'] + sys.argv[1:]) +regex = re.compile(r' => (.*) \(0x[0-9a-f]+\)$') +libs = set(match.group(1) for match in map(regex.search, ldd_output) if match) + +# Figure out which packages own them +deps = set(subprocess_get_lines( + ['pacman', '--query', '--owns', '--quiet'] + list(libs), + fail_okay=True +)) + +# Remove redundant dependencies +needed = set(deps) +for pkg in deps: + if pkg not in needed: + continue # this subtree has already been pruned + redundant = subprocess_get_lines( + ['pactree', '--unique', pkg] + )[1:] # first line is pkg itself + needed.difference_update(redundant) + +print(' '.join(sorted(needed))) diff --git a/vlc/nightly/update-vlc-plugin-cache.hook b/vlc/nightly/update-vlc-plugin-cache.hook new file mode 100644 index 00000000..3fbf13d9 --- /dev/null +++ b/vlc/nightly/update-vlc-plugin-cache.hook @@ -0,0 +1,11 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Operation = Remove +Target = usr/lib/vlc/plugins/* + +[Action] +Description = Updating the vlc plugin cache... +When = PostTransaction +Exec = /usr/lib/vlc/vlc-cache-gen /usr/lib/vlc/plugins