From 1eefa87b7103c3699f5cf2f128592e74c65dba9c Mon Sep 17 00:00:00 2001 From: Adam Stephens Date: Fri, 12 Jul 2024 09:19:21 -0400 Subject: [PATCH] sabnzbd: override sabctools version and add updateScript --- pkgs/by-name/sa/sabnzbd/package.nix | 19 ++++++++++++--- pkgs/by-name/sa/sabnzbd/update.sh | 23 +++++++++++++++++++ .../python-modules/sabctools/default.nix | 2 +- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100755 pkgs/by-name/sa/sabnzbd/update.sh diff --git a/pkgs/by-name/sa/sabnzbd/package.nix b/pkgs/by-name/sa/sabnzbd/package.nix index 6978589811bca8f..63b5df4b5962bc4 100644 --- a/pkgs/by-name/sa/sabnzbd/package.nix +++ b/pkgs/by-name/sa/sabnzbd/package.nix @@ -3,6 +3,7 @@ stdenv, coreutils, fetchFromGitHub, + fetchPypi, python3, par2cmdline-turbo, unzip, @@ -14,6 +15,9 @@ }: let + sabctoolsVersion = "8.2.0"; + sabctoolsHash = "sha256-dOMNZoKWQxHJt6yHiNKVtpnYvLJkK8nktOm+djsSTcM="; + pythonEnv = python3.withPackages ( ps: with ps; [ apprise @@ -42,7 +46,15 @@ let python-dateutil pytz rebulk - sabctools + # sabnzbd requires a specific version of sabctools + (sabctools.overridePythonAttrs (old: { + version = sabctoolsVersion; + src = fetchPypi { + pname = "sabctools"; + version = sabctoolsVersion; + hash = sabctoolsHash; + }; + })) sabyenc3 sgmllib3k six @@ -86,8 +98,9 @@ stdenv.mkDerivation rec { runHook postInstall ''; - passthru.tests = { - smoke-test = nixosTests.sabnzbd; + passthru = { + tests.smoke-test = nixosTests.sabnzbd; + updateScript = ./update.sh; }; meta = with lib; { diff --git a/pkgs/by-name/sa/sabnzbd/update.sh b/pkgs/by-name/sa/sabnzbd/update.sh new file mode 100755 index 000000000000000..d4cd47cfb5e92dc --- /dev/null +++ b/pkgs/by-name/sa/sabnzbd/update.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix common-updater-scripts gnugrep gnused nurl + +# shellcheck shell=bash + +set -euo pipefail + +latestVersion=$(list-git-tags --url=https://github.com/sabnzbd/sabnzbd | grep -E '^[0-9.]+$' | sort --reverse --numeric-sort | head -n 1) +currentVersion=$(nix-instantiate --eval -E "with import ./. {}; sabnzbd.version or (lib.getVersion sabnzbd)" | tr -d '"') + +if [[ "$latestVersion" == "$currentVersion" ]]; then + echo "sabnzbd already latest version $latestVersion" + exit 0 +fi + +echo "sabnzbd updating $currentVersion -> $latestVersion" +update-source-version sabnzbd "$latestVersion" + +sabctoolsVersion=$(curl -s "https://raw.githubusercontent.com/sabnzbd/sabnzbd/$latestVersion/requirements.txt" | grep sabctools | cut -f 3 -d =) +sabctoolsHash=$(nurl --hash https://pypi.org/project/sabctools "$sabctoolsVersion") + +sed -i -E -e "s#sabctoolsVersion = \".*\"#sabctoolsVersion = \"$sabctoolsVersion\"#" ./pkgs/by-name/sa/sabnzbd/package.nix +sed -i -E -e "s#sabctoolsHash = \".*\"#sabctoolsHash = \"$sabctoolsHash\"#" ./pkgs/by-name/sa/sabnzbd/package.nix diff --git a/pkgs/development/python-modules/sabctools/default.nix b/pkgs/development/python-modules/sabctools/default.nix index c8e1e294ef1ddbb..e9e56131c76d77a 100644 --- a/pkgs/development/python-modules/sabctools/default.nix +++ b/pkgs/development/python-modules/sabctools/default.nix @@ -7,7 +7,7 @@ }: buildPythonPackage rec { pname = "sabctools"; - version = "8.2.3"; # needs to match version sabnzbd expects, e.g. https://github.com/sabnzbd/sabnzbd/blob/4.0.x/requirements.txt#L3 + version = "8.2.3"; pyproject = true; src = fetchPypi {