oracle/graal · error · FileNotFoundError

The Barista repository does not contain a {path_components}

Error message

The Barista repository does not contain a {path_components} file!

What it means

Barista suite helper baristaFilePath() walks path_components under the cloned Barista repository and requires the result to be an existing file. If the repo is missing, on the wrong branch/commit, or the expected layout changed, FileNotFoundError is raised.

Source

Thrown at sdk/mx.sdk/mx_sdk_benchmark.py:3629

        try:
            barista_suite = mx.suite("barista", fatalIfMissing=False)
            if barista_suite is None:
                barista_suite = mx.primary_suite().clone_foreign_suite("barista", clone_binary_first=False)
            bm_exec_context().add_context_value(self.BARISTA_HOME, ConstantContextValue(Path(barista_suite.dir)))
        except StopIteration:
            mx.abort("Cloning of 'barista' as a sibling of the current suite has failed!\n"
                     f"Please manually clone it to '{target_dir}'.")

    def baristaApplicationDirectoryPath(self, benchmark: str) -> Path:
        return self.baristaDirectoryPath() / "benchmarks" / benchmark

    def baristaFilePath(self, path_components: list[str]) -> Path:
        file_path = self.baristaDirectoryPath()
        for component in path_components:
            file_path = file_path / component
        file_path = file_path.resolve()
        if not file_path.is_file():
            raise FileNotFoundError(f"The Barista repository does not contain a {path_components} file!")
        return file_path

    def baristaProjectConfigurationPath(self) -> Path:
        return self.baristaFilePath(["pyproject.toml"])

    def baristaBuilderPath(self) -> Path:
        return self.baristaFilePath(["build"])

    def baristaHarnessPath(self) -> Path:
        return self.baristaFilePath(["barista"])

    def barista_install_script(self) -> Path:
        return self.baristaFilePath(["deps", "install.py"])

    def baristaHarnessBenchmarkName(self):
        return _baristaConfig["benchmarks"][self.benchmarkName()].get("barista-bench-name", self.benchmarkName())

    def baristaHarnessBenchmarkWorkload(self):

View on GitHub (pinned to a66e9ccd1d)

Solutions

  1. Inspect the sibling barista checkout printed by baristaDirectoryPath(); if incomplete or outdated, delete it and let the suite re-clone (or git pull).
  2. Check out the barista revision expected by your GraalVM/sdk suite version.
  3. If upstream renamed a file, update the path_components in mx_sdk_benchmark.py accordingly.

Example fix

# before
rm -rf ../barista   # or an interrupted clone left it partial
mx benchmark barista:...   # -> FileNotFoundError

# after
git clone <barista-repo> ../barista && git -C ../barista checkout <expected-rev>
mx benchmark barista:...
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
p = suite.baristaDirectoryPath()
for required in ("pyproject.toml", "build", "barista"):
    assert (p / required).is_file(), f"barista checkout incomplete: missing {required} under {p}"

Try / catch

try:
    path = suite.baristaFilePath(components)
except FileNotFoundError as e:
    # re-clone or re-checkout barista at the expected revision, then retry once
    raise

Prevention

When it happens

Trigger: Any Barista-suite code path resolving standard files (pyproject.toml, the 'build' script, the 'barista' harness, install scripts) after a partial/failed clone or a repository layout change upstream.

Common situations: Interrupted 'git clone' of barista (the code aborts if cloning fails); barista checked out at a revision that renamed or moved 'build' or 'barista'; stale sibling checkout from an older layout.

Related errors


AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14). Data as JSON: /api/errors/9b1888d17fd3aebe. Report an issue: GitHub.