diff options
author | Ionen Wolkens <ionen@gentoo.org> | 2023-07-23 14:22:43 -0400 |
---|---|---|
committer | Ionen Wolkens <ionen@gentoo.org> | 2023-07-23 15:08:55 -0400 |
commit | 40df9a529bbb5075b565b3b1e092348ac7802472 (patch) | |
tree | b3493999d74e93c70de106093f1fbf70850e6d26 /media-video/mpv | |
parent | media-video/mpv: sync live keywords (diff) | |
download | gentoo-40df9a529bbb5075b565b3b1e092348ac7802472.tar.gz gentoo-40df9a529bbb5075b565b3b1e092348ac7802472.tar.bz2 gentoo-40df9a529bbb5075b565b3b1e092348ac7802472.zip |
media-video/mpv: add 0.36.0
Neither me nor pipewire upstream expected a release soon, but
turns out did not have to worry about that. Also includes more
pipewire fixes than just the emergency one so ao=pipewire users
should upgrade ahead of stable.
Note that this needs the latest version of libplacebo or else
gpu-next won't be enabled (that version is however incompatible
with <ffmpeg-6.1 and <vlc-4 -- not that it's currently enabled in
Gentoo for vlc-3 and is off-by-default on ffmpeg).
Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'media-video/mpv')
-rw-r--r-- | media-video/mpv/Manifest | 1 | ||||
-rw-r--r-- | media-video/mpv/files/mpv-0.36.0-tests-odr.patch | 30 | ||||
-rw-r--r-- | media-video/mpv/mpv-0.36.0.ebuild | 291 |
3 files changed, 322 insertions, 0 deletions
diff --git a/media-video/mpv/Manifest b/media-video/mpv/Manifest index 6ac1915445ce..2848b9c4a196 100644 --- a/media-video/mpv/Manifest +++ b/media-video/mpv/Manifest @@ -1 +1,2 @@ DIST mpv-0.35.1.tar.gz 3367913 BLAKE2B 706a2031a2ca973eb3a092ec7f62ba40ca4dfd78e3ffe5d6e432486b0018852b034152a21805be594054178ccb17856dafe2b860cddcc22d27df895d163871de SHA512 42f3564a9ed4d972d14b2c697b0163f06a8bb68a0606a86c34935181247c783e3cb62286b445799998def0919fb13fce8b8f6453f82652d5bfaea5929119127a +DIST mpv-0.36.0.tar.gz 3409178 BLAKE2B 7260c265f02918d4caf72d8d8ecc9d4ab9783d66d675bd683a2f9c228404ad978c6fe0aa50f486b5257740176bc26f8abde7eff20d89019d5f701ec78c7743e1 SHA512 51f455a425ea5aac47acb3582d0f958a34248a2290a8d6887d22bcb9385fe8d1ab5d7f09d5408cfecfb73c1ec85d1b8ec8958e45a4941d3f711a2e580187472f diff --git a/media-video/mpv/files/mpv-0.36.0-tests-odr.patch b/media-video/mpv/files/mpv-0.36.0-tests-odr.patch new file mode 100644 index 000000000000..1c7c05c20f78 --- /dev/null +++ b/media-video/mpv/files/mpv-0.36.0-tests-odr.patch @@ -0,0 +1,30 @@ +Quickfix for USE=test with -Werror=odr (stubs, so have no real consequences). + +timer.h gets indirectly included and can declare these differently, have not +looked closer yet. +--- a/test/test_utils.c ++++ b/test/test_utils.c +@@ -110,6 +110,6 @@ + #ifndef WIN32_TESTS +-void mp_add_timeout(void) {}; +-void mp_rel_time_to_timespec(void) {}; +-void mp_time_us(void) {}; +-void mp_time_us_to_timespec(void) {}; ++void mp_add_timeout(int64_t time_us, double timeout_sec) {}; ++struct timespec mp_rel_time_to_timespec(double timeout_sec) {return (struct timespec){0};}; ++int64_t mp_time_us(void) {return 0;}; ++struct timespec mp_time_us_to_timespec(int64_t time_us) {return (struct timespec){0};}; + #endif +--- a/test/test_utils.h ++++ b/test/test_utils.h +@@ -61,6 +61,6 @@ + #ifndef WIN32_TESTS +-void mp_add_timeout(void); +-void mp_rel_time_to_timespec(void); +-void mp_time_us(void); +-void mp_time_us_to_timespec(void); ++void mp_add_timeout(int64_t time_us, double timeout_sec); ++struct timespec mp_rel_time_to_timespec(double timeout_sec); ++int64_t mp_time_us(void); ++struct timespec mp_time_us_to_timespec(int64_t time_us); + #endif diff --git a/media-video/mpv/mpv-0.36.0.ebuild b/media-video/mpv/mpv-0.36.0.ebuild new file mode 100644 index 000000000000..67d67e316531 --- /dev/null +++ b/media-video/mpv/mpv-0.36.0.ebuild @@ -0,0 +1,291 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-1 luajit ) +PYTHON_COMPAT=( python3_{10..12} ) +inherit flag-o-matic lua-single meson optfeature pax-utils python-single-r1 xdg + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + 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 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux" +fi + +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 + +libplacebo +lua mmal nvenc openal opengl pipewire pulseaudio + raspberry-pi rubberband sdl selinux sixel sndio test tools +uchardet + vaapi vdpau vulkan wayland +xv zimg zlib" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( cli libmpv ) + egl? ( || ( X drm wayland ) ) + libplacebo? ( || ( egl opengl vulkan ) ) + lua? ( ${LUA_REQUIRED_USE} ) + nvenc? ( || ( egl opengl vulkan ) ) + opengl? ( || ( X aqua ) ) + test? ( cli ) + tools? ( cli ) + uchardet? ( iconv ) + vaapi? ( + || ( X egl libplacebo wayland ) + wayland? ( drm ) + ) + vdpau? ( X ) + vulkan? ( || ( X wayland ) libplacebo ) + xv? ( X )" +RESTRICT="!test? ( test )" + +# raspberry-pi: default to -bin given non-bin is known broken (bug #893422) +COMMON_DEPEND=" + media-libs/libass:=[fontconfig] + >=media-video/ffmpeg-4.4:=[encode,threads,vaapi?,vdpau?] + X? ( + x11-libs/libX11 + x11-libs/libXScrnSaver + x11-libs/libXext + x11-libs/libXinerama + 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? ( + media-libs/mesa[gbm(+)] + x11-libs/libdrm + ) + dvd? ( + media-libs/libdvdnav + media-libs/libdvdread:= + ) + egl? ( media-libs/libglvnd ) + gamepad? ( media-libs/libsdl2[joystick] ) + iconv? ( + virtual/libiconv + uchardet? ( app-i18n/uchardet ) + ) + jack? ( virtual/jack ) + javascript? ( dev-lang/mujs:= ) + jpeg? ( media-libs/libjpeg-turbo:= ) + lcms? ( media-libs/lcms:2 ) + libcaca? ( media-libs/libcaca ) + libplacebo? ( + >=media-libs/libplacebo-4.157:=[opengl?,vulkan?] + egl? ( media-libs/libplacebo[opengl] ) + ) + lua? ( ${LUA_DEPS} ) + openal? ( media-libs/openal ) + opengl? ( media-libs/libglvnd[X?] ) + pipewire? ( media-video/pipewire:= ) + pulseaudio? ( media-libs/libpulse ) + raspberry-pi? ( + || ( + media-libs/raspberrypi-userland-bin + media-libs/raspberrypi-userland + ) + ) + rubberband? ( media-libs/rubberband ) + sdl? ( media-libs/libsdl2[sound,threads,video] ) + sixel? ( media-libs/libsixel ) + sndio? ( media-sound/sndio:= ) + vaapi? ( media-libs/libva:=[X?,drm(+)?,wayland?] ) + vdpau? ( x11-libs/libvdpau ) + vulkan? ( + media-libs/shaderc + media-libs/vulkan-loader[X?,wayland?] + ) + wayland? ( + dev-libs/wayland + dev-libs/wayland-protocols + x11-libs/libxkbcommon + ) + zimg? ( media-libs/zimg ) + zlib? ( sys-libs/zlib:= )" +RDEPEND=" + ${COMMON_DEPEND} + selinux? ( sec-policy/selinux-mplayer ) + tools? ( ${PYTHON_DEPS} )" +DEPEND=" + ${COMMON_DEPEND} + X? ( x11-base/xorg-proto ) + dvb? ( virtual/linuxtv-dvb-headers ) + nvenc? ( media-libs/nv-codec-headers ) + wayland? ( dev-libs/wayland-protocols )" +BDEPEND=" + ${PYTHON_DEPS} + virtual/pkgconfig + cli? ( dev-python/docutils ) + wayland? ( dev-util/wayland-scanner )" + +PATCHES=( + "${FILESDIR}"/${PN}-0.36.0-tests-odr.patch +) + +pkg_setup() { + use lua && lua-single_pkg_setup + python-single-r1_pkg_setup +} + +src_configure() { + if use !debug; then + if use test; then + einfo "Skipping -DNDEBUG due to USE=test" + else + append-cppflags -DNDEBUG # treated specially + fi + fi + + 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 drm gbm) + $(meson_feature jpeg) + $(meson_feature libcaca caca) + $(meson_feature libplacebo) + $(meson_feature mmal rpi-mmal) + $(meson_feature sdl sdl2-video) + $(meson_feature sixel) + $(meson_feature wayland) + $(meson_feature xv) + + -Dgl=$(use egl || use libmpv || use opengl || use raspberry-pi && + echo enabled || echo disabled) + $(meson_feature egl) + $(mpv_feature_multi egl X egl-x11) + $(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 raspberry-pi rpi) + + $(meson_feature vulkan) + $(meson_feature vulkan shaderc) + + # 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 X' egl vaapi-x-egl) + $(mpv_feature_multi 'vaapi egl' drm vaapi-drm) + $(mpv_feature_multi 'vaapi egl' 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 + #libplacebo-next: USE="libplacebo" + >=libplacebo-5.266 + #vulkan-interop: USE="libplacebo vulkan" + ffmpeg-9999 currently + # TODO?: perhaps few more similar compound options should be left auto + ) + + has_version '>=media-libs/libplacebo-5.266' || + ewarn "${PN}'s gpu-next video output requires ${_} to be used" + + meson_src_configure +} + +src_install() { + meson_src_install + + if use lua; then + insinto /usr/share/${PN} + doins -r TOOLS/lua + + 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_fix_shebang "${ED}"/usr/bin/umpv + fi + + 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 + + local GLOBIGNORE=*/*build*:*/*policy* + dodoc RELEASE_NOTES DOCS/*.{md,rst} +} + +pkg_postinst() { + xdg_pkg_postinst + + optfeature "URL support with USE=lua" net-misc/yt-dlp +} |