Unverified Commit 70314748 authored by Pol Dellaiera's avatar Pol Dellaiera Committed by GitHub
Browse files

xtf: init at 0-unstable-2024-07-25 (#335855)

parents fbb61249 199115ee
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ Some other notable packages that compose the Xen Ecosystem include:
- `ocamlPackages.xenstore-tool`: XAPI's `oxenstore` utilities.
- `xen-guest-agent`: Guest drivers for UNIX domUs.
- `win-pvdrivers`: Guest drivers for Windows domUs.
- `xtf`: The Xen Test Framework.

## Updating

@@ -100,6 +101,8 @@ open a PR fixing the script, and update Xen manually:
   ```

   Change the value of `xenToEvaluate` to evaluate all relevant Xen packages.
1. Run `xtf --all --host` as root when booted into the Xen update, and make
   sure no tests fail.
1. Clean up your changes and commit them, making sure to follow the
   [Nixpkgs Contribution Guidelines](../../../../CONTRIBUTING.md).
1. Open a PR and await a review from the current maintainers.
+78 −0
Original line number Diff line number Diff line
{
  lib,
  fetchgit,
  unstableGitUpdater,
  stdenv,
  doxygen,
  graphviz,
  python3Packages,
}:

stdenv.mkDerivation {
  pname = "xtf";
  version = "0-unstable-2024-07-25";

  outputs = [
    "out" # xtf-runner and test suite.
    "doc" # Autogenerated HTML documentation website.
    "dev" # Development headers.
  ];

  src = fetchgit {
    url = "https://xenbits.xenproject.org/git-http/xtf.git";
    rev = "f37c4574dd79d058c035be989ac6648508556a1a";
    hash = "sha256-3eOKQXdyFX0iY90UruK8lLfnXQt+cOlvyW/KMj2hczQ=";
  };

  nativeBuildInputs =
    (with python3Packages; [
      python
      wrapPython
    ])
    ++ [
      doxygen
      graphviz
    ];

  buildFlags = [ "doxygen" ];

  installFlags = [
    "xtfdir=$(out)/share/xtf"
  ];

  postInstall =
    # Much like Xen, XTF installs its files to dist/nix/store/*/*,
    # so we need to copy them to the right place.
    ''
      mkdir -p ''${!outputBin}/share
      cp -prvd dist/nix/store/*/* ''${!outputBin}
    ''
    # The documentation and development headers aren't in the dist/
    # folder, so we copy those too.
    + ''
      mkdir -p ''${!outputDoc}/share/doc/xtf
      cp -prvd docs/autogenerated/html ''${!outputDoc}/share/doc/xtf

      mkdir -p ''${!outputDev}/include
      cp -prvd include ''${!outputDev}
    ''
    # Wrap xtf-runner, and link it to $out/bin.
    # This is necessary because the real xtf-runner should
    # be in the same directory as the tests/ directory.
    + ''
      wrapPythonProgramsIn "''${!outputBin}/share/xtf" "''${!outputBin} $pythonPath"
      mkdir -p ''${!outputBin}/bin
      ln -s ''${!outputBin}/share/xtf/xtf-runner ''${!outputBin}/bin/xtf-runner
    '';

  passthru.updateScript = unstableGitUpdater { };

  meta = {
    description = "Xen Test Framework and Suite for creating microkernel-based tests";
    homepage = "https://xenbits.xenproject.org/docs/xtf/index.html";
    license = lib.licenses.bsd2;
    maintainers = with lib.maintainers; [ sigmasquadron ];
    mainProgram = "xtf-runner";
    platforms = lib.lists.intersectLists lib.platforms.linux lib.platforms.x86_64;
  };
}