File PKGBUILD of Package mpv

# Maintainer: Christian Hesse <mail@eworm.de>
# Maintainer: Robin Candau <antiz@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Eivind Uggedal <eivind@uggedal.com>

pkgname=mpv
epoch=1
pkgver=0.40.0
pkgrel=7
pkgdesc='a free, open source, and cross-platform media player'
arch=('x86_64')
license=('GPL-2.0-or-later AND LGPL-2.1-or-later')
url='https://mpv.io/'
depends=('alsa-lib' 'desktop-file-utils' 'ffmpeg' 'glibc' 'hicolor-icon-theme'
         'jack' 'lcms2' 'libarchive' 'libass' 'libbluray' 'libcdio'
         'libcdio-paranoia' 'libdisplay-info' 'libdrm' 'libdvdnav' 'libdvdread' 'libegl' 'libgl'
         'libglvnd' 'libjpeg-turbo' 'libplacebo' 'libpulse' 'libsixel' 'libva'
         'libvdpau' 'libx11' 'libxext' 'libxkbcommon' 'libxpresent' 'libxrandr'
         'libxss' 'libxv' 'luajit' 'mesa' 'mujs' 'libpipewire' 'rubberband' 'sdl2'
         'openal' 'uchardet' 'vapoursynth' 'vulkan-icd-loader' 'wayland' 'zlib')
makedepends=('git' 'meson' 'python-docutils' 'ladspa' 'wayland-protocols'
             'ffnvcodec-headers' 'vulkan-headers')
optdepends=('yt-dlp: for video-sharing websites playback')
provides=('libmpv.so')
options=('!emptydirs')
validpgpkeys=('145077D82501AA20152CACCE8D769208D5E31419') # sfan5 <sfan5@live.de>
source=("git+https://github.com/mpv-player/mpv.git#tag=v${pkgver}?signed"
        'fix_wayland_clipboard_high_cpu_usage.patch')
sha256sums=('754d045dba7143b51dd6eb2d32ab3a9a483e6a337e685b581a876bc2e20eddf1'
            '610227f044853fe88888d2317ead0e29c84ccffbdb7f712c3671187778b5b60e')

prepare() {
  cd "${pkgname}"

  # Fix high CPU usage with Wayland clipboard
  # See https://github.com/mpv-player/mpv/issues/16139
  # and https://github.com/mpv-player/mpv/commit/d20ded876d27497d3fe6a9494add8106b507a45c
  patch -Np1 -i "${srcdir}/fix_wayland_clipboard_high_cpu_usage.patch"
  patch -Np1 -i "${srcdir}/fix_wayland_inhibit_kde.patch"

  # Fix build with ffmpeg 8
  patch -Np1 -i "${srcdir}/ffmpeg8.patch"
}

build() {
  local _meson_options=(
    --auto-features auto

    -Dlibmpv=true
    -Dgl-x11=enabled
    -Dcaca=disabled
    -Dcdda=enabled
    -Ddrm=enabled
    -Ddvbin=enabled
    -Ddvdnav=enabled
    -Dlibarchive=enabled
    -Dopenal=enabled
    -Dsdl2=enabled
    -Dsdl2-audio=enabled
    -Dsdl2-video=enabled
    -Dsdl2-gamepad=enabled
  )

  arch-meson "${pkgname}" build "${_meson_options[@]}"

  meson compile -C build
}

check() {
  meson test -C build
}

package() {
  depends+=('libasound.so' 'libavcodec.so' 'libavdevice.so' 'libavfilter.so'
            'libavformat.so' 'libavutil.so' 'libdisplay-info.so' 'libswresample.so' 'libswscale.so'
            'libjack.so' 'liblcms2.so' 'libarchive.so' 'libass.so' 'libbluray.so'
            'libjpeg.so' 'libplacebo.so' 'libpulse.so' 'libva.so' 'libva-drm.so'
            'libva-wayland.so' 'libva-x11.so' 'libxkbcommon.so' 'librubberband.so')

  meson install -C build --destdir "${pkgdir}"

  # delete private entries only required for static linking 
  sed -i -e '/Requires.private/d' -e '/Libs.private/d' "${pkgdir}"/usr/lib/pkgconfig/mpv.pc

  install -m0644 "${pkgname}"/DOCS/{encoding.rst,tech-overview.txt} \
    "${pkgdir}"/usr/share/doc/mpv

  install -m0644 "${pkgname}"/TOOLS/{umpv,mpv_identify.sh,stats-conv.py,idet.sh,lua/*} \
    -D -t "${pkgdir}"/usr/share/mpv/scripts
}

source+=('fix_wayland_inhibit_kde.patch' 'ffmpeg8.patch')
sha256sums+=('3d3eda845b8486d7512ad2bbe242f94eaae7a34d5edafff31f3200afb82f3c91' '9596f2390a120a54d1bc48a3937d6f236feab0c4cecaae8a0d3dec59a38e29b3')
source[0]=$pkgname.tar.xz
sha256sums[0]='SKIP'
openSUSE Build Service is sponsored by