diff --git a/pkgs/by-name/ra/rapid-photo-downloader/package.nix b/pkgs/by-name/ra/rapid-photo-downloader/package.nix index 64fbe6d31621..fd4d1d4f2a43 100644 --- a/pkgs/by-name/ra/rapid-photo-downloader/package.nix +++ b/pkgs/by-name/ra/rapid-photo-downloader/package.nix @@ -17,60 +17,53 @@ gdk-pixbuf, libmediainfo, vmtouch, - gitUpdater, + versionCheckHook, + nix-update-script, }: python3Packages.buildPythonApplication (finalAttrs: { pname = "rapid-photo-downloader"; - version = "0.9.36"; + version = "0.9.37"; pyproject = true; src = fetchFromGitHub { owner = "damonlynch"; repo = "rapid-photo-downloader"; - rev = "v${finalAttrs.version}"; - hash = "sha256-fFmIbqymYkg2Z1/x0mNsCNlDCOyqVg65CM4a67t+kPQ="; + tag = "v${finalAttrs.version}"; + hash = "sha256-De4qe3LZm8fe5mu3teQzeP74mdgetCPRJrBzq9fad2s="; }; build-system = with python3Packages; [ - setuptools + hatchling + hatch-argparse-manpage + hatch-gettext ]; dependencies = with python3Packages; [ ifuse libimobiledevice # Python dependencies - pyqt5 - pygobject3 - gphoto2 - pyzmq - tornado - psutil - pyxdg arrow - python-dateutil - easygui babel colour + gphoto2 + packaging pillow + psutil + pygobject3 pymediainfo - sortedcontainers - requests - colorlog - pyprind - setuptools + pyqt5 + python-dateutil + pyxdg + pyzmq show-in-file-manager + sortedcontainers tenacity + tornado + # Optional dependencies + colorlog ]; - postPatch = '' - # Drop broken version specifier - sed -i '/python_requires/d' setup.py - # Disable version check - substituteInPlace raphodo/constants.py \ - --replace "disable_version_check = False" "disable_version_check = True" - ''; - nativeBuildInputs = [ libsForQt5.wrapQtAppsHook file @@ -78,15 +71,6 @@ python3Packages.buildPythonApplication (finalAttrs: { gobject-introspection ]; - # Package has no generally usable unit tests. - # The included doctests expect specific, hardcoded hardware to be present. - # Instead, we just make sure the program runs enough to report its version. - checkPhase = '' - export XDG_DATA_HOME=$(mktemp -d) - export QT_QPA_PLATFORM=offscreen - $out/bin/rapid-photo-downloader --detailed-version - ''; - buildInputs = [ gdk-pixbuf gexiv2 @@ -100,11 +84,23 @@ python3Packages.buildPythonApplication (finalAttrs: { udisks ]; - # NOTE: Check if strictDeps can be renabled - # at the time of writing this the dependency easygui fails to build - # launching fails with: - # "Namespace [Notify / GExiv2 / GUdev] not available" - strictDeps = false; + nativeInstallCheckInputs = [ versionCheckHook ]; + + versionCheckProgramArg = "--detailed-version"; + # Keep and setup environment such that the detailed version check + # can run successfully without a screen. + # Next to that, set the XDG_CACHE_HOME to stop generating errors + # about unwritable cache directories. + versionCheckKeepEnvironment = [ + "QT_QPA_PLATFORM" + "XDG_CACHE_HOME" + ]; + preVersionCheck = '' + export QT_QPA_PLATFORM=offscreen + export XDG_CACHE_HOME=$(mktemp -d) + ''; + + strictDeps = true; preFixup = '' makeWrapperArgs+=( @@ -122,9 +118,8 @@ python3Packages.buildPythonApplication (finalAttrs: { ) ''; - passthru.updateScript = gitUpdater { - rev-prefix = "v"; - ignoredVersions = "a.*"; + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=^v([0-9.]+)$" ]; }; meta = { diff --git a/pkgs/development/python-modules/hatch-argparse-manpage/default.nix b/pkgs/development/python-modules/hatch-argparse-manpage/default.nix new file mode 100644 index 000000000000..a0efb0bac9f6 --- /dev/null +++ b/pkgs/development/python-modules/hatch-argparse-manpage/default.nix @@ -0,0 +1,44 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + # Build system + hatchling, + # Dependencies + argparse-manpage, + rich, +}: + +buildPythonPackage (finalAttrs: { + pname = "hatch-argparse-manpage"; + version = "1.0.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "damonlynch"; + repo = "hatch-argparse-manpage"; + tag = "v${finalAttrs.version}"; + hash = "sha256-wkMLbbOkIRO83byUTJRYAS7uTYc2weL/viH1fI8xYh0="; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + argparse-manpage + rich + ]; + + pythonImportsCheck = [ + "hatch_argparse_manpage" + ]; + + meta = { + description = "Hatch build hook plugin to automatically generate manual pages"; + homepage = "https://github.com/damonlynch/hatch-argparse-manpage"; + changelog = "https://github.com/damonlynch/hatch-argparse-manpage/blob/${finalAttrs.src.tag}/CHANGES.md"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ philipdb ]; + }; +}) diff --git a/pkgs/development/python-modules/hatch-gettext/default.nix b/pkgs/development/python-modules/hatch-gettext/default.nix new file mode 100644 index 000000000000..743cdbaf3f63 --- /dev/null +++ b/pkgs/development/python-modules/hatch-gettext/default.nix @@ -0,0 +1,42 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + # Build system + hatchling, + # Dependencies + rich, +}: + +buildPythonPackage (finalAttrs: { + pname = "hatch-gettext"; + version = "1.1.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "damonlynch"; + repo = "hatch-gettext"; + tag = "v${finalAttrs.version}"; + hash = "sha256-hdYwDKRzv3iRoKUtPssOL2t4iPPsK+wlSydbMOeFyUs="; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + rich + ]; + + pythonImportsCheck = [ + "hatch_gettext" + ]; + + meta = { + description = "Hatch build hook plugin for GNU gettext"; + homepage = "https://github.com/damonlynch/hatch-gettext"; + changelog = "https://github.com/damonlynch/hatch-gettext/blob/${finalAttrs.src.tag}/CHANGES.md"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ philipdb ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6cc71fc903cb..46a8625b989f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6914,6 +6914,8 @@ self: super: with self; { hatch = callPackage ../development/python-modules/hatch/default.nix { }; + hatch-argparse-manpage = callPackage ../development/python-modules/hatch-argparse-manpage { }; + hatch-autorun = callPackage ../development/python-modules/hatch-autorun { }; hatch-babel = callPackage ../development/python-modules/hatch-babel { }; @@ -6928,6 +6930,8 @@ self: super: with self; { hatch-fancy-pypi-readme = callPackage ../development/python-modules/hatch-fancy-pypi-readme { }; + hatch-gettext = callPackage ../development/python-modules/hatch-gettext { }; + hatch-jupyter-builder = callPackage ../development/python-modules/hatch-jupyter-builder { }; hatch-min-requirements = callPackage ../development/python-modules/hatch-min-requirements { };