From ca828efb7580de4b9eb623874a483b2ba7ca210b Mon Sep 17 00:00:00 2001 From: oxalica Date: Sun, 12 Jan 2025 11:11:26 -0500 Subject: [PATCH 1/6] lm_sensors: split outputs and modernize --- pkgs/by-name/lm/lm_sensors/package.nix | 52 ++++++++++++++++++-------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/pkgs/by-name/lm/lm_sensors/package.nix b/pkgs/by-name/lm/lm_sensors/package.nix index 59cb314775465..2661fd41a62df 100644 --- a/pkgs/by-name/lm/lm_sensors/package.nix +++ b/pkgs/by-name/lm/lm_sensors/package.nix @@ -7,29 +7,40 @@ flex, which, perl, + rrdtool, sensord ? false, - rrdtool ? null, }: -assert sensord -> rrdtool != null; +let + version = "3.6.0"; + tag = lib.replaceStrings [ "." ] [ "-" ] version; +in stdenv.mkDerivation rec { pname = "lm-sensors"; - version = "3.6.0"; - dashedVersion = lib.replaceStrings [ "." ] [ "-" ] version; + inherit version; src = fetchFromGitHub { owner = "lm-sensors"; repo = "lm-sensors"; - rev = "V${dashedVersion}"; + inherit tag; hash = "sha256-9lfHCcODlS7sZMjQhK0yQcCBEoGyZOChx/oM0CU37sY="; }; + outputs = [ + "bin" + "out" + "dev" + "man" + "doc" + ]; + # Upstream build system have knob to enable and disable building of static # library, shared library is built unconditionally. postPatch = lib.optionalString stdenv.hostPlatform.isStatic '' sed -i 'lib/Module.mk' -e '/LIBTARGETS :=/,+1d; /-m 755/ d' - substituteInPlace prog/sensors/Module.mk --replace 'lib/$(LIBSHBASENAME)' "" + substituteInPlace prog/sensors/Module.mk \ + --replace-fail 'lib/$(LIBSHBASENAME)' "" ''; nativeBuildInputs = [ @@ -37,6 +48,7 @@ stdenv.mkDerivation rec { flex which ]; + # bash is required for correctly replacing the shebangs in all tools for cross-compilation. buildInputs = [ bash @@ -45,35 +57,43 @@ stdenv.mkDerivation rec { makeFlags = [ "PREFIX=${placeholder "out"}" + "BINDIR=${placeholder "bin"}/bin" + "SBINDIR=${placeholder "bin"}/bin" + "INCLUDEDIR=${placeholder "dev"}/include" + "MANDIR=${placeholder "man"}/share/man" + # This is a dependency of the library. + "ETCDIR=${placeholder "out"}/etc" + "CC=${stdenv.cc.targetPrefix}cc" "AR=${stdenv.cc.targetPrefix}ar" ] ++ lib.optional sensord "PROG_EXTRA=sensord"; - installFlags = [ - "ETCDIR=${placeholder "out"}/etc" - ]; + enableParallelBuilding = true; # Making regexp to patch-out installing of .so symlinks from Makefile is # complicated, it is easier to remove them post-install. postInstall = '' - mkdir -p $out/share/doc/${pname} - cp -r configs doc/* $out/share/doc/${pname} + mkdir -p $doc/share/doc/${pname} + cp -r configs doc/* $doc/share/doc/${pname} '' + lib.optionalString stdenv.hostPlatform.isStatic '' rm $out/lib/*.so* ''; - meta = with lib; { + meta = { homepage = "https://hwmon.wiki.kernel.org/lm_sensors"; - changelog = "https://raw.githubusercontent.com/lm-sensors/lm-sensors/V${dashedVersion}/CHANGES"; + changelog = "https://raw.githubusercontent.com/lm-sensors/lm-sensors/${tag}/CHANGES"; description = "Tools for reading hardware sensors"; - license = with licenses; [ + license = with lib.licenses; [ lgpl21Plus gpl2Plus ]; - maintainers = with maintainers; [ pmy ]; - platforms = platforms.linux; + maintainers = with lib.maintainers; [ + pmy + oxalica + ]; + platforms = lib.platforms.linux; mainProgram = "sensors"; }; } From d0d886009441a07150a2a416ecca66fbd29eb1d7 Mon Sep 17 00:00:00 2001 From: oxalica Date: Sun, 12 Jan 2025 11:52:49 -0500 Subject: [PATCH 2/6] fan2go: fix lm_sensors config path and simplify --- pkgs/by-name/fa/fan2go/package.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/fa/fan2go/package.nix b/pkgs/by-name/fa/fan2go/package.nix index 4bdb61f9fb8c2..579b516b06b05 100644 --- a/pkgs/by-name/fa/fan2go/package.nix +++ b/pkgs/by-name/fa/fan2go/package.nix @@ -18,9 +18,11 @@ buildGo123Module rec { vendorHash = "sha256-ad0e/cxbcU/KfPDOdD46KdCcvns83dgGDAyLLQiGyiA="; + buildInputs = [ lm_sensors ]; + postConfigure = '' substituteInPlace vendor/github.com/md14454/gosensors/gosensors.go \ - --replace-fail '"/etc/sensors3.conf"' '"${lm_sensors}/etc/sensors3.conf"' + --replace-fail '"/etc/sensors3.conf"' '"${lib.getLib lm_sensors}/etc/sensors3.conf"' # Uses /usr/bin/echo, and even if we patch that, it refuses to execute any # binary without being able to confirm that it's owned by root, which isn't @@ -28,9 +30,6 @@ buildGo123Module rec { rm internal/fans/cmd_test.go ''; - CGO_CFLAGS = "-I ${lm_sensors}/include"; - CGO_LDFLAGS = "-L ${lm_sensors}/lib"; - meta = with lib; { description = "Simple daemon providing dynamic fan speed control based on temperature sensors"; mainProgram = "fan2go"; From 278b375f51227bc80afa8b9d3fe57236c6773943 Mon Sep 17 00:00:00 2001 From: oxalica Date: Sun, 12 Jan 2025 11:53:12 -0500 Subject: [PATCH 3/6] htop: fix lm_sensors library path --- pkgs/tools/system/htop/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/system/htop/default.nix b/pkgs/tools/system/htop/default.nix index 47f97c5fd3468..f962fb9f9eb65 100644 --- a/pkgs/tools/system/htop/default.nix +++ b/pkgs/tools/system/htop/default.nix @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { optionalPatch = pred: so: lib.optionalString pred "patchelf --add-needed ${so} $out/bin/htop"; in lib.optionalString (!stdenv.hostPlatform.isStatic) '' - ${optionalPatch sensorsSupport "${lm_sensors}/lib/libsensors.so"} + ${optionalPatch sensorsSupport "${lib.getLib lm_sensors}/lib/libsensors.so"} ${optionalPatch systemdSupport "${systemd}/lib/libsystemd.so"} ''; From 9442a9d928c173198a1abef967c071b14494e0cb Mon Sep 17 00:00:00 2001 From: oxalica Date: Sun, 12 Jan 2025 12:24:22 -0500 Subject: [PATCH 4/6] lm_sensors: fix build with `sensord` enabled --- pkgs/by-name/lm/lm_sensors/package.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/by-name/lm/lm_sensors/package.nix b/pkgs/by-name/lm/lm_sensors/package.nix index 2661fd41a62df..26b2a1a4c64e5 100644 --- a/pkgs/by-name/lm/lm_sensors/package.nix +++ b/pkgs/by-name/lm/lm_sensors/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, bash, bison, flex, @@ -27,6 +28,15 @@ stdenv.mkDerivation rec { hash = "sha256-9lfHCcODlS7sZMjQhK0yQcCBEoGyZOChx/oM0CU37sY="; }; + patches = lib.optionals sensord [ + # Fix compile failure on GCC 14 with `sensord` enabled. + # From: https://github.com/lm-sensors/lm-sensors/pull/483 + (fetchpatch { + url = "https://github.com/lm-sensors/lm-sensors/pull/483/commits/7a6170f07d05cc6601b4668f211e9389f2e75286.patch"; + hash = "sha256-Q49quv3eXeMvY3jgZFs/F7Rljbq4YyehIDIlsgmloBQ="; + }) + ]; + outputs = [ "bin" "out" From 9b19a5cf61c2bd0ce82fb8fd6d74c6b8a3e06328 Mon Sep 17 00:00:00 2001 From: oxalica Date: Sun, 12 Jan 2025 12:49:34 -0500 Subject: [PATCH 5/6] lm_sensors: do not use pname in postInstall --- pkgs/by-name/lm/lm_sensors/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/lm/lm_sensors/package.nix b/pkgs/by-name/lm/lm_sensors/package.nix index 26b2a1a4c64e5..bf35fa9801f43 100644 --- a/pkgs/by-name/lm/lm_sensors/package.nix +++ b/pkgs/by-name/lm/lm_sensors/package.nix @@ -17,7 +17,7 @@ let tag = lib.replaceStrings [ "." ] [ "-" ] version; in -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "lm-sensors"; inherit version; @@ -84,8 +84,8 @@ stdenv.mkDerivation rec { # complicated, it is easier to remove them post-install. postInstall = '' - mkdir -p $doc/share/doc/${pname} - cp -r configs doc/* $doc/share/doc/${pname} + mkdir -p $doc/share/doc/lm_sensors + cp -r configs doc/* $doc/share/doc/lm_sensors '' + lib.optionalString stdenv.hostPlatform.isStatic '' rm $out/lib/*.so* From dcd56b155a3284151b83f4a942dd6d7584d3318b Mon Sep 17 00:00:00 2001 From: oxalica Date: Sun, 12 Jan 2025 12:50:31 -0500 Subject: [PATCH 6/6] lm_sensors: patch unconditionally --- pkgs/by-name/lm/lm_sensors/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/lm/lm_sensors/package.nix b/pkgs/by-name/lm/lm_sensors/package.nix index bf35fa9801f43..6748d60926acd 100644 --- a/pkgs/by-name/lm/lm_sensors/package.nix +++ b/pkgs/by-name/lm/lm_sensors/package.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation { hash = "sha256-9lfHCcODlS7sZMjQhK0yQcCBEoGyZOChx/oM0CU37sY="; }; - patches = lib.optionals sensord [ + patches = [ # Fix compile failure on GCC 14 with `sensord` enabled. # From: https://github.com/lm-sensors/lm-sensors/pull/483 (fetchpatch {