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
- Inspect the list file and confirm it has at least one non-comment, non-reserved entry: `grep -vE '^\s*(#|$)' "$LIST" | head`.
- Regenerate the list from the upstream data step that enumerates the .res/.nrm/etc. files to pack.
- Check that line endings are LF/CRLF and not NUL-separated, and that no line begins with a U_PKG_RESERVED_CHARS character.
- 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
- Validate the list generator's output is non-empty before packaging.
- Log the parsed entry count upstream so an empty list is caught early.
- Remember this case is a soft return (no exit), so downstream tools may silently produce no output — check for the expected output file too.
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
- U_FILE_ACCESS_ERROR
- gencmn: udata_create(-d %s -n %s -t %s) failed - %s\n
- gencmn: udata_finish() failed - %s\n
- U_ILLEGAL_ARGUMENT_ERROR
- error in command line argument "%s"\n
AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13).
Data as JSON: /api/errors/60d7742709fad266.
Report an issue: GitHub.