nodejs/node · warning

gencmn: no files listed in %s\n

Error message

gencmn: no files listed in %s\n

What it means

The input list file opened fine but gencmn parsed zero file entries from it (fileCount==0 at line 217). Unlike most gencmn errors this is a soft return, not exit() — the function returns and no common data / TOC is emitted.

Source

Thrown at deps/icu-small/source/tools/toolutil/pkg_gencmn.cpp:217

#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
        {
          char *t;
          while((t = uprv_strchr(line,U_FILE_ALT_SEP_CHAR))) {
            *t = U_FILE_SEP_CHAR;
          }
        }
#endif
        addFile(getLongPathname(line), name, source, sourceTOC, verbose);
    }

    uprv_free(linePtr);

    if(in!=T_FileStream_stdin()) {
        T_FileStream_close(in);
    }

    if(fileCount==0) {
        fprintf(stderr, "gencmn: no files listed in %s\n", dataFile == nullptr ? "<stdin>" : dataFile);
        return;
    }

    /* sort the files by basename */
    qsort(files, fileCount, sizeof(File), compareFiles);

    if(!sourceTOC) {
        UNewDataMemory *out;

        /* determine the offsets of all basenames and files in this common one */
        basenameOffset=4+8*fileCount;
        fileOffset=(basenameOffset+(basenameTotal+15))&~0xf;
        for(i=0; i<fileCount; ++i) {
            files[i].fileOffset=fileOffset;
            fileOffset+=(files[i].fileSize+15)&~0xf;
            files[i].basenameOffset=basenameOffset;
            basenameOffset+=files[i].basenameLength;
        }

View on GitHub (pinned to 1b2de5e052)

Solutions

  1. Inspect the list file and confirm it has at least one non-comment, non-reserved entry: `grep -vE '^\s*(#|$)' "$LIST" | head`.
  2. Regenerate the list from the upstream data step that enumerates the .res/.nrm/etc. files to pack.
  3. Check that line endings are LF/CRLF and not NUL-separated, and that no line begins with a U_PKG_RESERVED_CHARS character.
  4. If an empty pack is legitimately desired, skip the gencmn step rather than feeding it an empty list.

Example fix

# before
gencmn empty.txt   # fileCount==0, nothing emitted
# after
if grep -qE '^[^#[:space:]]' "$LIST"; then gencmn "$LIST"; else echo "no entries; skipping"; fi
Defensive patterns

Strategy: validation

Validate before calling

# reject an empty (all-comment) list before running gencmn
if ! grep -qE '^[^#[:space:]]' "$LIST"; then echo "no file entries in $LIST" >&2; exit 1; fi

Prevention

When it happens

Trigger: Passing a list file that contains only comments/blank lines, or a .txt list whose lines all begin with reserved characters that get skipped. The check `if(fileCount==0)` fires after the read loop closes the stream.

Common situations: A filtered/generated list file ended up empty because an upstream filter (e.g. exclusion of locale data) removed every entry; a hand-edited list where every line is commented out; an encoding/line-ending issue causing every line to be skipped as whitespace/reserved.

Related errors


AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13). Data as JSON: /api/errors/60d7742709fad266. Report an issue: GitHub.