You've already forked macports-ports
mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
abe9ee4f7a
In preparation for changing the default.
508 lines
19 KiB
Tcl
508 lines
19 KiB
Tcl
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
|
|
|
|
PortSystem 1.0
|
|
PortGroup github 1.0
|
|
PortGroup meson 1.0
|
|
PortGroup compiler_blacklist_versions 1.0
|
|
PortGroup legacysupport 1.1
|
|
PortGroup active_variants 1.1
|
|
|
|
# Please revbump mpv whenever linked ffmpeg is updated!
|
|
github.setup mpv-player mpv 0.39.0 v
|
|
# Change github.tarball_from to 'releases' or 'archive' next update
|
|
github.tarball_from tarball
|
|
conflicts mpv-legacy
|
|
revision 0
|
|
categories multimedia
|
|
license GPL-2+
|
|
maintainers {ionic @Ionic} {i0ntempest @i0ntempest} openmaintainer
|
|
platforms {darwin >= 19}
|
|
|
|
description mpv is a movie player based on MPlayer and mplayer2.
|
|
long_description {*}${description} It plays most MPEG/VOB, AVI, Ogg/OGM, \
|
|
VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, \
|
|
NUT, NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files, \
|
|
supported by many native, XAnim, and Win32 DLL codecs. \
|
|
You can watch VideoCD, SVCD, DVD, 3ivx, DivX 3/4/5, WMV \
|
|
and even H.264 movies.
|
|
homepage https://www.mpv.io
|
|
|
|
checksums rmd160 66302b5ad7436ffb4c60b107d34f9f7729bf94d9 \
|
|
sha256 635debea7f816211519c1e721efa7ff09c59cd1cf3148c1efe6009daeeba0361 \
|
|
size 3494630
|
|
|
|
installs_libs no
|
|
|
|
set ffmpeg_ver 7
|
|
depends_build-append port:pkgconfig
|
|
depends_lib port:ffmpeg${ffmpeg_ver} \
|
|
path:bin/perl:perl5 \
|
|
port:libiconv \
|
|
port:zlib \
|
|
path:lib/pkgconfig/libass.pc:libass \
|
|
port:lcms2 \
|
|
port:libplacebo
|
|
|
|
universal_variant no
|
|
|
|
default_variants +osd +opengl +bluray +dvd +audiocd +libarchive
|
|
if {![variant_isset network]} {
|
|
default_variants-append +network_ytdlp
|
|
}
|
|
|
|
platform darwin {
|
|
default_variants-append +bundle +rubberband
|
|
}
|
|
|
|
configure.args-append --buildtype=release \
|
|
-Dmanpage-build=enabled \
|
|
-Dcoreaudio=enabled \
|
|
-Dcocoa=enabled \
|
|
-Dcplugins=enabled \
|
|
-Dzlib=enabled \
|
|
-Dswift-build=enabled \
|
|
-Dhtml-build=disabled \
|
|
-Dvideotoolbox-gl=enabled \
|
|
-Dcuda-hwaccel=disabled \
|
|
-Dopensles=disabled \
|
|
-Degl-drm=disabled \
|
|
-Degl-angle-lib=disabled \
|
|
-Degl-angle-win32=disabled \
|
|
-Daudiounit=disabled \
|
|
-Dios-gl=disabled \
|
|
-Ddirect3d=disabled \
|
|
-Dandroid-media-ndk=disabled \
|
|
-Ddvbin=disabled \
|
|
-Dlibmpv=false
|
|
|
|
# mpv autodetects many support libs. To prevent undeclared
|
|
# dependencies, explicitly disable everything optional first.
|
|
# This list should be expanded each time the port is updated
|
|
# to a new version, disabling any newly added options.
|
|
configure.args-append -Dcaca=disabled \
|
|
-Dcdda=disabled \
|
|
-Dpthread-debug=disabled \
|
|
-Ddvdnav=disabled \
|
|
-Degl-x11=disabled \
|
|
-Dgl=disabled \
|
|
-Dgl-cocoa=disabled \
|
|
-Dvulkan=disabled \
|
|
-Dgl-x11=disabled \
|
|
-Djack=disabled \
|
|
-Djavascript=disabled \
|
|
-Djpeg=disabled \
|
|
-Dlibarchive=disabled \
|
|
-Dlibbluray=disabled \
|
|
-Dlua=disabled \
|
|
-Dopenal=disabled \
|
|
-Dpdf-build=disabled \
|
|
-Dpulse=disabled \
|
|
-Drubberband=disabled \
|
|
-Duchardet=disabled \
|
|
-Dvapoursynth=disabled \
|
|
-Dx11=disabled \
|
|
-Dxv=disabled
|
|
|
|
configure.pkg_config_path-prepend \
|
|
${prefix}/libexec/ffmpeg${ffmpeg_ver}/lib/pkgconfig
|
|
|
|
# Fix picking up the correct talloc version.
|
|
# -isystem has the added benefit of moving the include
|
|
# directory specified to the end of the include path list.
|
|
# This will help the build system respect custom include
|
|
# paths correctly (i.e., searching them before the MP include
|
|
# directory.)
|
|
configure.cppflags-replace \
|
|
-I${prefix}/include \
|
|
-isystem${prefix}/include
|
|
|
|
# Clear CPATH and LIBRARY_PATH because a ncurses include file
|
|
# conflicts with the one in MacPorts. It doesn't matter much anyway
|
|
# because the swift module in mpv doesn't have any dependencies to
|
|
# link against.
|
|
compiler.cpath
|
|
compiler.library_path
|
|
|
|
platform macosx {
|
|
# Force recent enough Xcode.
|
|
# Keep using the "system compiler" for now. Also means one less
|
|
# dependency on recent systems, so yay.
|
|
PortGroup xcodeversion 1.0
|
|
|
|
minimum_xcodeversions {11 4.4}
|
|
|
|
use_xcode yes
|
|
}
|
|
|
|
platform darwin {
|
|
notes-append [subst {
|
|
The maintainer ships his personal config file in
|
|
* ${prefix}/share/doc/${name}/examples/config-maintainer.
|
|
|
|
You are strongly encouraged to copy this file to either
|
|
* ${prefix}/etc/${name}/${name}.conf (globally for all users of the system) or
|
|
* ~/.config/${name}/mpv.conf (only for your current user)
|
|
and adjust it to your needs.
|
|
|
|
If you previously had your configuration file in
|
|
* ~/.${name}/config or ~/.config/${name}/config
|
|
please migrate it to
|
|
* ~/.config/${name}/mpv.conf
|
|
which is the location preferred by upstream.
|
|
}]
|
|
|
|
notes-append {
|
|
This config file already defines the necessary video output settings to make\
|
|
use of the hardware acceleration features provided by your operating system.
|
|
}
|
|
|
|
# C11 atomics is mandatory from version 0.33.0
|
|
compiler.c_standard 2011
|
|
compiler.blacklist-append \
|
|
{clang < 700} *gcc* cc macports-*
|
|
|
|
# Fix youtube-dl hook for streaming youtube videos
|
|
patchfiles-append \
|
|
patch-youtubedl-edl-track-error.diff
|
|
|
|
post-extract {
|
|
xinstall -m 0644 -W "${filespath}" config-maintainer "${worksrcpath}/TOOLS/"
|
|
}
|
|
|
|
pre-configure {
|
|
if {${use_xcode}} {
|
|
set sdks_dir ${developer_dir}/Platforms/MacOSX.platform/Developer/SDKs
|
|
set sdks [glob -directory ${sdks_dir} MacOSX*.sdk]
|
|
configure.sdkroot [lindex [lsort -command vercmp ${sdks}] end]
|
|
}
|
|
if {${configure.sdkroot} ne ""} {
|
|
configure.sdk_version [exec /usr/libexec/PlistBuddy -c Print:ProductVersion ${configure.sdkroot}/System/Library/CoreServices/SystemVersion.plist]
|
|
}
|
|
if {[llength [split ${configure.sdk_version} .]] < 2} {
|
|
configure.sdk_version ${configure.sdk_version}.0
|
|
}
|
|
configure.env-append \
|
|
MACOS_SDK=${configure.sdkroot} \
|
|
MACOS_SDK_VERSION=${configure.sdk_version}
|
|
|
|
if {[variant_isset network]} {
|
|
reinplace -W "${worksrcpath}/TOOLS" "s/@@NETWORK@@//" config-maintainer
|
|
} else {
|
|
reinplace -W "${worksrcpath}/TOOLS" "/@@NETWORK@@/d" config-maintainer
|
|
}
|
|
|
|
if {${os.major} > 11} {
|
|
reinplace -W "${worksrcpath}/TOOLS" "s/@@HWDEC@@//" config-maintainer
|
|
} else {
|
|
reinplace -W "${worksrcpath}/TOOLS" "/@@HWDEC@@/d" config-maintainer
|
|
}
|
|
|
|
if {${os.major} > 12} {
|
|
reinplace -W "${worksrcpath}/TOOLS" "s/@@HWDEC_CUDA@@//" config-maintainer
|
|
} else {
|
|
reinplace -W "${worksrcpath}/TOOLS" "/@@HWDEC_CUDA@@/d" config-maintainer
|
|
}
|
|
|
|
if {${os.major} < 11 || ${configure.build_arch} ni [list x86_64 arm64]} {
|
|
reinplace -W "${worksrcpath}/TOOLS" "/@@VO@@/d" config-maintainer
|
|
reinplace -W "${worksrcpath}/TOOLS" "s/@@BACKEND@@/x11/" config-maintainer
|
|
} else {
|
|
reinplace -W "${worksrcpath}/TOOLS" "s/@@VO@@//" config-maintainer
|
|
reinplace -W "${worksrcpath}/TOOLS" "/@@BACKEND@@/d" config-maintainer
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
# Shameless copy from ipe-tools.
|
|
set python.versions {39 310 311 312 313}
|
|
dict set python.legacy_versions 38 39
|
|
# After Python 3.9 is released, and mpv can be built with it,
|
|
# replace with the above lines with the following:
|
|
#set python.versions {27 39}
|
|
#dict set python.legacy_versions 38 39
|
|
|
|
set python.default_version 313
|
|
set python.version ""
|
|
|
|
# Create python variants.
|
|
foreach ver ${python.versions} {
|
|
set variant_line {variant python${ver} description }
|
|
set python_branch [string index $ver 0].[string range $ver 1 end]
|
|
append variant_line " {Use Python ${python_branch} to build ${name} and generate man pages}"
|
|
|
|
foreach over ${python.versions} {
|
|
if {${ver} == ${over}} {
|
|
continue
|
|
}
|
|
|
|
append variant_line " conflicts python${over}"
|
|
}
|
|
|
|
append variant_line " {
|
|
depends_build-append port:py${ver}-docutils
|
|
license_noconflict py${ver}-docutils
|
|
}"
|
|
eval $variant_line
|
|
}
|
|
|
|
# Create legacy python variants, mapping to the replacement version.
|
|
dict for {legacy_ver replace_ver} ${python.legacy_versions} {
|
|
set variant_line {variant python${legacy_ver} description }
|
|
set legacy_branch [join [split ${legacy_ver} {}] "."]
|
|
set replace_branch [join [split ${replace_ver} {}] "."]
|
|
append variant_line " {Legacy variant for Python ${legacy_branch} mapping to Python ${replace_branch}}"
|
|
append variant_line " requires python${replace_ver}"
|
|
|
|
foreach over ${python.versions} {
|
|
if {${legacy_ver} == ${over} || ${replace_ver} == ${over}} {
|
|
continue
|
|
}
|
|
|
|
append variant_line " conflicts python${over}"
|
|
}
|
|
|
|
append variant_line " { }"
|
|
eval $variant_line
|
|
}
|
|
|
|
# Set default python variant.
|
|
set variant_none true
|
|
foreach ver ${python.versions} {
|
|
if {[variant_isset python${ver}]} {
|
|
set variant_none [expr $variant_none && ![variant_isset python${ver}]]
|
|
}
|
|
}
|
|
|
|
if {${variant_none}} {
|
|
default_variants-append "+python${python.default_version}"
|
|
}
|
|
|
|
# Set ${python.version} to the currently active variant.
|
|
foreach ver ${python.versions} {
|
|
if {[variant_isset python${ver}]} {
|
|
set python.version ${ver}
|
|
set python_branch [string index ${python.version} 0].[string range ${python.version} 1 end]
|
|
}
|
|
}
|
|
|
|
if {[string length ${python.version}] == 0} {
|
|
ui_error "No python variant selected. You must select at least one. The highest value will be used."
|
|
error "Select a python variant."
|
|
}
|
|
|
|
|
|
set python_ver_dot [string index ${python.version} 0].[string range ${python.version} 1 end]
|
|
meson.native.binaries-append \
|
|
rst2man=${prefix}/bin/rst2man-${python_ver_dot}
|
|
|
|
post-destroot {
|
|
# Since we don't have conffiles handling, install mpv.conf as mpv.conf.example
|
|
# to not overwrite this file on each (re-)build.
|
|
file rename ${worksrcpath}/etc/mpv.conf ${worksrcpath}/etc/mpv.conf.example
|
|
|
|
xinstall -d -m 0755 ${destroot}${prefix}/etc/${name}
|
|
foreach etcfile {encoding-profiles.conf mpv.conf.example input.conf} {
|
|
xinstall -m 0644 ${worksrcpath}/etc/${etcfile} \
|
|
${destroot}${prefix}/etc/${name}/${etcfile}
|
|
}
|
|
xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${name}/examples
|
|
copy {*}[glob ${worksrcpath}/TOOLS/lua ${worksrcpath}/TOOLS/*.pl \
|
|
${worksrcpath}/TOOLS/*.sh ${worksrcpath}/TOOLS/*.py \
|
|
${worksrcpath}/TOOLS/umpv ${worksrcpath}/TOOLS/lib] \
|
|
${destroot}${prefix}/share/doc/${name}/examples
|
|
|
|
if {${os.platform} eq "darwin"} {
|
|
xinstall -m 0644 ${worksrcpath}/TOOLS/config-maintainer \
|
|
${destroot}${prefix}/share/doc/${name}/examples
|
|
}
|
|
}
|
|
|
|
|
|
# When enabling features, make sure to replace the "disabled" flags with
|
|
# "enabled" flags in order to make the meson build system error out in case
|
|
# a feature cannot be used/found. Problems like that indicate a missing
|
|
# runtime dependency.
|
|
|
|
variant screenshot description {Enable optional screenshot support} {
|
|
depends_lib-append path:include/turbojpeg.h:libjpeg-turbo
|
|
configure.args-replace -Djpeg=disabled \
|
|
-Djpeg=enabled
|
|
}
|
|
|
|
variant network conflicts network_ytdlp description {Enable networking support via youtube-dl (supports wide variety of pages)} {
|
|
depends_run-append port:youtube-dl
|
|
}
|
|
|
|
variant network_ytdlp conflicts network description {Enable networking support via yt-dlp instead of youtube-dl (supports wide variety of pages)} {
|
|
depends_run-append port:yt-dlp
|
|
}
|
|
|
|
variant bluray description {Enable Bluray and AACS/BD+ encryption support} {
|
|
depends_lib-append port:libbluray
|
|
depends_run-append port:libaacs \
|
|
port:libbdplus
|
|
configure.args-replace -Dlibbluray=disabled \
|
|
-Dlibbluray=enabled
|
|
notes-append {
|
|
|
|
To play Bluray discs with AACS encryption, decryption key database file "keydb.cfg" needs to be placed at:
|
|
* ~/Library/Preferences/aacs/ (on macOS, or)
|
|
* ~/.config/aacs/ (on other darwin).
|
|
You can easily find this file on the internet.
|
|
}
|
|
}
|
|
|
|
variant dvd description {Enable DVD and DeCSS support} {
|
|
depends_lib-append port:libdvdread \
|
|
port:libdvdnav
|
|
configure.args-replace -Ddvdnav=disabled \
|
|
-Ddvdnav=enabled
|
|
}
|
|
|
|
variant audiocd description {Enable Audio CD support via libcdio-paranoia} {
|
|
depends_lib-append port:libcdio-paranoia
|
|
configure.args-replace -Dcdda=disabled \
|
|
-Dcdda=enabled
|
|
}
|
|
|
|
variant libarchive description {Enable transparent handling of Zip files and other compressed formats} {
|
|
depends_lib-append port:libarchive
|
|
configure.args-replace -Dlibarchive=disabled \
|
|
-Dlibarchive=enabled
|
|
}
|
|
|
|
variant rubberband description {Enable support for the Rubber Band library, adding audio pitch and speed control} {
|
|
depends_lib-append port:rubberband
|
|
configure.args-replace -Drubberband-disabled \
|
|
-Drubberband-enabled
|
|
}
|
|
|
|
variant vapoursynth description {} {
|
|
depends_lib-append port:vapoursynth
|
|
configure.args-replace -Dvapoursynth=disabled \
|
|
-Dvapoursynth=enabled
|
|
}
|
|
|
|
variant pulseaudio description {Enable PulseAudio support} {
|
|
depends_lib-append port:pulseaudio
|
|
configure.args-replace -Dpulse=disabled \
|
|
-Dpulse=enabled
|
|
}
|
|
|
|
variant jack description {Enable Jack Audio Connection Kit support} {
|
|
depends_lib-append port:jack
|
|
configure.args-replace -Djack=disabled \
|
|
-Djack=enabled
|
|
}
|
|
|
|
# TODO: switch that to openal-soft? Leave it as-is?
|
|
variant openal description {Enable OpenAL support} {
|
|
depends_lib-append port:openal
|
|
configure.args-replace -Dopenal=disabled \
|
|
-Dopenal=enabled
|
|
}
|
|
|
|
variant x11 {
|
|
depends_lib-append port:xorg-libXext \
|
|
port:xorg-libXScrnSaver \
|
|
port:xorg-libXinerama \
|
|
port:xorg-libXv \
|
|
port:xorg-libXrandr \
|
|
port:xorg-libXpresent
|
|
|
|
configure.args-replace --Dx11=disabled \
|
|
--Dx11=enabled
|
|
configure.args-replace --Dxv=disabled \
|
|
--Dxv=enabled
|
|
}
|
|
|
|
variant opengl description {Enable OpenGL output support. Both the CoreVideo and X11 (GLX) outputs are supported} {
|
|
platform darwin {
|
|
configure.args-replace -Dgl-cocoa=disabled \
|
|
-Dgl-cocoa=enabled
|
|
}
|
|
|
|
configure.args-replace -Dgl=disabled \
|
|
-Dgl=enabled
|
|
|
|
if {[variant_isset x11]} {
|
|
depends_lib-append port:mesa
|
|
configure.args-replace -Dgl-x11=disabled \
|
|
-Dgl-x11=enabled
|
|
require_active_variants libplacebo opengl
|
|
# FIXME: add EGL? Leave it disabled? Test!
|
|
# As far as testing went, EGL is not available on macOS yet.
|
|
#configure.args-replace -Degl-x11=disabled \
|
|
# -Degl-x11=enabled
|
|
}
|
|
}
|
|
|
|
variant vulkan description {Enable Vulkan output support} {
|
|
depends_build-append \
|
|
port:vulkan-headers
|
|
depends_lib-append port:vulkan-loader
|
|
configure.args-replace \
|
|
-Dvulkan=disabled \
|
|
-Dvulkan=enabled
|
|
require_active_variants libplacebo vulkan
|
|
}
|
|
|
|
variant caca description {Enable animated ASCII art video output} {
|
|
depends_lib-append port:libcaca
|
|
configure.args-replace -Dcaca=disabled \
|
|
-Dcaca=enabled
|
|
}
|
|
|
|
variant osd description {Enable onscreen display and TrueType font support} {
|
|
depends_lib-append port:lua52
|
|
configure.args-replace -Dlua=disabled \
|
|
-Dlua=lua5.2
|
|
}
|
|
|
|
variant debug description {Compile with debugging symbols} {
|
|
configure.args-replace --buildtype=release \
|
|
--buildtype=debug
|
|
configure.args-replace -Dpthread-debug=disabled \
|
|
-Dpthread-debug=enabled
|
|
}
|
|
|
|
variant printable_doc description {Generate printable documents (PDF help)} {
|
|
# py27-pdfrw and py27-Pillow are needed by rst2pdf.
|
|
depends_build-append port:rst2pdf \
|
|
port:py27-pdfrw \
|
|
port:py27-Pillow
|
|
configure.args-replace -Dpdf-build=disabled \
|
|
-Dpdf-build=enabled
|
|
}
|
|
|
|
#variant javascript description {Enable JavaScript support via mujs} {
|
|
# depends_lib-append port:mujs
|
|
# configure.args-replace -Djavascript=disabled \
|
|
# -Djavascript=enabled
|
|
#}
|
|
|
|
variant uchardet description {Enable the uchardet encoding detector} {
|
|
depends_lib-append port:uchardet
|
|
configure.args-replace -Duchardet=disabled \
|
|
-Duchardet=enabled
|
|
}
|
|
|
|
variant libmpv description {Enable the libmpv library} {
|
|
configure.args-replace -Dlibmpv=false \
|
|
-Dlibmpv=true
|
|
}
|
|
|
|
variant bundle description {Enable the optional macOS bundle of mpv} {
|
|
post-build {
|
|
# Avoid Game Mode auto activation on macOS 14
|
|
system -W ${worksrcpath}/TOOLS/osxbundle/mpv.app/Contents/ "/usr/libexec/PlistBuddy -c \"Delete :LSApplicationCategoryType\" Info.plist"
|
|
system -W ${worksrcpath} "${prefix}/bin/python${python_branch} TOOLS/osxbundle.py -s ${build.dir}/mpv"
|
|
}
|
|
|
|
post-destroot {
|
|
xinstall -d -m 0755 ${destroot}${applications_dir}
|
|
copy ${build.dir}/mpv.app ${destroot}${applications_dir}
|
|
}
|
|
}
|