From 1d91b59670d5a9785c87a4e63a19695727166598 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:47:02 +0530 Subject: [PATCH 1/4] rnnoise: 2021-01-22 -> 0.2 new external dependency added - model model_version can be found from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${finalAttrs.version}/model_version --- .../development/libraries/rnnoise/default.nix | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/pkgs/development/libraries/rnnoise/default.nix b/pkgs/development/libraries/rnnoise/default.nix index af4fcf30153c..9fc4d272c414 100644 --- a/pkgs/development/libraries/rnnoise/default.nix +++ b/pkgs/development/libraries/rnnoise/default.nix @@ -1,28 +1,40 @@ -{ stdenv, lib, fetchFromGitHub, autoreconfHook }: +{ stdenv, lib, fetchFromGitLab, fetchurl, autoreconfHook }: -stdenv.mkDerivation (rec { +stdenv.mkDerivation (finalAttrs: { pname = "rnnoise"; - version = "2021-01-22"; + version = "0.2"; - src = fetchFromGitHub { + src = fetchFromGitLab { + domain = "gitlab.xiph.org"; owner = "xiph"; repo = "rnnoise"; - rev = "1cbdbcf1283499bbb2230a6b0f126eb9b236defd"; - sha256 = "1y0rzgmvy8bf9a431garpm2w177s6ajgf79y5ymw4yb0pik57rwb"; + rev = "v${finalAttrs.version}"; + hash = "sha256-Qaf+0iOprq7ILRWNRkBjsniByctRa/lFVqiU5ZInF/Q="; }; + # Copy from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${finalAttrs.version}/model_version + model_version = "0b50c45"; + model = fetchurl { + url = "https://media.xiph.org/rnnoise/models/rnnoise_data-${finalAttrs.model_version}.tar.gz"; + hash = "sha256-SsgcXAiE7EvVkHAmqq4WIJt7ds2df3GvWCCUovmPS0M="; + }; + + patchPhase = '' + tar xvomf ${finalAttrs.model} + ''; + nativeBuildInputs = [ autoreconfHook ]; postInstall = '' install -Dt $out/bin examples/.libs/rnnoise_demo ''; - meta = with lib; { + meta = { description = "Recurrent neural network for audio noise reduction"; homepage = "https://people.xiph.org/~jm/demo/rnnoise/"; - license = licenses.bsd3; - maintainers = [ maintainers.nh2 ]; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ nh2 ]; mainProgram = "rnnoise_demo"; - platforms = platforms.all; + platforms = lib.platforms.all; }; }) From 0112397f8593d58449f19aedb9bc05f1ec78a838 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:03:09 +0530 Subject: [PATCH 2/4] rnnoise: Add additional GitHub mirror, update-script move model-version to model-version.json for easier updates --- .../development/libraries/rnnoise/default.nix | 56 +++++++++++++++---- .../libraries/rnnoise/model-version.json | 4 ++ 2 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 pkgs/development/libraries/rnnoise/model-version.json diff --git a/pkgs/development/libraries/rnnoise/default.nix b/pkgs/development/libraries/rnnoise/default.nix index 9fc4d272c414..7d0df9002ef0 100644 --- a/pkgs/development/libraries/rnnoise/default.nix +++ b/pkgs/development/libraries/rnnoise/default.nix @@ -1,25 +1,31 @@ -{ stdenv, lib, fetchFromGitLab, fetchurl, autoreconfHook }: +{ stdenv, lib, fetchurl, fetchzip, autoreconfHook, writeScript }: -stdenv.mkDerivation (finalAttrs: { +let + modelVersionJSON = lib.importJSON ./model-version.json; + + # Copy from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${finalAttrs.version}/model_version + default_model_version = modelVersionJSON.version; + default_model_url = "https://media.xiph.org/rnnoise/models/rnnoise_data-${default_model_version}.tar.gz"; + default_model_hash = modelVersionJSON.hash; + +in stdenv.mkDerivation (finalAttrs: { pname = "rnnoise"; version = "0.2"; - src = fetchFromGitLab { - domain = "gitlab.xiph.org"; - owner = "xiph"; - repo = "rnnoise"; - rev = "v${finalAttrs.version}"; + src = fetchzip { + urls = [ + "https://gitlab.xiph.org/xiph/rnnoise/-/archive/v${finalAttrs.version}/rnnoise-v${finalAttrs.version}.tar.gz" + "https://github.com/xiph/rnnoise/archive/v${finalAttrs.version}.tar.gz" + ]; hash = "sha256-Qaf+0iOprq7ILRWNRkBjsniByctRa/lFVqiU5ZInF/Q="; }; - # Copy from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${finalAttrs.version}/model_version - model_version = "0b50c45"; model = fetchurl { - url = "https://media.xiph.org/rnnoise/models/rnnoise_data-${finalAttrs.model_version}.tar.gz"; - hash = "sha256-SsgcXAiE7EvVkHAmqq4WIJt7ds2df3GvWCCUovmPS0M="; + url = default_model_url; + hash = default_model_hash; }; - patchPhase = '' + postPatch = '' tar xvomf ${finalAttrs.model} ''; @@ -29,6 +35,32 @@ stdenv.mkDerivation (finalAttrs: { install -Dt $out/bin examples/.libs/rnnoise_demo ''; + passthru.updateScript = writeScript "update-rnnoise.sh" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl jq common-updater-scripts nix nix-prefetch findutils moreutils + + prefetch-sri() { + nix-prefetch-url "$1" | xargs nix hash to-sri --type sha256 + } + + res="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \ + -sL "https://api.github.com/repos/xiph/rnnoise/tags?per_page=1")" + + version="$(echo $res | jq '.[0].name | split("v") | .[1]' --raw-output)" + update-source-version ${finalAttrs.pname} "$version" --ignore-same-hash + + model_version=$(curl -sL "https://raw.githubusercontent.com/xiph/rnnoise/v$version/model_version") + model_url="https://media.xiph.org/rnnoise/models/rnnoise_data-$model_version.tar.gz" + model_hash="$(prefetch-sri $model_url)" + + modelJson=pkgs/development/libraries/rnnoise/model-version.json + + jq --arg version "$model_version" \ + --arg hash "$model_hash" \ + '.version = $version | .hash = $hash' \ + "$modelJson" | sponge "$modelJson" + ''; + meta = { description = "Recurrent neural network for audio noise reduction"; homepage = "https://people.xiph.org/~jm/demo/rnnoise/"; diff --git a/pkgs/development/libraries/rnnoise/model-version.json b/pkgs/development/libraries/rnnoise/model-version.json new file mode 100644 index 000000000000..830f8cc36018 --- /dev/null +++ b/pkgs/development/libraries/rnnoise/model-version.json @@ -0,0 +1,4 @@ +{ + "version": "0b50c45", + "hash": "sha256-SsgcXAiE7EvVkHAmqq4WIJt7ds2df3GvWCCUovmPS0M=" +} From 6d0941464923786d6405d952ad62bf6023de8c21 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Sun, 28 Apr 2024 02:03:09 +0530 Subject: [PATCH 3/4] rnnoise: allow overriding the modelUrl and hash --- pkgs/development/libraries/rnnoise/default.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/rnnoise/default.nix b/pkgs/development/libraries/rnnoise/default.nix index 7d0df9002ef0..fa8449edeb30 100644 --- a/pkgs/development/libraries/rnnoise/default.nix +++ b/pkgs/development/libraries/rnnoise/default.nix @@ -1,12 +1,16 @@ -{ stdenv, lib, fetchurl, fetchzip, autoreconfHook, writeScript }: +{ stdenv, lib, fetchurl, fetchzip, autoreconfHook, writeScript +, modelUrl ? "", modelHash ? "" # Allow overriding the model URL and hash +}: -let +let modelVersionJSON = lib.importJSON ./model-version.json; - # Copy from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${finalAttrs.version}/model_version + # Copy from https://gitlab.xiph.org/xiph/rnnoise/-/raw/v${version}/model_version default_model_version = modelVersionJSON.version; - default_model_url = "https://media.xiph.org/rnnoise/models/rnnoise_data-${default_model_version}.tar.gz"; - default_model_hash = modelVersionJSON.hash; + + # Either use the default model or the one provided by package override + model_url = if (modelUrl == "") then "https://media.xiph.org/rnnoise/models/rnnoise_data-${default_model_version}.tar.gz" else modelUrl; + model_hash = if (modelHash == "") then modelVersionJSON.hash else modelHash; in stdenv.mkDerivation (finalAttrs: { pname = "rnnoise"; @@ -21,8 +25,8 @@ in stdenv.mkDerivation (finalAttrs: { }; model = fetchurl { - url = default_model_url; - hash = default_model_hash; + url = model_url; + hash = model_hash; }; postPatch = '' From 614eb0b602d15dddd65c7c224c8dad097affa440 Mon Sep 17 00:00:00 2001 From: Artturin Date: Mon, 29 Apr 2024 23:51:04 +0300 Subject: [PATCH 4/4] rnnoise: apply patch to fix aarch64-{linux,darwin} builds --- pkgs/development/libraries/rnnoise/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/rnnoise/default.nix b/pkgs/development/libraries/rnnoise/default.nix index fa8449edeb30..eb77106fd29f 100644 --- a/pkgs/development/libraries/rnnoise/default.nix +++ b/pkgs/development/libraries/rnnoise/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, fetchzip, autoreconfHook, writeScript +{ stdenv, lib, fetchurl, fetchzip, autoreconfHook, writeScript, fetchpatch , modelUrl ? "", modelHash ? "" # Allow overriding the model URL and hash }: @@ -24,6 +24,14 @@ in stdenv.mkDerivation (finalAttrs: { hash = "sha256-Qaf+0iOprq7ILRWNRkBjsniByctRa/lFVqiU5ZInF/Q="; }; + patches = [ + # remove when updating + (fetchpatch { + url = "https://github.com/xiph/rnnoise/commit/372f7b4b76cde4ca1ec4605353dd17898a99de38.patch"; + hash = "sha256-Dzikb59hjVxd1XIEj/Je4evxtGORkaNcqE+zxOJMSvs="; + }) + ]; + model = fetchurl { url = model_url; hash = model_hash;