Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Because cppo writes with
open_out
, CRLF are added to output files on Windows even when the input files are LF.Context
.cmi
CRC checksums are computed on the marshalled signatures of.mli
files. These CRC checksums are the source of theThe files xxx.cmi and yyy.cmi makes inconsistent assumptions on interface Zzz
ocamlc/ocamlopt errors..mli
files (because the marshalledTypes.signature
indirectly referencesLexer.position
). Easy to see in theutop-full
toplevel on any.cmi
file:.mli
will therefore have different CRC checksums than original LF-ending.mli
filesThe net effect is that I can't share
.cmi
/.cma
between Unix and Windows machines if CPPO is used as a preprocessor.The files xxx.cmi and yyy.cmi makes inconsistent assumptions on interface Zzz
is the result.Solution
Use
open_out_bin
. This PR hides it behind a command line option, but I actually think binary mode should always have been used.