summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/mpv/mpv-9999.ebuild')
-rw-r--r--media-video/mpv/mpv-9999.ebuild492
1 files changed, 205 insertions, 287 deletions
diff --git a/media-video/mpv/mpv-9999.ebuild b/media-video/mpv/mpv-9999.ebuild
index f65aba458d62..3825d102d45b 100644
--- a/media-video/mpv/mpv-9999.ebuild
+++ b/media-video/mpv/mpv-9999.ebuild
@@ -1,358 +1,276 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
-LUA_COMPAT=( lua5-{1..2} luajit )
-PYTHON_COMPAT=( python3_{7..9} )
-PYTHON_REQ_USE='threads(+)'
+LUA_COMPAT=( lua5-1 luajit )
+PYTHON_COMPAT=( python3_{10..13} )
+inherit flag-o-matic lua-single meson optfeature pax-utils python-single-r1 xdg
-WAF_PV=2.0.9
-
-inherit bash-completion-r1 flag-o-matic lua-single optfeature pax-utils python-r1 toolchain-funcs waf-utils xdg-utils
-
-DESCRIPTION="Media player based on MPlayer and mplayer2"
-HOMEPAGE="https://mpv.io/ https://github.com/mpv-player/mpv"
-
-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 ~riscv x86 ~amd64-linux"
- DOCS=( RELEASE_NOTES )
-else
- EGIT_REPO_URI="https://github.com/mpv-player/mpv.git"
+if [[ ${PV} == 9999 ]]; then
inherit git-r3
- DOCS=(); SRC_URI=""
+ EGIT_REPO_URI="https://github.com/mpv-player/mpv.git"
+else
+ SRC_URI="https://github.com/mpv-player/mpv/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux"
fi
-SRC_URI+=" https://waf.io/waf-${WAF_PV}"
-DOCS+=( README.md DOCS/{client-api,interface}-changes.rst )
-
-# See Copyright in sources and Gentoo bug 506946. Waf is BSD, libmpv is ISC.
-LICENSE="LGPL-2.1+ GPL-2+ BSD ISC"
-SLOT="0"
-IUSE="+alsa aqua archive bluray cdda +cli coreaudio cplugins cuda debug doc drm dvb
- dvd +egl gamepad gbm +iconv jack javascript jpeg lcms libcaca libmpv +lua
- openal +opengl pulseaudio raspberry-pi rubberband sdl
- selinux test tools +uchardet vaapi vdpau vulkan wayland +X +xv zlib zimg"
+DESCRIPTION="Media player for the command line"
+HOMEPAGE="https://mpv.io/"
+
+LICENSE="LGPL-2.1+ GPL-2+ BSD ISC MIT" #506946
+SLOT="0/2" # soname
+IUSE="
+ +X +alsa aqua archive bluray cdda +cli coreaudio debug +drm dvb
+ dvd +egl gamepad +iconv jack javascript jpeg lcms libcaca +libmpv
+ +lua nvenc openal opengl pipewire pulseaudio rubberband sdl selinux
+ sixel sndio soc test tools +uchardet vaapi vdpau vulkan wayland xv
+ zimg zlib
+"
REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
|| ( cli libmpv )
- aqua? ( opengl )
- cuda? ( opengl )
- egl? ( || ( gbm X wayland ) )
- gamepad? ( sdl )
- gbm? ( drm egl opengl )
- lcms? ( opengl )
+ egl? ( || ( X drm wayland ) )
lua? ( ${LUA_REQUIRED_USE} )
- opengl? ( || ( aqua egl X raspberry-pi !cli ) )
- raspberry-pi? ( opengl )
- test? ( opengl )
+ nvenc? ( || ( egl opengl vulkan ) )
+ opengl? ( || ( X aqua ) )
+ test? ( cli )
tools? ( cli )
uchardet? ( iconv )
- vaapi? ( || ( gbm X wayland ) )
+ vaapi? ( || ( X drm wayland ) )
vdpau? ( X )
vulkan? ( || ( X wayland ) )
- wayland? ( egl )
- X? ( egl? ( opengl ) )
xv? ( X )
- ${PYTHON_REQUIRED_USE}
"
-
RESTRICT="!test? ( test )"
COMMON_DEPEND="
- >=media-video/ffmpeg-4.0:0=[encode,threads,vaapi?,vdpau?]
- alsa? ( >=media-libs/alsa-lib-1.0.18 )
- archive? ( >=app-arch/libarchive-3.4.0:= )
- bluray? ( >=media-libs/libbluray-0.3.0:= )
- cdda? ( dev-libs/libcdio-paranoia
- dev-libs/libcdio:= )
- drm? ( x11-libs/libdrm )
+ media-libs/libass:=[fontconfig]
+ >=media-libs/libplacebo-6.338.2:=[opengl?,vulkan?]
+ >=media-video/ffmpeg-4.4:=[encode,soc(-)?,threads,vaapi?,vdpau?]
+ X? (
+ x11-libs/libX11
+ x11-libs/libXScrnSaver
+ x11-libs/libXext
+ x11-libs/libXpresent
+ x11-libs/libXrandr
+ xv? ( x11-libs/libXv )
+ )
+ alsa? ( media-libs/alsa-lib )
+ archive? ( app-arch/libarchive:= )
+ bluray? ( media-libs/libbluray:= )
+ cdda? (
+ dev-libs/libcdio-paranoia:=
+ dev-libs/libcdio:=
+ )
+ drm? (
+ x11-libs/libdrm
+ egl? ( media-libs/mesa[gbm(+)] )
+ )
dvd? (
- >=media-libs/libdvdnav-4.2.0:=
- >=media-libs/libdvdread-4.1.0:=
+ media-libs/libdvdnav
+ media-libs/libdvdread:=
+ )
+ egl? (
+ media-libs/libglvnd
+ media-libs/libplacebo[opengl]
)
- egl? ( media-libs/mesa[egl,gbm(-)?,wayland(-)?] )
- gamepad? ( media-libs/libsdl2 )
+ gamepad? ( media-libs/libsdl2[joystick] )
iconv? (
virtual/libiconv
uchardet? ( app-i18n/uchardet )
)
jack? ( virtual/jack )
- javascript? ( >=dev-lang/mujs-1.0.0 )
- jpeg? ( virtual/jpeg:0 )
- lcms? ( >=media-libs/lcms-2.6:2 )
- >=media-libs/libass-0.12.1:=[fontconfig,harfbuzz(+)]
- virtual/ttf-fonts
- libcaca? ( >=media-libs/libcaca-0.99_beta18 )
+ javascript? ( dev-lang/mujs:= )
+ jpeg? ( media-libs/libjpeg-turbo:= )
+ lcms? ( media-libs/lcms:2 )
+ libcaca? ( media-libs/libcaca )
lua? ( ${LUA_DEPS} )
- openal? ( >=media-libs/openal-1.13 )
- pulseaudio? ( media-sound/pulseaudio )
- raspberry-pi? ( >=media-libs/raspberrypi-userland-0_pre20160305-r1 )
- rubberband? ( >=media-libs/rubberband-1.8.0 )
+ openal? ( media-libs/openal )
+ opengl? ( media-libs/libglvnd[X?] )
+ pipewire? ( media-video/pipewire:= )
+ pulseaudio? ( media-libs/libpulse )
+ rubberband? ( media-libs/rubberband )
sdl? ( media-libs/libsdl2[sound,threads,video] )
- vaapi? ( x11-libs/libva:=[drm?,X?,wayland?] )
+ sixel? ( media-libs/libsixel )
+ sndio? ( media-sound/sndio:= )
+ vaapi? ( media-libs/libva:=[X?,drm(+)?,wayland?] )
vdpau? ( x11-libs/libvdpau )
- vulkan? (
- >=media-libs/libplacebo-2.72.2:=[vulkan]
- media-libs/shaderc
- )
+ vulkan? ( media-libs/vulkan-loader[X?,wayland?] )
wayland? (
- >=dev-libs/wayland-1.6.0
- >=dev-libs/wayland-protocols-1.14
- >=x11-libs/libxkbcommon-0.3.0
- )
- X? (
- x11-libs/libX11
- x11-libs/libXScrnSaver
- x11-libs/libXext
- x11-libs/libXinerama
- x11-libs/libXrandr
- opengl? (
- x11-libs/libXdamage
- virtual/opengl
- )
- xv? ( x11-libs/libXv )
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ x11-libs/libxkbcommon
)
- zlib? ( sys-libs/zlib )
- zimg? ( >=media-libs/zimg-2.9.2 )
+ zimg? ( media-libs/zimg )
+ zlib? ( sys-libs/zlib:= )
"
-DEPEND="${COMMON_DEPEND}
- ${PYTHON_DEPS}
- cuda? ( >=media-libs/nv-codec-headers-8.2.15.7 )
- dvb? ( virtual/linuxtv-dvb-headers )
-"
-RDEPEND="${COMMON_DEPEND}
- cuda? ( x11-drivers/nvidia-drivers[X] )
+RDEPEND="
+ ${COMMON_DEPEND}
selinux? ( sec-policy/selinux-mplayer )
tools? ( ${PYTHON_DEPS} )
"
-BDEPEND="dev-python/docutils
+DEPEND="
+ ${COMMON_DEPEND}
+ X? ( x11-base/xorg-proto )
+ dvb? ( sys-kernel/linux-headers )
+ nvenc? ( media-libs/nv-codec-headers )
+ wayland? ( dev-libs/wayland-protocols )
+"
+BDEPEND="
+ ${PYTHON_DEPS}
virtual/pkgconfig
- test? ( >=dev-util/cmocka-1.0.0 )
+ cli? ( dev-python/docutils )
+ wayland? ( dev-util/wayland-scanner )
"
pkg_setup() {
use lua && lua-single_pkg_setup
-}
-
-src_prepare() {
- cp "${DISTDIR}/waf-${WAF_PV}" "${S}"/waf || die
- chmod +x "${S}"/waf || die
- default
+ python-single-r1_pkg_setup
}
src_configure() {
- python_setup
- tc-export CC PKG_CONFIG AR
-
- if use raspberry-pi; then
- append-cflags -I"${SYSROOT%/}${EPREFIX}/opt/vc/include"
- append-ldflags -L"${SYSROOT%/}${EPREFIX}/opt/vc/lib"
- fi
-
- local mywafargs=(
- --confdir="${EPREFIX}/etc/${PN}"
-
- $(usex cli '' '--disable-cplayer')
- $(use_enable libmpv libmpv-shared)
-
- --disable-libmpv-static
- --disable-static-build
- # See deep down below for build-date.
- --disable-optimize # Don't add '-O2' to CFLAGS.
- $(usex debug '' '--disable-debug-build')
-
- $(use_enable doc html-build)
- --disable-pdf-build
- --enable-manpage-build
- $(use_enable cplugins)
- $(use_enable test)
-
- $(use_enable iconv)
- $(use_enable lua)
- $(use_enable javascript)
- $(use_enable zlib)
- $(use_enable bluray libbluray)
- $(use_enable dvd dvdnav)
- $(use_enable cdda)
- $(use_enable uchardet)
- $(use_enable rubberband)
- $(use_enable lcms lcms2)
- --disable-vapoursynth # Only available in overlays.
- $(use_enable archive libarchive)
-
- --enable-libavdevice
-
- # Audio outputs:
- $(use_enable sdl sdl2) # Listed under audio, but also includes video.
- $(use_enable pulseaudio pulse)
- $(use_enable jack)
- $(use_enable openal)
- --disable-opensles
- $(use_enable alsa)
- $(use_enable coreaudio)
-
- # Video outputs:
- $(use_enable aqua cocoa)
- $(use_enable drm)
- $(use_enable gbm)
- $(use_enable wayland wayland-scanner)
- $(use_enable wayland wayland-protocols)
- $(use_enable wayland)
- $(use_enable X x11)
- $(use_enable xv)
- $(usex opengl "$(use_enable aqua gl-cocoa)" '--disable-gl-cocoa')
- $(usex opengl "$(use_enable X gl-x11)" '--disable-gl-x11')
- $(usex egl "$(use_enable X egl-x11)" '--disable-egl-x11')
- $(usex egl "$(use_enable gbm egl-drm)" '--disable-egl-drm')
- $(usex opengl "$(use_enable wayland gl-wayland)" '--disable-gl-wayland')
- $(use_enable vdpau)
- $(usex vdpau "$(use_enable opengl vdpau-gl-x11)" '--disable-vdpau-gl-x11')
- $(use_enable vaapi) # See below for vaapi-glx, vaapi-x-egl.
- $(usex vaapi "$(use_enable X vaapi-x11)" '--disable-vaapi-x11')
- $(usex vaapi "$(use_enable wayland vaapi-wayland)" '--disable-vaapi-wayland')
- $(usex vaapi "$(use_enable gbm vaapi-drm)" '--disable-vaapi-drm')
- $(use_enable libcaca caca)
- $(use_enable jpeg)
- $(use_enable vulkan shaderc)
- $(use_enable vulkan libplacebo)
- $(use_enable raspberry-pi rpi)
- $(usex libmpv "$(use_enable opengl plain-gl)" '--disable-plain-gl')
- $(usex opengl '' '--disable-gl')
- $(use_enable vulkan)
- $(use_enable gamepad sdl2-gamepad)
-
- # HWaccels:
- # Automagic Video Toolbox HW acceleration. See Gentoo bug 577332.
- $(use_enable cuda cuda-hwaccel)
- $(use_enable cuda cuda-interop)
-
- # TV features:
- $(use_enable dvb dvbin)
-
- # Miscellaneous features:
- $(use_enable zimg)
- )
- if use lua; then
- if use lua_single_target_luajit; then
- mywafargs+=( --lua="luajit" )
+ if use !debug; then
+ if use test; then
+ einfo "Skipping -DNDEBUG due to USE=test"
else
- # Because it would be too simple to just let the user directly
- # specify the package name to check, wouldn't it.
- mywafargs+=( --lua="$(ver_rs 1 '' $(ver_cut 1-2 $(lua_get_version)))" )
+ append-cppflags -DNDEBUG # treated specially
fi
fi
- if use vaapi && use X; then
- mywafargs+=(
- $(use_enable egl vaapi-x-egl)
- )
- fi
-
- # Not for us
- mywafargs+=(
- --disable-android
- --disable-egl-android
- --disable-uwp
- --disable-audiounit
- --disable-macos-media-player
- --disable-wasapi
- --disable-ios-gl
- --disable-macos-touchbar
- --disable-macos-cocoa-cb
- --disable-tvos
- --disable-egl-angle-win32
+ mpv_feature_multi() {
+ local use set
+ for use in ${1} ${2}; do
+ use ${use} || set=disabled
+ done
+ echo -D${3-${2}}=${set-enabled}
+ }
+
+ local emesonargs=(
+ $(meson_use cli cplayer)
+ $(meson_use libmpv)
+ $(meson_use test tests)
+
+ $(meson_feature cli html-build)
+ $(meson_feature cli manpage-build)
+ -Dpdf-build=disabled
+
+ -Dbuild-date=false
+
+ # misc options
+ $(meson_feature archive libarchive)
+ $(meson_feature bluray libbluray)
+ $(meson_feature cdda)
+ -Dcplugins=enabled
+ $(meson_feature dvb dvbin)
+ $(meson_feature dvd dvdnav)
+ $(meson_feature gamepad sdl2-gamepad)
+ $(meson_feature iconv)
+ $(meson_feature javascript)
+ -Dlibavdevice=enabled
+ $(meson_feature lcms lcms2)
+ -Dlua=$(usex lua "${ELUA}" disabled)
+ $(meson_feature rubberband)
+ -Dsdl2=$(use gamepad || use sdl && echo enabled || echo disabled) #857156
+ $(meson_feature uchardet)
+ -Dvapoursynth=disabled # only available in overlays
+ $(meson_feature zimg)
+ $(meson_feature zlib)
+
+ # audio output
+ $(meson_feature alsa)
+ $(meson_feature coreaudio)
+ $(meson_feature jack)
+ $(meson_feature openal)
+ $(meson_feature pipewire)
+ $(meson_feature pulseaudio pulse)
+ $(meson_feature sdl sdl2-audio)
+ $(meson_feature sndio)
+
+ # video output
+ $(meson_feature X x11)
+ $(meson_feature aqua cocoa)
+ $(meson_feature drm)
+ $(meson_feature jpeg)
+ $(meson_feature libcaca caca)
+ $(meson_feature sdl sdl2-video)
+ $(meson_feature sixel)
+ $(meson_feature wayland)
+ $(meson_feature xv)
+
+ -Dgl=$(use egl || use libmpv || use opengl &&
+ echo enabled || echo disabled)
+ $(meson_feature egl)
+ $(mpv_feature_multi egl X egl-x11)
+ $(mpv_feature_multi egl drm gbm) # gbm is only used by egl-drm
+ $(mpv_feature_multi egl drm egl-drm)
+ $(mpv_feature_multi egl wayland egl-wayland)
+ $(meson_feature libmpv plain-gl)
+ $(mpv_feature_multi opengl X gl-x11)
+ $(mpv_feature_multi opengl aqua gl-cocoa)
+
+ $(meson_feature vulkan)
+
+ # hardware decoding
+ $(meson_feature nvenc cuda-hwaccel)
+ $(meson_feature nvenc cuda-interop)
+
+ $(meson_feature vaapi)
+ $(mpv_feature_multi vaapi X vaapi-x11)
+ $(mpv_feature_multi vaapi drm vaapi-drm)
+ $(mpv_feature_multi vaapi wayland vaapi-wayland)
+
+ $(meson_feature vdpau)
+ $(mpv_feature_multi vdpau opengl vdpau-gl-x11)
+
+ $(mpv_feature_multi aqua opengl videotoolbox-gl)
+
+ # notable options left to automagic
+ #dmabuf-wayland: USE="drm wayland" + plus memfd_create support
+ #vulkan-interop: USE="vulkan" + >=ffmpeg-6.1
+ # TODO?: perhaps few more similar compound options should be left auto
)
- mywafargs+=(
- --bashdir="$(get_bashcompdir)"
- --zshdir="${EPREFIX}"/usr/share/zsh/site-functions
-)
-
- # Create reproducible non-live builds.
- [[ ${PV} != *9999* ]] && mywafargs+=(--disable-build-date)
+ meson_src_configure
+}
- waf-utils_src_configure "${mywafargs[@]}"
+src_test() {
+ # ffmpeg tests are picky and easily break without necessarily
+ # meaning that there are runtime issues (bug #921091,#924276)
+ meson_src_test --no-suite ffmpeg
}
src_install() {
- waf-utils_src_install
+ meson_src_install
if use lua; then
insinto /usr/share/${PN}
doins -r TOOLS/lua
- fi
- if use cli && use lua_single_target_luajit; then
- pax-mark -m "${ED}"/usr/bin/${PN}
+ if use cli && use lua_single_target_luajit; then
+ pax-mark -m "${ED}"/usr/bin/${PN}
+ fi
fi
if use tools; then
dobin TOOLS/{mpv_identify.sh,umpv}
newbin TOOLS/idet.sh mpv_idet.sh
- python_replicate_script "${ED}"/usr/bin/umpv
- fi
-}
-
-pkg_postinst() {
- local rv softvol_0_18_1=0 osc_0_21_0=0 txtsubs_0_24_0=0 opengl_0_25_0=0
-
- for rv in ${REPLACING_VERSIONS}; do
- ver_test ${rv} -lt 0.18.1 && softvol_0_18_1=1
- ver_test ${rv} -lt 0.21.0 && osc_0_21_0=1
- ver_test ${rv} -lt 0.24.0 && txtsubs_0_24_0=1
- ver_test ${rv} -lt 0.25.0 && ! use opengl && opengl_0_25_0=1
- done
-
- if [[ ${softvol_0_18_1} -eq 1 ]]; then
- elog "Since version 0.18.1 the software volume control is always enabled."
- elog "This means that volume controls don't change the system volume,"
- elog "e.g. per-application volume with PulseAudio."
- elog "If you want to restore the previous behaviour, please refer to"
- elog
- elog "https://wiki.gentoo.org/wiki/Mpv#Volume_in_0.18.1"
- elog
- fi
-
- if [[ ${osc_0_21_0} -eq 1 ]]; then
- elog "In version 0.21.0 the default OSC layout was changed."
- elog "If you want to restore the previous layout, please refer to"
- elog
- elog "https://wiki.gentoo.org/wiki/Mpv#OSC_in_0.21.0"
- elog
+ python_fix_shebang "${ED}"/usr/bin/umpv
fi
- if [[ ${txtsubs_0_24_0} -eq 1 ]]; then
- elog "Since version 0.24.0 subtitles with .txt extension aren't autoloaded."
- elog "If you want to restore the previous behaviour, please refer to"
- elog
- elog "https://wiki.gentoo.org/wiki/Mpv#Subtitles_with_.txt_extension_in_0.24.0"
- elog
+ if use cli; then
+ dodir /usr/share/doc/${PF}/html
+ mv "${ED}"/usr/share/doc/{mpv,${PF}/html}/mpv.html || die
+ mv "${ED}"/usr/share/doc/{mpv,${PF}/examples} || die
fi
- if [[ ${opengl_0_25_0} -eq 1 ]]; then
- elog "Since version 0.25.0 the 'opengl' USE flag is mapped to"
- elog "the 'opengl' video output and no longer explicitly requires"
- elog "X11 or Mac OS Aqua. Consider enabling the 'opengl' USE flag."
- fi
-
- optfeature "URL support" net-misc/youtube-dl
-
- xdg_icon_cache_update
- xdg_desktop_database_update
+ local GLOBIGNORE=*/*build*:*/*policy*
+ dodoc RELEASE_NOTES DOCS/*.{md,rst}
}
-pkg_postrm() {
- xdg_icon_cache_update
- xdg_desktop_database_update
-}
+pkg_postinst() {
+ xdg_pkg_postinst
-src_test() {
- cd "${S}"/build/test || die
- local test
- for test in *; do
- if [[ -x ${test} ]]; then
- ./"${test}" || die "Test suite failed"
- fi
- done
+ optfeature "various websites URL support$(usev !lua \
+ " (requires ${PN} with USE=lua)")" net-misc/yt-dlp
}