mqtt-exporter: use patch rather than substituteInPlace

The problem with this `substituteInPlace` is that it happily continues
doing something once we're on a version of `mqtt-exporter` that has this
bug fixed (which happened upstream in
<https://github.com/kpetremann/mqtt-exporter/commit/53f5f31b28cb5aeec1c8d0bb7d1aea56f036082e>).

Here's how it fails:

```console
$ mqtt-exporter
Traceback (most recent call last):
  File "/nix/store/apglhyifvx73d4ybmrcyic2fdp7dxq38-mqtt-exporter-1.9.0/bin/.mqtt-exporter-wrapped", line 6, in <module>
    from mqtt_exporter.main import main_mqtt_exporter_mqtt_exporter
ImportError: cannot import name 'main_mqtt_exporter_mqtt_exporter' from 'mqtt_exporter.main' (/nix/store/apglhyifvx73d4ybmrcyic2fdp7dxq38-mqtt-exporter-1.9.0/lib/python3.13/site-packages/mqtt_exporter/main.py)
```

The patch will do the correct thing and start to fail once it has
already been applied.
This commit is contained in:
Jeremy Fleischman
2026-01-29 19:46:07 -08:00
parent 7f05aff195
commit 6057bf64a6
+8 -5
View File
@@ -1,6 +1,7 @@
{
lib,
fetchFromGitHub,
fetchpatch,
python3,
}:
@@ -16,11 +17,13 @@ python3.pkgs.buildPythonApplication rec {
hash = "sha256-z2y43sRlwgy3Bwhu8rvlTkf6HOT+v8kjo5FT3lo5CEA=";
};
postPatch = ''
# https://github.com/kpetremann/mqtt-exporter/pull/117
substituteInPlace pyproject.toml \
--replace-fail "mqtt_exporter.main:main" "mqtt_exporter.main:main_mqtt_exporter"
'';
patches = [
(fetchpatch {
name = "Fix `mqtt-exporter` script";
url = "https://github.com/kpetremann/mqtt-exporter/commit/53f5f31b28cb5aeec1c8d0bb7d1aea56f036082e.diff";
hash = "sha256-LS+kO6bHofNQxk9o+ExsJnaecwfY/40S0MIJwpJxCAI=";
})
];
build-system = with python3.pkgs; [ setuptools ];