I made a mistake, so one of the details I wrote above is wrong, but I don't see, that this could explain the problem. When I had done the check for the 2 .lpk files:
lazarus/components/datetimectrls/datetimectrls.lpk
lazarus/components/synedit/synedit.lpk
I wrote, that they are absolute identically with the backup (in content and timestamp), that was true.
But I wrote too, that their timestamp (July 19th 2024) was identically with the 6 above changed files (after restoring them from the backup), but that was wrong (I had checked so many things so many times, that I made this mistake). The timestamp of the 6 above changed files inside the backup is July
27th 2024, so they are 8 days jounger then their .lpk files. And all .pas files of the 2 packages have July 19th 2024 too (same timestamp as the .lpk files).
So again I can't see a reason to recompile them.
Not sure about Linux, but on Windows I can simply uninstall Lazarus, clear out the directory from any leftover files, and reinstall it to the same directory. The config files are stored elsewhere.
This is not the 1st time where I damaged accidently a Lazarus / LCL sourcefile and fall into trouble and I assume not the last time. I hope (with the help of this Forum) to understand the problem, so that I can solve it - now and in the future - without always reinstalling everything again, which should be the very very last option...
-CR is not about RangeChecking, it is "Verify object method call validity" (the LCL does not like that either though)
-Cr is RangeChecking
Of course, you are right, my mistake. But I had disabled both, so it should not matter.
There are usually modification, creation and a 3rd time. I don't know which is used where....
And they may be timezone sensitive / there is this "all file changed" when the clock changes from/to summertime.
From my understanding only the "last modified" timestamp would make sense here. I would expect, that this timestamp is compared between a sourcefile and it's already compiled *.o or *.ppu files, but in reality it seems not to be so easy.
Another idea (but just blindly guessing), the times are diff on each install anyway. there is on hardcoded time. Times are compared between sets of 2 (or more???) files. So there must then be another file with a time...
Additionally there are a lot of '*.compiled' files, which include a timestamp like
<Compiler Value="/opt/lazarus_340/fpc/bin/x86_64-linux/fpc.sh" Date="1721400717"/>I assume, this is a Unix timestamp in seconds after 1970. But as I said, I had compared
the complete Lazarus installation with the backup and all files had the same content and same timestamp.
If you have write protected sources, then there will be a shadow build area in the PCP (usually ~/.lazarus).
No, my sources are not write protected (but it would be great, if they were). But they are split over so many folders, that it would be much work to write protect all of them, without to write protect all unit folders.
Questions:Is there anybody who knows in detail, how the compiler definitively decides, in which case an existing unit is recompiled or not?
Maybe one of the compiler experts? Maybe @PascalDragon?
And if it would be, that packages DateTimeCtrls and SynEdit now are "used" the 1st time in this Lazarus installation: wohld this be a reliable reason, to recompile above 6 files, although they already exist and although their timestamp is younger then the .lpk files and all their .pas files?