On 28/03/2017 11:23, Giuliano Colla via Lazarus wrote:
Il 26/03/2017 23:11, C Western via Lazarus ha scritto:
Expr.pas(78,12) Fatal: Can't find unit Expr used by FormGrid

I believe that many problems of this kind could be solved at the root if the fpc error message was not as misleading as it is currently.

The error message lets you believe that it didn't find an Expr.pas or an Expr.ppu, while the actual problem was that it found an invalid/conflicting .ppu.

Two different messages, one telling "can't find unit xxx" and another telling "unit xxx invalid ppu" would save a lot of troubles and lead you to quickly find the reason.

Actually they are both there.

"checksum changed for spe.ppu" was the first error. That is exactly what happens.

You have to think about how fpc is called.

1) the rtl and/or packages where build earlier. fpc is called with a path to the ppu, but fpc is not given the path to the pas files

2) when the package with Expr was build, fpc had a path that saw the fpc version of spe. So Expr.ppu contains the checksum for that ppu.

3) At some point the other spe was build

4)
And now - building yet anouther package - fpc is called with NO path to any of the pas files (Expr / spe), but only the ppu.

some unit needs to be compiled that "uses Expr".

fpc finds Expr.ppu
Afaik it verifies that this is still valid, by checking if units used by Expr.ppu have still the same checksum.

fpc stops when it finds the first spe.ppu / so fpc is unaware that there is another.
The checksum is wrong.

So it tells you that. (It does not say why the checksum changed, because it does not know)
It also tells you that it wants to rebuild Expr.pas
And it fails to do that. (because it was not give the path to the source)

----
This is basically because the build is divided into package. When building one package, fpc has very little info what happened in packages build before


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to