Unverified Commit c95c1a56 authored by Mario Rodas's avatar Mario Rodas Committed by GitHub
Browse files

Merge pull request #304349 from atorres1985-contrib/mpv

mpv: 0.37.0 -> 0.38.0 
parents 16cb1f38 6ee4b2de
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
--- a/osdep/mac/input_helper.swift
+++ b/osdep/mac/input_helper.swift
@@ -18,6 +18,14 @@
 import Cocoa
 import Carbon.HIToolbox
 
+extension NSCondition {
+    fileprivate func withLock<T>(_ body: () throws -> T) rethrows -> T {
+        self.lock()
+        defer { self.unlock() }
+        return try body()
+    }
+}
+
 class InputHelper: NSObject {
     var option: OptionHelper?
     var lock = NSCondition()
--- a/audio/out/ao_avfoundation.m
+++ b/audio/out/ao_avfoundation.m
@@ -312,7 +312,8 @@

+    #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 120000
     p->observer = [[AVObserver alloc] initWithAO:ao];
     NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
     [center addObserver:p->observer selector:@selector(handleRestartNotification:) name:AVSampleBufferAudioRendererOutputConfigurationDidChangeNotification object:p->renderer];
     [center addObserver:p->observer selector:@selector(handleRestartNotification:) name:AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification object:p->renderer];
-
+    #endif
     return CONTROL_OK;
+0 −13
Original line number Diff line number Diff line
diff --git a/TOOLS/osxbundle.py b/TOOLS/osxbundle.py
index 98699e478b..d02ecf610e 100755
--- a/TOOLS/osxbundle.py
+++ b/TOOLS/osxbundle.py
@@ -39,7 +39,7 @@ def apply_plist_template(plist_file, version):
         print(line.rstrip().replace('${VERSION}', version))
 
 def sign_bundle(binary_name):
-    sh('codesign --force --deep -s - ' + bundle_path(binary_name))
+    sh('rcodesign sign ' + bundle_path(binary_name))
 
 def bundle_version():
     if os.path.exists('VERSION'):
+297 −200
Original line number Diff line number Diff line
{ lib
, config
, stdenv
, fetchFromGitHub
, addOpenGLRunpath
, bash
, docutils
, meson
, ninja
, pkg-config
, python3
, ffmpeg
, freefont_ttf
, freetype
, libass
, libpthreadstubs
, nv-codec-headers-11
, lua
, libuchardet
, libiconv
, xcbuild
, rcodesign
{
  lib,
  SDL2,
  addOpenGLRunpath,
  alsa-lib,
  bash,
  buildPackages,
  callPackage,
  config,
  darwin,
  docutils,
  fetchFromGitHub,
  ffmpeg,
  freefont_ttf,
  freetype,
  lcms2,
  libGL,
  libGLU,
  libX11,
  libXScrnSaver,
  libXext,
  libXinerama,
  libXpresent,
  libXrandr,
  libXv,
  libXxf86vm,
  libarchive,
  libass,
  libbluray,
  libbs2b,
  libcaca,
  libcdio,
  libcdio-paranoia,
  libdrm,
  libdvdnav,
  libiconv,
  libjack2,
  libplacebo,
  libpng,
  libpthreadstubs,
  libpulseaudio,
  libsixel,
  libtheora,
  libuchardet,
  libva,
  libvdpau,
  libxkbcommon,
  lua,
  mesa,
  meson,
  mujs,
  ninja,
  nv-codec-headers-11,
  openalSoft,
  pipewire,
  pkg-config,
  python3,
  rubberband,
  shaderc, # instead of spirv-cross
  speex,
  stdenv,
  swift,
  vapoursynth,
  vulkan-headers,
  vulkan-loader,
  wayland,
  wayland-protocols,
  wayland-scanner,
  xcbuild,
  zimg,

, waylandSupport ? stdenv.isLinux
  , wayland
  , wayland-protocols
  , wayland-scanner
  , libxkbcommon

, x11Support ? stdenv.isLinux
  , libGLU, libGL
  , libX11
  , libXext
  , libXxf86vm
  , libXrandr
  , libXpresent

, cddaSupport ? false
  , libcdio
  , libcdio-paranoia

, vulkanSupport ? stdenv.isLinux
  , libplacebo
  , shaderc # instead of spirv-cross
  , vulkan-headers
  , vulkan-loader

, drmSupport ? stdenv.isLinux
  , libdrm
  , mesa

, alsaSupport        ? stdenv.isLinux, alsa-lib
, archiveSupport     ? true,           libarchive
, bluraySupport      ? true,           libbluray
, bs2bSupport        ? true,           libbs2b
, cacaSupport        ? true,           libcaca
, cmsSupport         ? true,           lcms2
, dvdnavSupport      ? stdenv.isLinux, libdvdnav
, dvbinSupport       ? stdenv.isLinux
, jackaudioSupport   ? false,          libjack2
, javascriptSupport  ? true,           mujs
, libpngSupport      ? true,           libpng
, openalSupport      ? true,           openalSoft
, pulseSupport       ? config.pulseaudio or stdenv.isLinux, libpulseaudio
, pipewireSupport    ? stdenv.isLinux, pipewire
, rubberbandSupport  ? true,           rubberband
, screenSaverSupport ? true,           libXScrnSaver
, sdl2Support        ? true,           SDL2
, sixelSupport       ? false,          libsixel
, speexSupport       ? true,           speex
, swiftSupport       ? stdenv.isDarwin, swift
, theoraSupport      ? true,           libtheora
, vaapiSupport       ? x11Support || waylandSupport, libva
, vapoursynthSupport ? false,          vapoursynth
, vdpauSupport       ? true,           libvdpau
, xineramaSupport    ? stdenv.isLinux, libXinerama
, xvSupport          ? stdenv.isLinux, libXv
, zimgSupport        ? true,           zimg
, darwin
  # Boolean
  alsaSupport ? stdenv.isLinux,
  archiveSupport ? true,
  bluraySupport ? true,
  bs2bSupport ? true,
  cacaSupport ? true,
  cddaSupport ? false,
  cmsSupport ? true,
  drmSupport ? stdenv.isLinux,
  dvbinSupport ? stdenv.isLinux,
  dvdnavSupport ? stdenv.isLinux,
  jackaudioSupport ? false,
  javascriptSupport ? true,
  libpngSupport ? true,
  openalSupport ? true,
  pipewireSupport ? stdenv.isLinux,
  pulseSupport ? config.pulseaudio or stdenv.isLinux,
  rubberbandSupport ? true,
  screenSaverSupport ? true,
  sdl2Support ? !stdenv.isDarwin,
  sixelSupport ? false,
  speexSupport ? true,
  swiftSupport ? stdenv.isDarwin,
  theoraSupport ? true,
  vaapiSupport ? x11Support || waylandSupport,
  vapoursynthSupport ? false,
  vdpauSupport ? true,
  vulkanSupport ? stdenv.isLinux,
  waylandSupport ? stdenv.isLinux,
  x11Support ? stdenv.isLinux,
  xineramaSupport ? stdenv.isLinux,
  xvSupport ? stdenv.isLinux,
  zimgSupport ? true,
}:

let
  inherit (darwin.apple_sdk_11_0.frameworks)
    AVFoundation Accelerate Cocoa CoreAudio CoreFoundation CoreMedia
    MediaPlayer VideoToolbox;
    AVFoundation
    Accelerate
    Cocoa
    CoreAudio
    CoreFoundation
    CoreMedia
    MediaPlayer
    VideoToolbox
    ;
  luaEnv = lua.withPackages (ps: with ps; [ luasocket ]);

  overrideSDK = platform: version:
    platform // lib.optionalAttrs (platform ? darwinMinVersion) {
  overrideSDK =
    platform: version:
    platform
    // lib.optionalAttrs (platform ? darwinMinVersion) {
      darwinMinVersion = version;
    };

  stdenv' = if swiftSupport && stdenv.isDarwin && stdenv.isx86_64
    then stdenv.override (old: {
  stdenv' =
    if swiftSupport && stdenv.isDarwin && stdenv.isx86_64 then
      stdenv.override (old: {
        buildPlatform = overrideSDK old.buildPlatform "10.15";
        hostPlatform = overrideSDK old.hostPlatform "10.15";
        targetPlatform = overrideSDK old.targetPlatform "10.15";
      })
    else stdenv;
in stdenv'.mkDerivation (finalAttrs: {
    else
      stdenv;
in
stdenv'.mkDerivation (finalAttrs: {
  pname = "mpv";
  version = "0.37.0";
  version = "0.38.0";

  outputs = [ "out" "dev" "doc" "man" ];
  outputs = [
    "out"
    "dev"
    "doc"
    "man"
  ];

  src = fetchFromGitHub {
    owner = "mpv-player";
    repo = "mpv";
    rev = "v${finalAttrs.version}";
    hash = "sha256-izAz9Iiam7tJAWIQkmn2cKOfoaog8oPKq4sOUtp1nvU=";
    hash = "sha256-dFajnCpGlNqUv33A8eFEn8kjtzIPkcBY5j0gNVlaiIY=";
  };

  patches = [ ./darwin-sigtool-no-deep.patch ];
  patches = [
    # Fix build with Darwin SDK 11
    ./0001-fix-darwin-build.patch
  ];

  postPatch = lib.concatStringsSep "\n" [
    # Don't reference compile time dependencies or create a build outputs cycle
@@ -135,7 +180,8 @@ in stdenv'.mkDerivation (finalAttrs: {
    export SWIFT_LIB_DYNAMIC="${lib.getLib swift.swift}/lib/swift/macosx"
  '';

  mesonFlags = [
  mesonFlags =
    [
      (lib.mesonOption "default_library" "shared")
      (lib.mesonBool "libmpv" true)
      (lib.mesonEnable "libarchive" archiveSupport)
@@ -148,25 +194,31 @@ in stdenv'.mkDerivation (finalAttrs: {
      # Disable whilst Swift isn't supported
      (lib.mesonEnable "swift-build" swiftSupport)
      (lib.mesonEnable "macos-cocoa-cb" swiftSupport)
  ] ++ lib.optionals stdenv.isDarwin [
    ]
    ++ lib.optionals stdenv.isDarwin [
      # Toggle explicitly because it fails on darwin
      (lib.mesonEnable "videotoolbox-pl" vulkanSupport)
    ];

  mesonAutoFeatures = "auto";

  nativeBuildInputs = [
  nativeBuildInputs =
    [
      addOpenGLRunpath
      docutils # for rst2man
      meson
      ninja
      pkg-config
    ]
  ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun rcodesign ]
    ++ lib.optionals stdenv.isDarwin [
      buildPackages.darwin.sigtool
      xcbuild.xcrun
    ]
    ++ lib.optionals swiftSupport [ swift ]
    ++ lib.optionals waylandSupport [ wayland-scanner ];

  buildInputs = [
  buildInputs =
    [
      bash
      ffmpeg
      freetype
@@ -176,15 +228,25 @@ in stdenv'.mkDerivation (finalAttrs: {
      libuchardet
      luaEnv
      python3
  ] ++ lib.optionals alsaSupport        [ alsa-lib ]
    ]
    ++ lib.optionals alsaSupport [ alsa-lib ]
    ++ lib.optionals archiveSupport [ libarchive ]
    ++ lib.optionals bluraySupport [ libbluray ]
    ++ lib.optionals bs2bSupport [ libbs2b ]
    ++ lib.optionals cacaSupport [ libcaca ]
    ++ lib.optionals cddaSupport        [ libcdio libcdio-paranoia ]
    ++ lib.optionals cddaSupport [
      libcdio
      libcdio-paranoia
    ]
    ++ lib.optionals cmsSupport [ lcms2 ]
    ++ lib.optionals drmSupport         [ libdrm mesa ]
    ++ lib.optionals dvdnavSupport      [ libdvdnav libdvdnav.libdvdread ]
    ++ lib.optionals drmSupport [
      libdrm
      mesa
    ]
    ++ lib.optionals dvdnavSupport [
      libdvdnav
      libdvdnav.libdvdread
    ]
    ++ lib.optionals jackaudioSupport [ libjack2 ]
    ++ lib.optionals javascriptSupport [ mujs ]
    ++ lib.optionals libpngSupport [ libpng ]
@@ -200,16 +262,42 @@ in stdenv'.mkDerivation (finalAttrs: {
    ++ lib.optionals vaapiSupport [ libva ]
    ++ lib.optionals vapoursynthSupport [ vapoursynth ]
    ++ lib.optionals vdpauSupport [ libvdpau ]
    ++ lib.optionals vulkanSupport      [ shaderc vulkan-headers vulkan-loader ]
    ++ lib.optionals waylandSupport     [ wayland wayland-protocols libxkbcommon ]
    ++ lib.optionals x11Support         [ libX11 libXext libGLU libGL libXxf86vm libXrandr libXpresent ]
    ++ lib.optionals vulkanSupport [
      shaderc
      vulkan-headers
      vulkan-loader
    ]
    ++ lib.optionals waylandSupport [
      wayland
      wayland-protocols
      libxkbcommon
    ]
    ++ lib.optionals x11Support [
      libX11
      libXext
      libGLU
      libGL
      libXxf86vm
      libXrandr
      libXpresent
    ]
    ++ lib.optionals xineramaSupport [ libXinerama ]
    ++ lib.optionals xvSupport [ libXv ]
    ++ lib.optionals zimgSupport [ zimg ]
    ++ lib.optionals stdenv.isLinux [ nv-codec-headers-11 ]
    ++ lib.optionals stdenv.isDarwin [ libiconv ]
    ++ lib.optionals stdenv.isDarwin    [ Accelerate CoreFoundation Cocoa CoreAudio MediaPlayer VideoToolbox ]
    ++ lib.optionals (stdenv.isDarwin && swiftSupport) [ AVFoundation CoreMedia ];
    ++ lib.optionals stdenv.isDarwin [
      Accelerate
      CoreFoundation
      Cocoa
      CoreAudio
      MediaPlayer
      VideoToolbox
    ]
    ++ lib.optionals (stdenv.isDarwin && swiftSupport) [
      AVFoundation
      CoreMedia
    ];

  postBuild = lib.optionalString stdenv.isDarwin ''
    pushd .. # Must be run from the source dir because it uses relative paths
@@ -217,7 +305,8 @@ in stdenv'.mkDerivation (finalAttrs: {
    popd
  '';

  postInstall = ''
  postInstall =
    ''
      # Use a standard font
      mkdir -p $out/share/mpv
      ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf
@@ -234,7 +323,8 @@ in stdenv'.mkDerivation (finalAttrs: {
        mpv.desktop > umpv.desktop
      printf "NoDisplay=true\n" >> umpv.desktop
      popd
  '' + lib.optionalString stdenv.isDarwin ''
    ''
    + lib.optionalString stdenv.isDarwin ''
      mkdir -p $out/Applications
      cp -r mpv.app $out/Applications
    '';
@@ -258,6 +348,9 @@ in stdenv'.mkDerivation (finalAttrs: {
      vapoursynthSupport
      vapoursynth
      ;

    wrapper = callPackage ./wrapper.nix { };
    scripts = callPackage ./scripts { };
  };

  meta = {
@@ -271,7 +364,11 @@ in stdenv'.mkDerivation (finalAttrs: {
    license = lib.licenses.gpl2Plus;
    mainProgram = "mpv";
    maintainers = with lib.maintainers; [
      AndersonTorres fpletz globin ma27 tadeokondrak
      AndersonTorres
      fpletz
      globin
      ma27
      tadeokondrak
    ];
    platforms = lib.platforms.unix;
  };
+10 −8
Original line number Diff line number Diff line
@@ -7,21 +7,23 @@
, symlinkJoin
, writeTextDir
, yt-dlp
# the unwrapped mpv derivation
, mpv
}:

# the unwrapped mpv derivation - 1st argument to `wrapMpv`
mpv:

let
  # arguments to the function (exposed as `wrapMpv` in all-packages.nix)
  # arguments to the function (exposed as `mpv-unwrapped.wrapper` in top-level)
  wrapper = {
    mpv,
    extraMakeWrapperArgs ? [],
    youtubeSupport ? true,
    # a set of derivations (probably from `mpvScripts`) where each is
    # expected to have a `scriptName` passthru attribute that points to the
    # name of the script that would reside in the script's derivation's
    # a set of derivations (probably from `mpvScripts`) where each is expected
    # to have a `scriptName` passthru attribute that points to the name of the
    # script that would reside in the script's derivation's
    # `$out/share/mpv/scripts/`.
    # A script can optionally also provide an `extraWrapperArgs` passthru attribute.
    #
    # A script can optionally also provide `passthru.extraWrapperArgs`
    # attribute.
    scripts ? [],
    extraUmpvWrapperArgs ? []
  }:
+4 −12
Original line number Diff line number Diff line
{ lib
, mpv-unwrapped
, wrapMpv
, ocl-icd
, ...
}:
let
  libraries = [
    ocl-icd
  ];
in
wrapMpv
  (mpv-unwrapped.override {
    vapoursynthSupport = true;
  })
{

mpv-unwrapped.wrapper {
  mpv = mpv-unwrapped.override { vapoursynthSupport = true; };
  extraMakeWrapperArgs = [
    # Add paths to required libraries
    "--prefix"
    "LD_LIBRARY_PATH"
    ":"
    "/run/opengl-driver/lib:${lib.makeLibraryPath libraries}"
    "/run/opengl-driver/lib:${lib.makeLibraryPath [ ocl-icd ]}"
  ];
}
Loading