nix windows build

This commit is contained in:
Robin Appelman 2023-05-18 20:17:26 +02:00
commit 23e6e2fff5
5 changed files with 41 additions and 24 deletions

View file

@ -4,12 +4,12 @@ System metrics exporter for prometheus
## Exported metrics
- cpu, memory, io, network and disk usage stats
- cpu, memory, gpu memory, io, network and disk usage stats
- zfs pool usage and arc stats
- cpu and gpu temperature (gpu temps only for amd cards)
- cpu power usage on modern amd and intel platforms
- cpu and gpu temperature
- cpu and gpu power usage on modern amd and intel platforms
- docker per-container cpu, memory and network stats
-
## Usage
- Download the binary for your architecture from the [releases](https://github.com/icewind1991/palantir/releases/) and place it at `/usr/local/bin/palantir`

14
flake.lock generated
View file

@ -38,10 +38,10 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1682669017,
"narHash": "sha256-Vi+p4y3wnl0/4gcwTdmCO398kKlDaUrNROtf3GOD2NY=",
"path": "/nix/store/wm2cdd01f8jqbxpw817nv5j3sw6p93g8-source",
"rev": "7449971a3ecf857b4a554cf79b1d9dcc1a4647d8",
"lastModified": 1683928319,
"narHash": "sha256-maz0DRKixJVcNRMiAMWlJniiF8IuQ+WbfmlJJ8D+jfM=",
"path": "/nix/store/pp35kzqx97fkkl7az1fb9ygphr6qi9h0-source",
"rev": "9656e85a15a0fe67847ee8cdb99a20d8df499962",
"type": "path"
},
"original": {
@ -80,11 +80,11 @@
]
},
"locked": {
"lastModified": 1684290028,
"narHash": "sha256-IWWfoF5aU8wzxJ6ixuW+3KRlppYvmhUP5v6owWiXJMQ=",
"lastModified": 1684376381,
"narHash": "sha256-XVFTXADfvBXKwo4boqfg80awUbT+JgQvlQ8uZ+Xgo1s=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "ded1f327ff2bdf0eb4bbb945865441ac636c423e",
"rev": "7c9a265c2eaa5783bc18593b1aec39a85653c076",
"type": "github"
},
"original": {

View file

@ -26,22 +26,43 @@
};
inherit system overlays;
};
mingw_w64_cc = pkgs-cross-mingw.stdenv.cc;
mingw_w64 = pkgs-cross-mingw.windows.mingw_w64;
windows = pkgs-cross-mingw.windows;
naersk-lib = naersk.lib."${system}";
toolchain = (pkgs.rust-bin.stable.latest.default.override {
targets = [ "x86_64-pc-windows-gnu" ];
});
mingw_w64_cc = pkgs.pkgsCross.mingwW64.stdenv.cc;
windows = pkgs.pkgsCross.mingwW64.windows;
naersk' = pkgs.callPackage naersk {
cargo = toolchain;
rustc = toolchain;
};
in rec {
# `nix build`
packages.palantir = naersk-lib.buildPackage {
packages.palantir = naersk'.buildPackage {
pname = "palantir";
root = ./.;
src = ./.;
postInstall = ''
mkdir -p $out/lib/udev/rules.d/
echo 'SUBSYSTEM=="powercap", ACTION=="add", RUN+="${pkgs.coreutils-full}/bin/chgrp -R powermonitoring /sys%p", RUN+="${pkgs.coreutils-full}/bin/chmod -R g=u /sys%p"' >> $out/lib/udev/rules.d/51-palantir.rules
echo 'SUBSYSTEM=="powercap", ACTION=="change", ENV{TRIGGER}!="none", RUN+="${pkgs.coreutils-full}/bin/chgrp -R powermonitoring /sys%p", RUN+="${pkgs.coreutils-full}/bin/chmod -R g=u /sys%p"' >> $out/lib/udev/rules.d/51-palantir.rules
'';
};
packages.palantir-win = naersk'.buildPackage {
pname = "palantir";
src = ./.;
strictDeps = true;
depsBuildBuild = with pkgs; [
mingw_w64_cc
];
nativeBuildInputs = [ mingw_w64_cc ];
overrideMain = args: args // { buildInputs = [ windows.pthreads ]; };
CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu";
};
defaultPackage = packages.palantir;
# `nix run`
@ -53,14 +74,12 @@
# `nix develop`
devShell = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
(rust-bin.stable.latest.default.override {
targets = [ "x86_64-pc-windows-gnu" ];
})
toolchain
bacon
mingw_w64_cc
];
depsBuildBuild = [ pkgs.wine64 ];
buildInputs = [ windows.pthreads ];
# buildInputs = [ windows.pthreads ];
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER = "${mingw_w64_cc.targetPrefix}cc";
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUNNER = "wine64";

View file

@ -1,9 +1,8 @@
use crate::data::{DiskStats, DiskUsage};
use crate::{Error, MultiSensorSource, Result, SensorData};
use crate::{Error, MultiSensorSource, Result};
use ahash::{AHashSet, AHasher};
use regex::Regex;
use std::ffi::CString;
use std::fmt::Write;
use std::fs::File;
use std::hash::{Hash, Hasher};
use std::io::{Read, Seek};

View file

@ -1,7 +1,6 @@
use crate::data::PowerUsage;
use crate::linux::gpu::gpu_power;
use crate::{Error, Result};
use std::fmt::Write;
use std::fs::{read_dir, read_to_string};
use std::sync::atomic::{AtomicBool, Ordering};
use tracing::warn;