The F# Build should cache the generated lexer/parser instead of recreating them all of the time
Is your feature request related to a problem? Please describe.
If the generated lexer and parser were checked in then they wouldn't need to be re-built quite so often. The files are almost perfectly cache-able (the only inputs are the lex/yacc binaries and the fsl/fsy file inputs) and this generation would mean that we don't have to
- rebuild the packaged lexx/yacc
- regenerate the parser/lexer
Running this is a cost that every proto build has to pay, for no good reason. Generating the lexer and parser on my machine takes ~12s:
However, it also takes ~35s to build fslex and fsyacc projects - costs that could be avoided if the files don't need to be generated.
It will require a. Changes to fslexyacc to generate relative paths inside generated files instead of absolute b. Custom msbuild task which will be hashing both sources and dependant fs files to figure out whether re-generating is needed. OR changes to fslexyacc to handle it properly.
I tried to do that couple of years ago but hit some issues with above