Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| # -*- 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 waf 1.0 | |
| PortGroup legacysupport 1.0 | |
| # Please revbump mpv whenever ffmpeg{,-devel} is updated! | |
| github.setup mpv-player mpv 0.29.1 v | |
| revision 4 | |
| categories multimedia | |
| license GPL-2+ | |
| maintainers {ionic @Ionic} | |
| platforms darwin | |
| 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 http://www.mpv.io/ | |
| set waf_version 2.0.9 | |
| set waf_distfile waf-${waf_version} | |
| set mpv_distfile ${distfiles} | |
| master_sites-append https://waf.io/:waf | |
| distfiles-append ${waf_distfile}:waf | |
| extract.only-delete ${waf_distfile} | |
| checksums ${mpv_distfile} \ | |
| rmd160 10edd02cf12c4668c57317caf3042df30ae1128c \ | |
| sha256 c7076df8c46f2696121d0b96cc5edfc472cbccc3b6a70d9b5c00a72b6a41c820 \ | |
| size 3059829 \ | |
| ${waf_distfile} \ | |
| rmd160 bbb01fa7c1d552c01e5a6531ed27aef710d668e7 \ | |
| sha256 2a8e0816f023995e557f79ea8940d322bec18f286917c8f9a6fa2dc3875dfa48 \ | |
| size 103104 | |
| installs_libs no | |
| depends_build port:pkgconfig | |
| depends_lib path:lib/libavcodec.dylib:ffmpeg \ | |
| path:bin/perl:perl5 \ | |
| port:libiconv \ | |
| port:zlib \ | |
| port:libass \ | |
| port:libbluray \ | |
| port:lcms2 | |
| universal_variant no | |
| default_variants +network +osd +opengl +dvd +audiocd +libarchive | |
| if {${os.platform} eq "darwin" && ${os.major} > 10} { | |
| # current macOS bundle errors on < 10.7 due to unhandled -psn_* argument | |
| default_variants-append +bundle | |
| } | |
| # at this moment in time (20190127) rubberband does not build on PPC | |
| platform darwin i386 { | |
| default_variants-append +rubberband | |
| } | |
| # Current waf doesn't support --nocache anymore. Set by PortGroup. | |
| configure.args-delete --nocache | |
| # I'd *really* love to see what's going on in waf, but even the continue-on-failure option | |
| # makes waf bail out on the first optional component that was not found (which will always | |
| # happen, especially since tests for Win32 are bound to fail on other platforms...) | |
| #configure.args-append -vvv -kk | |
| # Default configuration options. Mostly macOS specific. | |
| # We cannot use --enable-cplayer here. Only --disable-cplayer | |
| # is recognized. Boo! | |
| configure.args-append --enable-manpage-build \ | |
| --enable-libass \ | |
| --enable-coreaudio \ | |
| --enable-cocoa \ | |
| --enable-cplugins \ | |
| --enable-zlib \ | |
| --enable-swift \ | |
| --disable-html-build \ | |
| --disable-videotoolbox-gl \ | |
| --disable-cuda-hwaccel \ | |
| --disable-opensles \ | |
| --disable-egl-drm \ | |
| --disable-egl-angle-lib \ | |
| --disable-egl-angle-win32 \ | |
| --disable-audiounit \ | |
| --disable-ios-gl \ | |
| --disable-mali-fbdev \ | |
| --disable-direct3d \ | |
| --disable-android \ | |
| --disable-rpi \ | |
| --disable-dvbin | |
| # 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 --disable-pdf-build \ | |
| --disable-test \ | |
| --disable-clang-database \ | |
| --disable-debug-build \ | |
| --disable-libsmbclient \ | |
| --disable-libass-osd \ | |
| --disable-dvdread \ | |
| --disable-dvdnav \ | |
| --disable-cdda \ | |
| --disable-vapoursynth \ | |
| --disable-vapoursynth-lazy \ | |
| --disable-libarchive \ | |
| --disable-rubberband \ | |
| --disable-pulse \ | |
| --disable-jack \ | |
| --disable-openal \ | |
| --disable-gl-cocoa \ | |
| --disable-x11 \ | |
| --disable-xv \ | |
| --disable-gl-x11 \ | |
| --disable-egl-x11 \ | |
| --disable-caca \ | |
| --disable-jpeg \ | |
| --disable-tv \ | |
| --disable-lua \ | |
| --disable-apple-remote \ | |
| --disable-gl \ | |
| --disable-zsh-comp \ | |
| --disable-javascript \ | |
| --disable-uchardet | |
| # 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 | |
| build.args-append -v | |
| # 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 { | |
| if {${os.major} > 10} { | |
| # Force recent enough Xcode. | |
| # We have to compile with the compiler provided by Xcode/CLT | |
| # due to only it shipping libarclite on 10.7 and knowing where | |
| # it is. | |
| # Could "emulate" the same behavior by using MacPorts' clang | |
| # and appending -L/usr/lib/arc/ to CFLAGS/CXXFLAGS on 10.7, | |
| # but I don't particularly like that idea (yet.) | |
| # 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} | |
| # Force recent enough SDK. | |
| if {[vercmp ${configure.sdk_version} 10.8] < 0} { | |
| configure.sdk_version 10.8 | |
| } | |
| # Force clang compiler as installed by Xcode's CLT's... hopefully. | |
| compiler.blacklist-append *gcc* cc macports-* | |
| configure.args-replace --disable-apple-remote \ | |
| --enable-apple-remote | |
| } | |
| if {${os.major} <= 10 || ${configure.build_arch} ne "x86_64"} { | |
| # Disable Cocoa output. | |
| # Users on old systems will need to embrace X11. | |
| configure.args-replace --enable-cocoa \ | |
| --disable-cocoa | |
| default_variants-append +x11 | |
| } | |
| } | |
| 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}/config (only for your current user) | |
| and adjust it to your needs. | |
| If you previously had your configuration file in | |
| * ~/.${name}/config | |
| please migrate it to | |
| * ~/.config/${name}/config | |
| which is the location preferred by upstream. | |
| }] | |
| # https://github.com/mpv-player/mpv/pull/6214 | |
| patchfiles-append patch-fix-swift-detection.diff | |
| # swift build tools test fails on 10.10 now | |
| if {${os.major} < 15} { | |
| configure.args-replace --enable-swift \ | |
| --disable-swift | |
| } | |
| # VideotoolBox, a new hardware acceleration framework, is supported on 10.8+ and "here to stay". | |
| # It provides support for H264, H263, MPEG1, MPEG2 and MPEG4. | |
| if {${os.major} > 11} { | |
| configure.args-delete --disable-videotoolbox-gl | |
| configure.args-append --enable-videotoolbox-gl | |
| } | |
| if {${os.major} > 11} { | |
| 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. | |
| } | |
| } else { | |
| notes-append { | |
| Sadly, your system is incapable of utilizing mpv's hardware decoding features. | |
| The example config file will not include a hardware decoding option.\ | |
| Consult ``man mpv'' for further information. | |
| } | |
| } | |
| # Shared build fixes for 10.6 and 10.7. | |
| if {${os.major} < 12} { | |
| patchfiles-append patch-misc-import-CoreVideo.diff | |
| patchfiles-append patch-waftools-detection-compiler-py-no-tautological.diff | |
| } | |
| # fix typo in restricted block. This patch can disappear after next update as this | |
| # fix has been merged upstream 20190126 | |
| patchfiles-append patch-osdep-macosx_compat-h-typo.diff | |
| # Make mpv work as good as possible on 10.6 and below. No Cocoa support, instead concentrate | |
| # on getting the OpenGL output to work via X11. | |
| # Also fix some other minor compile issues only manifesting on 10.6 and below along the way. | |
| if {${os.major} < 11} { | |
| patchfiles-append patch-audio_out_ao_coreaudio_utils.c-add-missing-header-for-getpid.diff | |
| patchfiles-append patch-waftools_detections_compiler.py-support-older-GCC.diff | |
| notes-append { | |
| On systems older than Lion (10.7) or on architectures other than x86_64, Cocoa output support is not available. | |
| The X11 backend should have been enabled automatically. | |
| } | |
| } | |
| # coreaudio does not build on < 10.6 so use pulseaudio instead (tested and works). | |
| if {${os.major} < 10} { | |
| configure.args-delete --enable-coreaudio | |
| configure.args-append --disable-coreaudio | |
| default_variants-append +pulseaudio | |
| notes-append { | |
| On systems older than SnowLeopard (10.6), coreaudio output support is not available. | |
| The pulseaudio backend should have been enabled automatically. | |
| } | |
| } | |
| post-extract { | |
| xinstall -m 0644 -W "${filespath}" config-maintainer "${worksrcpath}/TOOLS/" | |
| } | |
| pre-configure { | |
| 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} ne "x86_64"} { | |
| reinplace -W "${worksrcpath}/TOOLS" "s/@@BACKEND@@/x11/" config-maintainer | |
| } else { | |
| reinplace -W "${worksrcpath}/TOOLS" "s/@@BACKEND@@/cocoa/" config-maintainer | |
| } | |
| } | |
| } | |
| # Shameless copy from ipe-tools. | |
| set python.versions {27 37} | |
| dict set python.legacy_versions 36 37 | |
| # After Python 3.8 is released, and mpv can be built with it, | |
| # replace with the above lines with the following: | |
| #set python.versions {27 38} | |
| #dict set python.legacy_versions 37 38 | |
| set python.default_version 27 | |
| set python.version "" | |
| # Create python variants. | |
| foreach ver ${python.versions} { | |
| set variant_line {variant python${ver} description } | |
| append variant_line " {Use python${ver} to 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 } | |
| append variant_line " {Legacy variant for python${legacy_ver} mapping to python${replace_ver}}" | |
| 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} | |
| } | |
| } | |
| 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." | |
| } | |
| post-patch { | |
| set python_ver_dot [join [split ${python.version} {}] "."] | |
| reinplace -W "${worksrcpath}" "s|'rst2man'|'rst2man-${python_ver_dot}'|" wscript | |
| } | |
| post-extract { | |
| xinstall -m 0644 -W "${distpath}" "${waf_distfile}" "${worksrcpath}/waf" | |
| } | |
| 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 "disable" flags with | |
| # "enable" flags in order to make the waf build system error out in case | |
| # a feature cannot be used/found. Problems like that indicate a missing | |
| # runtime dependency. | |
| variant bundle description {Enable the optional macOS bundle of mpv} { | |
| post-build { | |
| system -W "${worksrcpath}" "${waf.python} TOOLS/osxbundle.py -s build/mpv" | |
| } | |
| post-destroot { | |
| xinstall -d -m 0755 ${destroot}${applications_dir} | |
| copy ${worksrcpath}/build/mpv.app ${destroot}${applications_dir} | |
| } | |
| } | |
| variant screenshot description {Enable optional screenshot support} { | |
| depends_lib-append path:lib/libjpeg.dylib:jpeg | |
| configure.args-replace --disable-jpeg \ | |
| --enable-jpeg | |
| } | |
| variant network description {Enable networking support via youtube-dl (supports wide variety of pages)} { | |
| depends_run-append port:youtube-dl | |
| } | |
| variant dvd description {Enable DVD and DeCSS support} { | |
| depends_lib-append port:libdvdread \ | |
| port:libdvdnav | |
| configure.args-replace --disable-dvdread \ | |
| --enable-dvdread | |
| configure.args-replace --disable-dvdnav \ | |
| --enable-dvdnav | |
| } | |
| variant audiocd description {Enable Audio CD support via libcdio-paranoia} { | |
| depends_lib-append port:libcdio-paranoia | |
| configure.args-replace --disable-cdda \ | |
| --enable-cdda | |
| } | |
| variant libarchive description {Enable transparent handling of Zip files and other compressed formats} { | |
| depends_lib-append port:libarchive | |
| configure.args-replace --disable-libarchive \ | |
| --enable-libarchive | |
| } | |
| variant rubberband description {Enable support for the Rubber Band library, adding audio pitch and speed control} { | |
| depends_lib-append port:rubberband | |
| configure.args-replace --disable-rubberband \ | |
| --enable-rubberband | |
| } | |
| variant pulseaudio description {Enable PulseAudio support} { | |
| depends_lib-append port:pulseaudio | |
| configure.args-replace --disable-pulse \ | |
| --enable-pulse | |
| } | |
| variant jack description {Enable Jack Audio Connection Kit support} { | |
| depends_lib-append port:jack | |
| configure.args-replace --disable-jack \ | |
| --enable-jack | |
| } | |
| # TODO: switch that to openal-soft? Leave it as-is? | |
| variant openal description {Enable OpenAL support} { | |
| depends_lib-append port:openal | |
| configure.args-replace --disable-openal \ | |
| --enable-openal | |
| } | |
| variant x11 { | |
| depends_lib-append port:xorg-libXext \ | |
| port:xorg-libXScrnSaver \ | |
| port:xorg-libXinerama \ | |
| port:xorg-libXv \ | |
| port:xorg-libXrandr | |
| configure.args-delete --disable-x11 \ | |
| --disable-xv | |
| configure.args-append --enable-x11 \ | |
| --enable-xv | |
| } | |
| variant opengl description {Enable OpenGL output support. Both the CoreVideo and X11 (GLX) outputs are supported} { | |
| if {${os.platform} eq "darwin" && ${os.major} > 10} { | |
| configure.args-replace --disable-gl-cocoa \ | |
| --enable-gl-cocoa | |
| } | |
| configure.args-replace --disable-gl \ | |
| --enable-gl | |
| if {[variant_isset x11]} { | |
| depends_lib-append port:mesa | |
| configure.args-replace --disable-gl-x11 \ | |
| --enable-gl-x11 | |
| # FIXME: add EGL? Leave it disabled? Test! | |
| # As far as testing went, EGL is not available on macOS yet. | |
| #configure.args-replace --disable-egl-x11 \ | |
| # --enable-egl-x11 | |
| } | |
| } | |
| variant caca description {Enable animated ASCII art video output} { | |
| depends_lib-append port:libcaca | |
| configure.args-replace --disable-caca \ | |
| --enable-caca | |
| } | |
| variant osd description {Enable onscreen display and TrueType font support} { | |
| depends_lib-append port:lua52 | |
| configure.args-delete --disable-lua \ | |
| --disable-libass-osd | |
| configure.args-append --enable-lua \ | |
| --lua=52fbsd \ | |
| --enable-libass-osd | |
| } | |
| variant smb description {Enable Samba support} { | |
| depends_lib-append path:lib/pkgconfig/smbclient.pc:samba3 | |
| configure.args-replace --disable-libsmbclient \ | |
| --enable-libsmbclient | |
| } | |
| variant debug description {Compile with debugging symbols} { | |
| configure.args-replace --disable-debug-build \ | |
| --enable-debug-build | |
| } | |
| 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 --disable-pdf-build \ | |
| --enable-pdf-build | |
| } | |
| variant zsh description {Enable/install zsh completion support} { | |
| depends_lib-append path:${prefix}/bin/zsh:zsh | |
| configure.args-replace --disable-zsh-comp \ | |
| --enable-zsh-comp | |
| } | |
| #variant javascript description {Enable JavaScript support via mujs} { | |
| # depends_lib-append port:mujs | |
| # configure.args-replace --disable-javascript \ | |
| # --enable-javascript | |
| #} | |
| variant uchardet description {Enable the uchardet encoding detector} { | |
| depends_lib-append port:uchardet | |
| configure.args-replace --disable-uchardet \ | |
| --enable-uchardet | |
| } |