Closed jonahbeckford closed 4 months ago
The fact that the directory is elided is definitively suspicious. What does the atlas part of the -deps
option looks like in this case?
I'm using MSYS2 on Windows to make the command line comparison easier:
/y/source/dksdk-coder/.ci/o/dkml/lib $ /y/source/dksdk-coder/codept_bin/codept.exe -k -deps angstrom/*.cmi
{
"version" : [0, 11, 0],
"dependencies" :
[{ "file" : "angstrom/angstrom.cmi" },
{
"file" : "angstrom/angstrom__.cmi",
},
{ "module" : ["Angstrom__Input"], "mli" : "angstrom/angstrom__Input.cmi" },
{ "module" : ["Angstrom__More"], "mli" : "angstrom/angstrom__More.cmi" },
{
"module" : ["Angstrom__Parser"],
"mli" : "angstrom/angstrom__Parser.cmi"
}]
}
/y/source/dksdk-coder/.ci/o/dkml/lib $ ls angstrom/*.cmi
angstrom/angstrom.cmi angstrom/angstrom__Buffering.cmi angstrom/angstrom__Input.cmi angstrom/angstrom__Parser.cmi
angstrom/angstrom__.cmi angstrom/angstrom__Exported_state.cmi angstrom/angstrom__More.cmi
lib % ../../../../codept_bin/codept -k -deps angstrom/*.cmi
{
"version" : [0, 11, 0],
"dependencies" :
[{ "file" : "angstrom/angstrom.cmi" },
{
"file" : "angstrom/angstrom__.cmi",
"deps" :
[["Angstrom__Parser"], ["Angstrom__More"], ["Angstrom__Input"],
["Angstrom__Exported_state"], ["Angstrom__Buffering"]]
}, { "file" : "angstrom/angstrom__Buffering.cmi" },
{ "file" : "angstrom/angstrom__Exported_state.cmi" },
{ "file" : "angstrom/angstrom__Input.cmi" },
{ "file" : "angstrom/angstrom__More.cmi" },
{ "file" : "angstrom/angstrom__Parser.cmi" }],
"local" :
[{ "module" : ["Angstrom"], "mli" : "angstrom/angstrom.cmi" },
{ "module" : ["Angstrom__"], "mli" : "angstrom/angstrom__.cmi" },
{
"module" : ["Angstrom__Buffering"],
"mli" : "angstrom/angstrom__Buffering.cmi"
},
{
"module" : ["Angstrom__Exported_state"],
"mli" : "angstrom/angstrom__Exported_state.cmi"
},
{ "module" : ["Angstrom__Input"], "mli" : "angstrom/angstrom__Input.cmi" },
{ "module" : ["Angstrom__More"], "mli" : "angstrom/angstrom__More.cmi" },
{
"module" : ["Angstrom__Parser"],
"mli" : "angstrom/angstrom__Parser.cmi"
}]
}
lib % ls angstrom/*.cmi
angstrom/angstrom.cmi angstrom/angstrom__Buffering.cmi angstrom/angstrom__Input.cmi angstrom/angstrom__Parser.cmi
angstrom/angstrom__.cmi angstrom/angstrom__Exported_state.cmi angstrom/angstrom__More.cmi
Err ... apparently there is some non-determinism (perhaps caching or .cmi
recompilation) occurring.
When I run the command for the second time on Windows (nothing else was done!) it outputs the complete set of .cmi
:
/y/source/dksdk-coder/.ci/o/dkml/lib $ /y/source/dksdk-coder/codept_bin/codept.exe -deps angstrom/*.cmi
{
"version" : [0, 11, 0],
"dependencies" :
[{ "file" : "angstrom/angstrom.cmi" },
{
"file" : "angstrom/angstrom__.cmi",
"deps" :
[["Angstrom__Parser"], ["Angstrom__More"], ["Angstrom__Input"],
["Angstrom__Exported_state"], ["Angstrom__Buffering"]]
}, { "file" : "angstrom/angstrom__Buffering.cmi" },
{ "file" : "angstrom/angstrom__Exported_state.cmi" },
{ "file" : "angstrom/angstrom__Input.cmi" },
{ "file" : "angstrom/angstrom__More.cmi" },
{ "file" : "angstrom/angstrom__Parser.cmi" }],
"local" :
[{ "module" : ["Angstrom"], "mli" : "angstrom/angstrom.cmi" },
{ "module" : ["Angstrom__"], "mli" : "angstrom/angstrom__.cmi" },
{
"module" : ["Angstrom__Buffering"],
"mli" : "angstrom/angstrom__Buffering.cmi"
},
{
"module" : ["Angstrom__Exported_state"],
"mli" : "angstrom/angstrom__Exported_state.cmi"
},
{ "module" : ["Angstrom__Input"], "mli" : "angstrom/angstrom__Input.cmi" },
{ "module" : ["Angstrom__More"], "mli" : "angstrom/angstrom__More.cmi" },
{
"module" : ["Angstrom__Parser"],
"mli" : "angstrom/angstrom__Parser.cmi"
}]
}
/y/source/dksdk-coder/.ci/o/dkml/lib $ /y/source/dksdk-coder/codept_bin/codept.exe -k -deps angstrom/*.cmi
{
"version" : [0, 11, 0],
"dependencies" :
[{ "file" : "angstrom/angstrom.cmi" },
{
"file" : "angstrom/angstrom__.cmi",
"deps" :
[["Angstrom__Parser"], ["Angstrom__More"], ["Angstrom__Input"],
["Angstrom__Exported_state"], ["Angstrom__Buffering"]]
}, { "file" : "angstrom/angstrom__Buffering.cmi" },
{ "file" : "angstrom/angstrom__Exported_state.cmi" },
{ "file" : "angstrom/angstrom__Input.cmi" },
{ "file" : "angstrom/angstrom__More.cmi" },
{ "file" : "angstrom/angstrom__Parser.cmi" }],
"local" :
[{ "module" : ["Angstrom"], "mli" : "angstrom/angstrom.cmi" },
{ "module" : ["Angstrom__"], "mli" : "angstrom/angstrom__.cmi" },
{
"module" : ["Angstrom__Buffering"],
"mli" : "angstrom/angstrom__Buffering.cmi"
},
{
"module" : ["Angstrom__Exported_state"],
"mli" : "angstrom/angstrom__Exported_state.cmi"
},
{ "module" : ["Angstrom__Input"], "mli" : "angstrom/angstrom__Input.cmi" },
{ "module" : ["Angstrom__More"], "mli" : "angstrom/angstrom__More.cmi" },
{
"module" : ["Angstrom__Parser"],
"mli" : "angstrom/angstrom__Parser.cmi"
}]
}
Since I'm passing in Unix-style paths (ex. angstrom/angstrom__Input.cmi
) the following code is misbehaving:
On Unix that would be:
let nms = []
let name = "Angstrom__Input"
let _filename :: r = "angstrom__Input.cmi" :: ["angstrom"]
let namespace = ["angstrom"]
On Windows that would be:
let nms = []
let name = "Angstrom__Input"
let _filename :: r = "angstrom/angstrom__Input.cmi" :: []
let namespace = []
I'll try to pass Windows paths to codept and see if that is a fix.
EDIT 1: Confirmed the hypothesis on Windows using Format.eprintf
statements.
When I use the following from an opam switch
lib
directory:I get the following on Linux and macOS:
but this on Windows:
It doesn't matter which package is used.
Any ideas where it could be breaking down? I can do print line debugging if I had an idea where to start in the code. (Usually when I see something like this, it is because
/
is hardcoded as the directory separator somewhere in the code. But I don't see any obvious culprits.)