diff options
Diffstat (limited to 'media-video/mpv/mpv-9999.ebuild')
-rw-r--r-- | media-video/mpv/mpv-9999.ebuild | 492 |
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 } |