abhigyanpatwari/GitNexus · error · Error

Unsupported analyzer build entry: ${absolutePath}

Error message

Unsupported analyzer build entry: ${absolutePath}

What it means

collectBuildEntries classifies every build-tree entry via lstat into directory, regular file, or symbolic link; anything else — FIFO/named pipe, unix socket, character/block device — hits the else branch and throws. The receipt schema simply has no representation for such nodes, and hashing them would be meaningless, so their presence is treated as a corrupt or polluted build tree.

Source

Thrown at gitnexus/src/core/analyzer-identity.ts:783

          state: statState(link),
        });
        if (depth >= limits.buildDepth) {
          throw new Error(
            `Analyzer build scan exceeded depth ${limits.buildDepth}: ${absolutePath}`,
          );
        }
        pending.push({ absoluteDir: absolutePath, depth: depth + 1 });
      } else if (link.isFile()) {
        const state = statState(link);
        scannedBytes += stateSize(state, absolutePath);
        if (scannedBytes > limits.buildBytes) {
          throw new Error(`Analyzer build scan exceeded ${limits.buildBytes} bytes: ${buildRoot}`);
        }
        entries.push({ absolutePath, relativePath, kind: 'file', state });
      } else if (link.isSymbolicLink()) {
        entries.push({ absolutePath, relativePath, kind: 'symlink', state: statState(link) });
      } else {
        throw new Error(`Unsupported analyzer build entry: ${absolutePath}`);
      }
    }
  }
  entries.sort((a, b) => compareBytes(a.relativePath, b.relativePath));
  return entries;
}

function buildSnapshot(entries: readonly BuildEntry[]): Array<{
  relativePath: string;
  kind: BuildEntry['kind'];
  state: StatState;
}> {
  return entries.map(({ relativePath, kind, state }) => ({ relativePath, kind, state }));
}

function buildCacheKey(entry: Pick<BuildEntry, 'relativePath' | 'kind'>): string {
  return JSON.stringify([entry.kind, entry.relativePath]);
}

View on GitHub (pinned to aac7515d2a)

Solutions

  1. Locate special files: 'find dist -type p -o -type s -o -type b -o -type c' (POSIX) and delete the offenders.
  2. Reconfigure the tool that created the socket/pipe to place IPC files outside the build tree (e.g. /tmp).
  3. Clean-rebuild dist after removal so the scan sees only directories, files, and links.

Example fix

# before: stray IPC files inside the build tree
$ ls dist/run.sock dist/log.fifo

# after: remove special files, keep IPC artifacts outside dist/
$ find dist -type p -o -type s | xargs rm -f
Defensive patterns

Strategy: validation

Validate before calling

import { readdirSync } from 'node:fs';

function buildTreeHasOnlySupportedEntries(buildRoot: string): boolean {
  const stack = [buildRoot];
  while (stack.length > 0) {
    const dir = stack.pop()!;
    for (const entry of readdirSync(dir, { withFileTypes: true })) {
      if (entry.isDirectory() || entry.isFile() || entry.isSymbolicLink()) continue;
      return false;
    }
    // descend only directories (not symlinks) as the scan does
  }
  return true;
}

Type guard

function isUnsupportedBuildEntryError(error: unknown): boolean {
  return error instanceof Error && /^Unsupported analyzer build entry:/.test(error.message);
}

Try / catch

try {
  identity = resolveAnalyzerRunnerIdentity(import.meta.url);
} catch (error) {
  if (isUnsupportedBuildEntryError(error)) {
    reportUserError(`Special file in build tree: ${error.message}; remove FIFOs/sockets from dist.`);
  }
  throw error;
}

Prevention

When it happens

Trigger: A stray 'mkfifo' pipe, a lingering socket file left by a dev server or database, or a device node inside the analyzer's dist/src directory when resolveAnalyzerRunnerIdentity scans it. Common after running tools that create lock/IPC files with unusual types inside the build output.

Common situations: A dev server crashed and left a .sock file in the build dir; someone created a named pipe for log tailing inside dist/; containerized builds that materialize device-like special files into the output layer.

Related errors


AI-assisted analysis of abhigyanpatwari/GitNexus@aac7515d2a (2026-08-20). Data as JSON: /api/errors/7cffaeaae94522f4. Report an issue: GitHub.