Unverified Commit 31782c65 authored by zowoq's avatar zowoq Committed by GitHub
Browse files

rasdaemon: 0.8.0 -> 0.8.2 (#369375)

parents 7be7dbf6 f91b6f35
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ in

    enable = lib.mkEnableOption "RAS logging daemon";

    package = lib.mkPackageOption pkgs "rasdaemon" { };

    record = lib.mkOption {
      type = lib.types.bool;
      default = true;
@@ -99,7 +101,7 @@ in
      };
    };
    environment.systemPackages =
      [ pkgs.rasdaemon ]
      [ cfg.package ]
      ++ lib.optionals (cfg.testing) (
        with pkgs.error-inject;
        [
@@ -151,12 +153,12 @@ in
          StateDirectory = lib.optionalString (cfg.record) "rasdaemon";

          ExecStart =
            "${pkgs.rasdaemon}/bin/rasdaemon --foreground" + lib.optionalString (cfg.record) " --record";
          ExecStop = "${pkgs.rasdaemon}/bin/rasdaemon --disable";
            "${cfg.package}/bin/rasdaemon --foreground" + lib.optionalString (cfg.record) " --record";
          ExecStop = "${cfg.package}/bin/rasdaemon --disable";
          Restart = "on-abort";

          # src/misc/rasdaemon.service.in shows this:
          # ExecStartPost = ${pkgs.rasdaemon}/bin/rasdaemon --enable
          # ExecStartPost = ${cfg.package}/bin/rasdaemon --enable
          # but that results in unpredictable existence of the database
          # and everything seems to be enabled without this...
        };
@@ -167,7 +169,7 @@ in
        wantedBy = [ "multi-user.target" ];
        serviceConfig = {
          Type = "oneshot";
          ExecStart = "${pkgs.rasdaemon}/bin/ras-mc-ctl --register-labels";
          ExecStart = "${cfg.package}/bin/ras-mc-ctl --register-labels";
          RemainAfterExit = true;
        };
      };
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ import ./make-test-python.nix (
      machine.wait_for_unit("multi-user.target")
      # confirm rasdaemon is running and has a valid database
      # some disk errors detected in qemu for some reason ¯\_(ツ)_/¯
      machine.succeed("ras-mc-ctl --errors | tee /dev/stderr | grep -q 'No .* errors.'")
      machine.wait_until_succeeds("ras-mc-ctl --errors | tee /dev/stderr | grep -q 'No .* errors.'")
      # confirm the supplied labels text made it into the system
      machine.succeed("grep -q 'vendor: none' /etc/ras/dimm_labels.d/labels >&2")
      machine.shutdown()
+51 −58
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  autoreconfHook,
  pkg-config,
  glibcLocales,
  kmod,
  coreutils,
  perl,
  dmidecode,
  hwdata,
  sqlite,
  fetchFromGitHub,
  lib,
  libtraceevent,
  fetchpatch,
  nix-update-script,
  nixosTests,
  perl,
  pkg-config,
  sqlite,
  stdenv,
  # Options
  enableDmidecode ? stdenv.hostPlatform.isx86_64,
  dmidecode,
}:

stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
  pname = "rasdaemon";
  version = "0.8.0";
  version = "0.8.2";

  src = fetchFromGitHub {
    owner = "mchehab";
    repo = "rasdaemon";
    rev = "v${version}";
    sha256 = "sha256-BX3kc629FOh5cnD6Sa/69wKdhmhT3Rpz5ZvhnD4MclQ=";
    tag = "v${finalAttrs.version}";
    hash = "sha256-veaqAbSJvoUzkn1OLYY3t3y9Bh8dzuenpLGO2yz/yaM=";
  };

  patches = [
    (fetchpatch {
      # fix #295002 (segfault on AMD), will be in the release after 0.8.0
      name = "fix crash on AMD";
      url = "https://github.com/mchehab/rasdaemon/commit/f1ea76375281001cdf4a048c1a4a24d86c6fbe48.patch";
      hash = "sha256-1VPDTrAsvZGiGbh52EUdG6tYV/n6wUS0mphOSXzran0=";
    })
  ];
  strictDeps = true;

  enableParallelBuilding = true;

  nativeBuildInputs = [
    autoreconfHook
    pkg-config
  ];

  buildInputs = [
    coreutils
    glibcLocales
    hwdata
    kmod
    sqlite
  buildInputs =
    [
      libtraceevent
      (perl.withPackages (
        ps: with ps; [
        DBI
          DBDSQLite
        ]
      ))
  ] ++ lib.optionals (!stdenv.hostPlatform.isAarch64) [ dmidecode ];
      sqlite
    ]
    ++ lib.optionals enableDmidecode [
      dmidecode
    ];

  configureFlags = [
    "--sysconfdir=/etc"
    "--localstatedir=/var"
    "--with-sysconfdefdir=${placeholder "out"}/etc/sysconfig"
    "--enable-all"
  ];

@@ -83,9 +74,15 @@ stdenv.mkDerivation rec {

  # easy way out, ends up installing /nix/store/...rasdaemon/bin in $out

  postConfigure = ''
    substituteInPlace Makefile \
      --replace '"$(DESTDIR)/etc/ras/dimm_labels.d"' '"$(prefix)/etc/ras/dimm_labels.d"'
  postPatch = ''
    patchShebangs contrib/
  '';

  preConfigure = ''
    substituteInPlace Makefile.am \
      --replace-fail '"$(DESTDIR)@sysconfdir@/ras/dimm_labels.d"' '"$(prefix)@sysconfdir@/ras/dimm_labels.d"' \
      --replace-fail '"$(DESTDIR)@SYSCONFDEFDIR@/rasdaemon"' '"$(prefix)@SYSCONFDEFDIR@/rasdaemon"' \
      --replace-fail '"$(DESTDIR)@sysconfdir@/ras/triggers' '"$(prefix)@sysconfdir@/ras/triggers'
  '';

  outputs = [
@@ -100,20 +97,16 @@ stdenv.mkDerivation rec {
    install -Dm 0755 contrib/edac-tests $inject/bin/edac-tests
  '';

  postFixup =
    ''
      # Fix dmidecode and modprobe paths
  postFixup = lib.optionalString enableDmidecode ''
    substituteInPlace $out/bin/ras-mc-ctl \
        --replace 'find_prog ("modprobe")  or exit (1)' '"${kmod}/bin/modprobe"'
    ''
    + lib.optionalString (!stdenv.hostPlatform.isAarch64) ''
      substituteInPlace $out/bin/ras-mc-ctl \
        --replace 'find_prog ("dmidecode")' '"${dmidecode}/bin/dmidecode"'
      --replace-fail 'find_prog ("dmidecode")' '"${dmidecode}/bin/dmidecode"'
  '';

  passthru.tests = nixosTests.rasdaemon;

  meta = with lib; {
  passthru.updateScript = nix-update-script { };

  meta = {
    description = ''
      A Reliability, Availability and Serviceability (RAS) logging tool using EDAC kernel tracing events
    '';
@@ -125,9 +118,9 @@ stdenv.mkDerivation rec {
      drivers for other architectures like arm also exists.
    '';
    homepage = "https://github.com/mchehab/rasdaemon";
    license = licenses.gpl2Plus;
    platforms = platforms.linux;
    changelog = "https://github.com/mchehab/rasdaemon/blob/v${version}/ChangeLog";
    maintainers = with maintainers; [ evils ];
    license = lib.licenses.gpl2Plus;
    platforms = lib.platforms.linux;
    changelog = "${finalAttrs.meta.homepage}/releases/tag/v${finalAttrs.version}";
    maintainers = with lib.maintainers; [ evils ];
  };
}
})