Commit 8d53797b authored by Rasheeq Azad's avatar Rasheeq Azad
Browse files

makemkv: use fixpoint argument of mkDerivation

This makes bumping the version with overrideAttrs easier. Also fix
improper quoting in scripts.
parent adb5147f
Loading
Loading
Loading
Loading
+108 −115
Original line number Diff line number Diff line
@@ -16,18 +16,19 @@
  withJava ? true,
  jre_headless,
}:

stdenv.mkDerivation (
  finalAttrs:
  let
  version = "1.18.2";
    inherit (finalAttrs) version;
    # Using two URLs as the first one will break as soon as a new version is released
  src_bin = fetchurl {
    srcs.bin = fetchurl {
      urls = [
        "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz"
        "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz"
      ];
      hash = "sha256-v8THzrwPAEl2cf/Vbmo08HcKnmr37/LwEn76FD8oY24=";
    };
  src_oss = fetchurl {
    srcs.oss = fetchurl {
      urls = [
        "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz"
        "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz"
@@ -35,34 +36,26 @@ let
      hash = "sha256-uUl/VVXCV/XTx/GLarA8dM/z6kQ36ANJ1hjRFb9fpEU=";
    };
  in
stdenv.mkDerivation {
  {
    pname = "makemkv";
  inherit version;

  srcs = [
    src_bin
    src_oss
  ];
    version = "1.18.2";

    srcs = lib.attrValues finalAttrs.passthru.srcs;
    sourceRoot = "makemkv-oss-${version}";

    patches = [ ./r13y.patch ];

    enableParallelBuilding = true;

    nativeBuildInputs = [
      autoPatchelfHook
      pkg-config
      qt5.wrapQtAppsHook
    ];

    buildInputs = [
      ffmpeg
      openssl
      qt5.qtbase
      zlib
    ];

    runtimeDependencies = [ (lib.getLib curl) ];

    qtWrapperArgs =
@@ -74,23 +67,22 @@ stdenv.mkDerivation {
    installPhase = ''
      runHook preInstall

    install -Dm555 -t $out/bin                              out/makemkv out/mmccextr out/mmgplsrv ../makemkv-bin-${version}/bin/amd64/makemkvcon
    install -D     -t $out/lib                              out/lib{driveio,makemkv,mmbd}.so.*
    install -D     -t $out/share/MakeMKV                    ../makemkv-bin-${version}/src/share/*
    install -Dm444 -t $out/share/applications               ../makemkv-oss-${version}/makemkvgui/share/makemkv.desktop
    install -Dm444 -t $out/share/icons/hicolor/16x16/apps   ../makemkv-oss-${version}/makemkvgui/share/icons/16x16/*
    install -Dm444 -t $out/share/icons/hicolor/32x32/apps   ../makemkv-oss-${version}/makemkvgui/share/icons/32x32/*
    install -Dm444 -t $out/share/icons/hicolor/64x64/apps   ../makemkv-oss-${version}/makemkvgui/share/icons/64x64/*
    install -Dm444 -t $out/share/icons/hicolor/128x128/apps ../makemkv-oss-${version}/makemkvgui/share/icons/128x128/*
    install -Dm444 -t $out/share/icons/hicolor/256x256/apps ../makemkv-oss-${version}/makemkvgui/share/icons/256x256/*
      install -Dm555 -t "$out"/bin                              out/{makemkv,mmccextr,mmgplsrv} \
                                                                ../makemkv-bin-"$version"/bin/amd64/makemkvcon
      install -D     -t "$out"/lib                              out/lib{driveio,makemkv,mmbd}.so.*
      install -D     -t "$out"/share/MakeMKV                    ../makemkv-bin-"$version"/src/share/*
      install -Dm444 -t "$out"/share/applications               ../makemkv-oss-"$version"/makemkvgui/share/makemkv.desktop
      install -Dm444 -t "$out"/share/icons/hicolor/16x16/apps   ../makemkv-oss-"$version"/makemkvgui/share/icons/16x16/*
      install -Dm444 -t "$out"/share/icons/hicolor/32x32/apps   ../makemkv-oss-"$version"/makemkvgui/share/icons/32x32/*
      install -Dm444 -t "$out"/share/icons/hicolor/64x64/apps   ../makemkv-oss-"$version"/makemkvgui/share/icons/64x64/*
      install -Dm444 -t "$out"/share/icons/hicolor/128x128/apps ../makemkv-oss-"$version"/makemkvgui/share/icons/128x128/*
      install -Dm444 -t "$out"/share/icons/hicolor/256x256/apps ../makemkv-oss-"$version"/makemkvgui/share/icons/256x256/*

      runHook postInstall
    '';

    passthru = {
    srcs = {
      inherit src_bin src_oss;
    };
      inherit srcs;
      updateScript = lib.getExe (writeShellApplication {
        name = "update-makemkv";
        runtimeInputs = [
@@ -98,20 +90,20 @@ stdenv.mkDerivation {
          curl
          rubyPackages.nokogiri
        ];
        runtimeEnv.oldVersion = version;
        text = ''
          get_version() {
            # shellcheck disable=SC2016
            curl --fail --silent 'https://forum.makemkv.com/forum/viewtopic.php?f=3&t=224' \
              | nokogiri -e 'puts $_.css("head title").first.text.match(/\bMakeMKV (\d+\.\d+\.\d+) /)[1]'
          }
        oldVersion=${lib.escapeShellArg version}
          newVersion=$(get_version)
        if [[ $oldVersion == "$newVersion" ]]; then
          if [ "$oldVersion" == "$newVersion" ]; then
            echo "$0: New version same as old version, nothing to do." >&2
            exit
          fi
        update-source-version makemkv "$newVersion" --source-key=passthru.srcs.src_bin
        update-source-version makemkv "$newVersion" --source-key=passthru.srcs.src_oss --ignore-same-version
          update-source-version makemkv "$newVersion" --source-key=passthru.srcs.bin
          update-source-version makemkv "$newVersion" --source-key=passthru.srcs.oss --ignore-same-version
        '';
      });
    };
@@ -137,3 +129,4 @@ stdenv.mkDerivation {
      maintainers = with maintainers; [ jchw ];
    };
  }
)