Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/Coacher/mpv-refactor-take-2'
Browse files Browse the repository at this point in the history
Pull request: gentoo#544
  • Loading branch information
Ian Delaney committed Dec 28, 2015
2 parents 3a2069b + 4e74fdb commit 2a39110
Show file tree
Hide file tree
Showing 8 changed files with 779 additions and 112 deletions.
1 change: 1 addition & 0 deletions media-video/mpv/Manifest
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
DIST mpv-0.11.0.tar.gz 2689655 SHA256 a2157174e46db46dad5deb1fde94283e72ebe922fd15447cb16a2a243fae5bda SHA512 f85da000770dbca09be2a59c4eda7e6d7142ca17328844d2b08a173f64554159f50ba9b32661ba67924b789e886940cda1add993862f02f295e7753f50388bdb WHIRLPOOL 1184f09435d6f30119143ab98ddd4767e53c701bdc5b850eb62c19607652a7103699a6b54a0d165acb548f4cced4179af6f7decbf64c8289ff56736e26ed7924
DIST mpv-0.14.0.tar.gz 2872619 SHA256 042937f483603f0c3d1dec11e8f0045e8c27f19eee46ea64d81a3cdf01e51233 SHA512 523bffe87d6743ac67cab090bb5f43363352491f663debf150e204b942daaaa85176f228011e306d58fa4a05ee962d4bc56b6f77ea943e3efe757417ad52b952 WHIRLPOOL b27f8acb21870c4d98e2a39ce78cf0e8923bdac5056adafedd242b687c0532cc51e338b9d5c2046155972adb99fd8f12f7d9ec2e78bdf4ed8ae1a295faedc0e9
DIST mpv-0.9.2.tar.gz 2701306 SHA256 c0148f55dbd17705f49bb496d0ce374419de62e1b17195d91409d7727cbd4751 SHA512 4f652a8e78d65b0ef44a06287b05250dfdfbce4cf5a6e21d3b446eedec268d83cf98afcc687272e2da2cfac9e9f69a303847dffdfd45cecdd4273b943ce50967 WHIRLPOOL 1512bacc2ce50e875770c76106a1bb2bc1d0cc5f6e2bdce91ff8c5cfc8bf13ffb48519858a5fa2a7d57880820dc12e5eb20f34ab71eca5d76ec303618da8f3fe
DIST mpv-0.9.2_p20150824.tar.xz 1867384 SHA256 67fa5ce11740b83ceef8bc435d5ef17803f1ec328dd2fee93b67e46ccc195209 SHA512 1ae0fd4faa180472c023c0ba77a28f2d1319f597763d5249259d55a04387b5f6384e2c5a8ff78bb514dfda86c30ceb474c35e54468a29ad3fc6327c4baaf75cc WHIRLPOOL cb61758234f9186880def4dcb7cb7e54d03abd6734484b5691926e2514cae1bebef6f9a53465e2aa2710e4ad5dbe1875369d483489a5cb853c3fa756ff7e968a
DIST waf-1.8.12 97567 SHA256 01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b SHA512 8e47112abb134f965f15a27a600b4453cad3075afb5dadc17f2f6dac33d80ec68b679ac0ebc5f8a0245cbd07ae9fc7b899e69afc1bd021cce74e7af2ab457939 WHIRLPOOL c36d37c2d8c08e4048b4800f511611af5cf534304fcb58388ca491ff308bfcbcdd959d153edfd6ff8c118404e7293d8b786e43b07486139bf915a82aa75d792b
Expand Down
37 changes: 37 additions & 0 deletions media-video/mpv/files/mpv-0.14.0-support-GNU-__thread.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
For a lengthy discussion see https://github.com/mpv-player/mpv/issues/2631

Upstream commits:
https://github.com/mpv-player/mpv/commit/1a6f3c56ea6e7bf9928fc99469f8f5da4578f035
https://github.com/mpv-player/mpv/commit/946bd52a1d1eb561ff8bb516ef6efcd02ca3ea1e

diff --git a/video/out/opengl/common.c b/video/out/opengl/common.c
index 00cd535..f607c23 100644
--- a/video/out/opengl/common.c
+++ b/video/out/opengl/common.c
@@ -606,7 +606,13 @@ int mpgl_validate_backend_opt(struct mp_log *log, const struct m_option *opt,
}

#if HAVE_C11_TLS
-static _Thread_local MPGLContext *current_context;
+#define MP_TLS _Thread_local
+#elif defined(__GNU__)
+#define MP_TLS __thread
+#endif
+
+#ifdef MP_TLS
+static MP_TLS MPGLContext *current_context;

