Unverified Commit e09d079f authored by Arne Keller's avatar Arne Keller Committed by GitHub
Browse files

pianoteq: refactor, bump versions (#351222)

parents 1956dc97 c37011b6
Loading
Loading
Loading
Loading
+66 −73
Original line number Diff line number Diff line
{ lib
, stdenv
, curl
, jq
, htmlq
, xorg
, alsa-lib
, freetype
, p7zip
, autoPatchelfHook
, writeShellScript
, zlib
, libjack2
, makeWrapper
, copyDesktopItems
, makeDesktopItem
, curl
, freetype
, htmlq
, jq
, libglvnd
, librsvg
, makeDesktopItem
, makeWrapper
, p7zip
, writeShellScript
}:
let
  versionForFile = v: builtins.replaceStrings [ "." ] [ "" ] v;

  archdirs =
    if stdenv.hostPlatform.isx86_64 then ["x86-64bit" "amd64"]
    else if stdenv.hostPlatform.isAarch64 then ["arm-64bit" "arm"]
    else throw "unsupported platform";

  mkPianoteq =
    { name
    , mainProgram
    , startupWMClass
    , src
    , version
    , archdir ? if (stdenv.hostPlatform.system == "aarch64-linux") then "arm-64bit" else "x86-64bit"
    , ...
    }:
    stdenv.mkDerivation rec {
@@ -45,11 +47,10 @@ let
      ];

      buildInputs = [
        (lib.getLib stdenv.cc.cc)
        xorg.libX11 # libX11.so.6
        xorg.libXext # libXext.so.6
        (lib.getLib stdenv.cc.cc) # libgcc_s.so.1, libstdc++.so.6
        alsa-lib # libasound.so.2
        freetype # libfreetype.so.6
        libglvnd # libGL.so.1
      ];

      desktopItems = [
@@ -68,20 +69,7 @@ let
      installPhase = ''
        runHook preInstall
        mkdir -p $out/bin
        mv -t $out/bin Pianoteq*/${archdir}/*
        for f in $out/bin/Pianoteq*; do
          if [ -x "$f" ] && [ -f "$f" ]; then
            wrapProgram "$f" --prefix LD_LIBRARY_PATH : ${
              lib.makeLibraryPath (buildInputs ++ [
                xorg.libXcursor
                xorg.libXinerama
                xorg.libXrandr
                libjack2
                zlib
              ])
            }
          fi
        done
        mv -t $out/bin ${builtins.concatStringsSep " " (builtins.map (dir: "Pianoteq*/${dir}/*") archdirs)}
        install -Dm644 ${./pianoteq.svg} $out/share/icons/hicolor/scalable/apps/pianoteq.svg
        for size in 16 22 32 48 64 128 256; do
          dir=$out/share/icons/hicolor/"$size"x"$size"/apps
@@ -219,59 +207,64 @@ let
      '';
    };

in
{
  # TODO currently can't install more than one because `lame` clashes
  stage-trial = mkPianoteq rec {
    name = "stage-trial";
    mainProgram = "Pianoteq 8 STAGE";
    startupWMClass = "Pianoteq STAGE Trial";
    version = "8.2.0";
    src = fetchPianoteqTrial {
      name = "pianoteq_stage_linux_trial_v${versionForFile version}.7z";
      hash = "sha256-66xbcqNrnVJ+C9FQ8Bg8A7nj/bFrjt6jKheusrXVWvI=";
    };
  };
  standard-trial = mkPianoteq rec {
    name = "standard-trial";
    mainProgram = "Pianoteq 8";
    startupWMClass = "Pianoteq Trial";
    version = "8.2.0";
    src = fetchPianoteqTrial {
      name = "pianoteq_linux_trial_v${versionForFile version}.7z";
      hash = "sha256-IFFQMn8EFo5X8sUZV2/vtQOA83NHEFrUsU++CvYbN1c=";
  version6 = "6.7.3";
  version7 = "7.5.4";
  version8 = "8.4.0";

  mkStandard = version: hash: mkPianoteq {
    name = "standard";
    mainProgram = "Pianoteq ${lib.versions.major version}";
    startupWMClass = "Pianoteq";
    inherit version;
    src = fetchPianoteqWithLogin {
      name = "pianoteq_linux_v${versionForFile version}.7z";
      inherit hash;
    };
  };
  stage-6 = mkPianoteq rec {
    name = "stage-6";
    mainProgram = "Pianoteq 6 STAGE";
  mkStage = version: hash: mkPianoteq {
    name = "stage";
    mainProgram = "Pianoteq ${lib.versions.major version} STAGE";
    startupWMClass = "Pianoteq STAGE";
    version = "6.7.3";
    archdir = if (stdenv.hostPlatform.system == "aarch64-linux") then throw "Pianoteq stage-6 is not supported on aarch64-linux" else "amd64";
    inherit version;
    src = fetchPianoteqWithLogin {
      name = "pianoteq_stage_linux_v${versionForFile version}.7z";
      hash = "0jy0hkdynhwv0zhrqkby0hdphgmcc09wxmy74rhg9afm1pzl91jy";
      inherit hash;
    };
  };
  stage-7 = mkPianoteq rec {
    name = "stage-7";
    mainProgram = "Pianoteq 7 STAGE";
    startupWMClass = "Pianoteq STAGE";
    version = "7.3.0";
    src = fetchPianoteqWithLogin {
      name = "pianoteq_stage_linux_v${versionForFile version}.7z";
      hash = "05w7sv9v38r6ljz9xai816w5z2qqwx88hcfjm241fvgbs54125hx";
  mkStandardTrial = version: hash: mkPianoteq {
    name = "standard-trial";
    mainProgram = "Pianoteq ${lib.versions.major version}";
    startupWMClass = "Pianoteq Trial";
    inherit version;
    src = fetchPianoteqTrial {
      name = "pianoteq_linux_trial_v${versionForFile version}.7z";
      inherit hash;
    };
  };
  standard-8 = mkPianoteq rec {
    name = "standard-8";
    mainProgram = "Pianoteq 8";
    startupWMClass = "Pianoteq";
    version = "8.2.0";
    src = fetchPianoteqWithLogin {
      name = "pianoteq_linux_v${versionForFile version}.7z";
      hash = "sha256-ME0urUc1jwUKpg+5BdawYo9WhvMsrztYTVOrJTVxtkY=";
  mkStageTrial = version: hash: mkPianoteq {
    name = "stage-trial";
    mainProgram = "Pianoteq ${lib.versions.major version} STAGE";
    startupWMClass = "Pianoteq STAGE Trial";
    inherit version;
    src = fetchPianoteqTrial {
      name = "pianoteq_stage_linux_trial_v${versionForFile version}.7z";
      inherit hash;
    };
  };
  # TODO other paid binaries, I don't own that so I don't know their hash.
in
{
  standard_8 = mkStandard version8 "sha256-ZDGB/SOOz+sWz7P+sNzyaipEH452n8zq5LleO3ztSXc=";
  stage_8 = mkStage version8 "";
  standard-trial_8 = mkStandardTrial version8 "sha256-K3LbAWxciXt9hVAyRayxSoE/IYJ38Fd03+j0s7ZsMuw=";
  stage-trial_8 = mkStageTrial version8 "sha256-k0p7SnkEq90bqIlT7PTYAQuhKEDVi+srHwYrpMUtIbM=";

  standard_7 = mkStandard version7 "sha256-TA9CiuT21fQedlMUGz7bNNxYun5ArmRjvIxjOGqXDCs=";
  stage_7 = mkStage version7 "";
  standard-trial_7 = mkStandardTrial version7 "sha256-3a3+SKTEhvDtqK5Kg4E6KiLvn5+j6JN6ntIb72u2bdQ=";
  stage-trial_7 = mkStageTrial version7 "sha256-ybtq+hjnaQxpLxv2KE0ZcbQXtn5DJJsnMwCmh3rlrIc=";

  standard_6 = mkStandard version6 "sha256-u6ZNpmHFVOk+r+6Q8OURSfAi41cxMoDvaEXrTtHEAVY=";
  stage_6 = mkStage version6 "";
  standard-trial_6 = mkStandardTrial version6 "sha256-nHTAqosOJqC0VnRw2/xVpZ6y02vvau6CgfNmgiN/AHs=";
  stage-trial_6 = mkStageTrial version6 "sha256-zrv0c/Mxt1EysR7ZvmxtksXAF5MyXTFMNj4KAdO3QnE=";
}