static void * GLAPIENTRY get_native_display(const char *name)
{
diff --git a/wscript b/wscript
index a5e6914..969d9cc 100644
--- a/wscript
+++ b/wscript
@@ -718,7 +718,6 @@ video_output_features = [
}, {
'name': 'vaapi-egl',
'desc': 'VAAPI EGL',
- 'deps': [ 'c11-tls' ], # indirectly
'deps_any': [ 'vaapi-x-egl', 'vaapi-wayland' ],
'func': check_true,
}, {
12 changes: 0 additions & 12 deletions media-video/mpv/files/mpv-0.3.11-libav-9.patch

This file was deleted.

17 changes: 17 additions & 0 deletions media-video/mpv/files/mpv-fix-include-in-tests.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
commit 867334395765ae7d2765e0834f9fd3dd5de53cab
Author: Ilya Tumaykin <[email protected]>
Date: Tue Dec 22 17:10:12 2015 +0300

tests: fix #include

diff --git a/test/gl_video.c b/test/gl_video.c
index 253ab35..97fee94 100644
--- a/test/gl_video.c
+++ b/test/gl_video.c
@@ -1,5 +1,5 @@
#include "test_helpers.h"
-#include "video/out/gl_video.h"
+#include "video/out/opengl/video.h"

static void test_scale_ambient_lux_limits(void **state) {
float x;
13 changes: 8 additions & 5 deletions media-video/mpv/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,27 @@
<herd>video</herd>
<herd>proxy-maintainers</herd>
<use>
<flag name="archive">Enable support for various archive formats via <pkg>app-arch/libarchive</pkg></flag>
<flag name="bluray">Enable playback of Blu-ray filesystems</flag>
<flag name="bs2b">Enable Bauer stereophonic-to-binaural headphone filter</flag>
<flag name="cli">Build mpv CLI player</flag>
<flag name="cdio">Enable CDDA support via <pkg>dev-libs/libcdio-paranoia</pkg></flag>
<flag name="doc-pdf">Build documentation in pdf format</flag>
<flag name="drm">Enable Kernel Mode Setting / Direct Rendering Manager based video output</flag>
<flag name="egl">Enable EGL backend for X11 OpenGL video output (experimental)</flag>
<flag name="enca">Enable support for charset discovery and conversion using <pkg>app-i18n/enca</pkg></flag>
<flag name="jpeg">Enable support for saving screenshots to JPEG format</flag>
<flag name="libguess">Enable support for charset discovery and conversion using <pkg>app-i18n/libguess</pkg></flag>
<flag name="egl">Enable support for various EGL-based video outputs</flag>
<flag name="enca">Enable subtitles charset discovery via <pkg>app-i18n/enca</pkg></flag>
<flag name="gbm">Enable Graphics Buffer Manager based EGL video output</flag>
<flag name="jpeg">Enable support for saving screenshots in JPEG format</flag>
<flag name="libguess">Enable subtitles charset discovery via <pkg>app-i18n/libguess</pkg></flag>
<flag name="libmpv">Build mpv shared library</flag>
<flag name="lua">Enable Lua scripting, OSC (On Screen Controller) GUI and <pkg>net-misc/youtube-dl</pkg> hook-script</flag>
<flag name="luajit">Use <pkg>dev-lang/luajit</pkg> instead of <pkg>dev-lang/lua</pkg></flag>
<flag name="pvr">Enable Video4Linux2 MPEG PVR</flag>
<flag name="raspberry-pi">Enable support for the Raspberry Pi</flag>
<flag name="rubberband">Enable high quality pitch correction via <pkg>media-libs/rubberband</pkg></flag>
<flag name="sdl">Enable <pkg>media-libs/libsdl2</pkg> based video and audio outputs</flag>
<flag name="vf-dlopen">Install additional video filters for using with -vf dlopen</flag>
<flag name="uchardet">Enable subtitles charset discovery via <pkg>dev-libs/uchardet</pkg></flag>
<flag name="vf-dlopen">Install additional video filters to be used with -vf dlopen</flag>
</use>
<upstream>
<remote-id type="github">mpv-player/mpv</remote-id>
Expand Down
284 changes: 284 additions & 0 deletions media-video/mpv/mpv-0.11.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5

PYTHON_COMPAT=( python{2_7,3_3,3_4} )
PYTHON_REQ_USE='threads(+)'

WAF_PV='1.8.12'

inherit eutils fdo-mime gnome2-utils pax-utils python-any-r1 waf-utils

DESCRIPTION="Media player based on MPlayer and mplayer2"
HOMEPAGE="https://mpv.io/"

if [[ ${PV} != *9999* ]]; then
SRC_URI="https://github.com/mpv-player/mpv/archive/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux"
DOCS=( RELEASE_NOTES )
else
EGIT_REPO_URI="https://github.com/mpv-player/mpv.git"
inherit git-r3
fi
SRC_URI+=" https://waf.io/waf-${WAF_PV}"
DOCS+=( README.md etc/example.conf etc/input.conf )

# See Copyright in source tarball and bug #506946. Waf is BSD, libmpv is ISC.
LICENSE="GPL-2+ BSD ISC"
SLOT="0"
# Here 'opengl' stands for GLX, 'egl' stands for any EGL-based output
IUSE="+alsa archive bluray cdda +cli doc drm dvb +dvd egl +enca encode +iconv
jack jpeg lcms +libass libav libcaca libguess libmpv lua luajit openal
+opengl oss pulseaudio pvr raspberry-pi rubberband samba sdl selinux test
uchardet v4l vaapi vdpau vf-dlopen wayland +X xinerama +xscreensaver xv"

REQUIRED_USE="
|| ( cli libmpv )
egl? ( || ( X wayland ) )
enca? ( iconv )
lcms? ( || ( opengl egl ) )
libguess? ( iconv )
luajit? ( lua )
opengl? ( X )
pvr? ( v4l )
uchardet? ( iconv )
v4l? ( || ( alsa oss ) )
vaapi? ( X )
vdpau? ( X )
wayland? ( egl )
xinerama? ( X )
xscreensaver? ( X )
xv? ( X )
"

COMMON_DEPEND="
!libav? ( >=media-video/ffmpeg-2.4.0:0=[encode?,threads,vaapi?,vdpau?] )
libav? ( >=media-video/libav-11:0=[encode?,threads,vaapi?,vdpau?] )
sys-libs/zlib
alsa? ( >=media-libs/alsa-lib-1.0.18 )
archive? ( >=app-arch/libarchive-3.0.0:= )
bluray? ( >=media-libs/libbluray-0.3.0 )
cdda? ( dev-libs/libcdio-paranoia )
drm? ( x11-libs/libdrm )
dvb? ( virtual/linuxtv-dvb-headers )
dvd? (
>=media-libs/libdvdnav-4.2.0
>=media-libs/libdvdread-4.1.0
)
egl? ( media-libs/mesa[egl,wayland(-)?] )
iconv? (
virtual/libiconv
enca? ( app-i18n/enca )
libguess? ( >=app-i18n/libguess-1.0 )
uchardet? ( dev-libs/uchardet )
)
jack? ( media-sound/jack-audio-connection-kit )
jpeg? ( virtual/jpeg:0 )
lcms? ( >=media-libs/lcms-2.6:2 )
libass? (
>=media-libs/libass-0.12.1:=[fontconfig,harfbuzz]
virtual/ttf-fonts
)
libcaca? ( >=media-libs/libcaca-0.99_beta18 )
lua? (
!luajit? ( || ( =dev-lang/lua-5.1*:= =dev-lang/lua-5.2*:= ) )
luajit? ( dev-lang/luajit:2 )
)
openal? ( >=media-libs/openal-1.13 )
pulseaudio? ( media-sound/pulseaudio )
rubberband? ( >=media-libs/rubberband-1.8.0 )
samba? ( net-fs/samba )
sdl? ( media-libs/libsdl2[sound,threads,video,X?,wayland?] )
v4l? ( media-libs/libv4l )
wayland? (
>=dev-libs/wayland-1.6.0
>=x11-libs/libxkbcommon-0.3.0
)
X? (
x11-libs/libX11
x11-libs/libXext
>=x11-libs/libXrandr-1.2.0
opengl? (
x11-libs/libXdamage
virtual/opengl
)
vaapi? ( >=x11-libs/libva-1.2.0[X] )
vdpau? ( >=x11-libs/libvdpau-0.2 )
xinerama? ( x11-libs/libXinerama )
xscreensaver? ( x11-libs/libXScrnSaver )
xv? ( x11-libs/libXv )
)
"
DEPEND="${COMMON_DEPEND}
${PYTHON_DEPS}
>=dev-lang/perl-5.8
dev-python/docutils
virtual/pkgconfig
doc? ( dev-python/rst2pdf )
test? ( >=dev-util/cmocka-1.0.0 )
"
RDEPEND="${COMMON_DEPEND}
selinux? ( sec-policy/selinux-mplayer )
"

pkg_pretend() {
if ! use libass; then
ewarn "You have disabled the libass support."
ewarn "OSD and subtitles won't be available."
fi

if use openal; then
ewarn "You have enabled the openal audio output. Be warned that"
ewarn "this output is considered experimental by upstream."
fi

if use sdl; then
ewarn "You have enabled the sdl video and audio outputs. Note that"
ewarn "upstream provides these outputs for compatibility reasons only."
ewarn "You probably don't need them under the normal circumstances."
fi

if use libav; then
elog "You have enabled media-video/libav instead of media-video/ffmpeg."
elog "Upstream recommends media-video/ffmpeg, as some functionality"
elog "is not provided by media-video/libav."
fi

einfo "mpv optionally supports many different audio and video formats."
einfo "You will need to enable support for the desired formats in your"
einfo "libavcodec/libavformat provider:"
einfo " media-video/ffmpeg or media-video/libav"
}

src_prepare() {
cp "${DISTDIR}/waf-${WAF_PV}" "${S}"/waf || die
chmod +x "${S}"/waf || die

epatch "${FILESDIR}/${PN}-fix-include-in-tests.patch"
epatch_user
}

src_configure() {
local mywafargs=(
--confdir="${EPREFIX}"/etc/${PN}
--docdir="${EPREFIX}"/usr/share/doc/${PF}

$(usex cli '' '--disable-cplayer')
$(use_enable libmpv libmpv-shared)

--disable-libmpv-static
--disable-static-build
--disable-build-date # Create reproducible build
--disable-optimize # Do not add '-O2' to CFLAGS
--disable-debug-build # Do not add '-g' to CFLAGS

$(use_enable doc pdf-build)
$(use_enable vf-dlopen vf-dlopen-filters)
$(use_enable cli zsh-comp)
$(use_enable test)

$(use_enable iconv)
$(use_enable samba libsmbclient)
$(use_enable lua)
$(usex luajit '--lua=luajit' '')
$(use_enable libass)
$(use_enable libass libass-osd)
$(use_enable encode encoding)
$(use_enable bluray libbluray)
$(use_enable dvd dvdread)
$(use_enable dvd dvdnav)
$(use_enable cdda)
$(use_enable enca)
$(use_enable libguess)
$(use_enable uchardet)
$(use_enable rubberband)
$(use_enable lcms lcms2)
--disable-vapoursynth # Only available in overlays
--disable-vapoursynth-lazy
$(use_enable archive libarchive)

--enable-libavfilter
--enable-libavdevice

# Audio outputs
$(use_enable sdl sdl2) # Listed under audio, but also includes video
--disable-sdl1
$(use_enable oss oss-audio)
--disable-rsound # Only available in overlays
$(use_enable pulseaudio pulse)
$(use_enable jack)
$(use_enable openal)
$(use_enable alsa)
--disable-coreaudio
--disable-dsound
--disable-wasapi

# Video outputs
--disable-cocoa
$(use_enable wayland)
$(use_enable X x11)
$(use_enable xscreensaver xss)
$(use_enable X xext)
$(use_enable xv)
$(use_enable xinerama)
$(use_enable X xrandr)
$(use_enable opengl gl-x11)
$(usex egl "$(use_enable X egl-x11)" '--disable-egl-x11')
$(use_enable wayland gl-wayland)
$(use_enable vdpau)
$(usex vdpau "$(use_enable opengl vdpau-gl-x11)" '--disable-vdpau-gl-x11')
$(use_enable vaapi)
$(use_enable vaapi vaapi-vpp)
$(usex vaapi "$(use_enable opengl vaapi-glx)" '--disable-vaapi-glx')
$(use_enable libcaca caca)
$(use_enable drm)
$(use_enable jpeg)
$(use_enable raspberry-pi rpi)

# HWaccels
$(use_enable vaapi vaapi-hwaccel)
# Automagic VDPAU HW acceleration. See Gentoo bug 558870.

# TV features
$(use_enable v4l tv)
$(use_enable v4l tv-v4l2)
$(use_enable v4l libv4l2)
$(use_enable v4l audio-input)
$(use_enable pvr)
$(use_enable dvb dvbin)
)
waf-utils_src_configure "${mywafargs[@]}"
}

src_install() {
waf-utils_src_install

if use cli && use luajit; then
pax-mark -m "${ED}usr/bin/${PN}"
fi
}

pkg_preinst() {
gnome2_icon_savelist
}

pkg_postinst() {
fdo-mime_desktop_database_update
gnome2_icon_cache_update
}

pkg_postrm() {
fdo-mime_desktop_database_update
gnome2_icon_cache_update
}

src_test() {
cd "${S}"/build/test || die
for test in *; do
if [[ -x ${test} ]]; then
./"${test}" || die "Test suite failed"
fi
done
}
Loading

0 comments on commit 2a39110

Please sign in to comment.