I recently encountered a problem with clashing .ppu files - see the thread in the lazarus mailing list "Strange problem compiling IDE". I found it difficult to track down, and it would have been much easier if the full pathname had been given. Looking at the compiler source this looks like a trivial change - see attached patch. The error message then changes from

Warning: Recompiling Expr, checksum changed for spe.ppu {impl}

to:

Warning: Recompiling Expr, checksum changed for /home/me/fpc/lazarus.w/components/tachart/lib/i386-linux/gtk2/spe.ppu {impl}

The former took me a long time to fix, whereas the latter points immediately to the problem (a local copy of something in the fpc numlib package).

Is this a sensible change?

Colin
diff -uNr '--exclude=.svn' '--exclude=*.rst' '--exclude=*.fpm' trunk/fpcsrc/compiler/fppu.pas trunk.w/fpcsrc/compiler/fppu.pas
--- trunk/fpcsrc/compiler/fppu.pas	2017-03-07 21:39:02.841746616 +0000
+++ trunk.w/fpcsrc/compiler/fppu.pas	2017-04-01 09:15:25.214738539 +0100
@@ -1664,7 +1664,7 @@
                   (pu.u.crc<>pu.checksum)
                  ) then
                begin
-                 Message2(unit_u_recompile_crc_change,realmodulename^,pu.u.realmodulename^,@queuecomment);
+                 Message2(unit_u_recompile_crc_change,realmodulename^,pu.u.ppufilename,@queuecomment);
 {$ifdef DEBUG_UNIT_CRC_CHANGES}
                  if (pu.u.interface_crc<>pu.interface_checksum) then
                    writeln('  intfcrc change: ',hexstr(pu.u.interface_crc,8),' <> ',hexstr(pu.interface_checksum,8))
@@ -1720,7 +1720,7 @@
               if (pu.u.interface_crc<>pu.interface_checksum) or
                  (pu.u.indirect_crc<>pu.indirect_checksum) then
                 begin
-                  Message2(unit_u_recompile_crc_change,realmodulename^,pu.u.realmodulename^+' {impl}',@queuecomment);
+                  Message2(unit_u_recompile_crc_change,realmodulename^,pu.u.ppufilename+' {impl}',@queuecomment);
 {$ifdef DEBUG_UNIT_CRC_CHANGES}
                   if (pu.u.interface_crc<>pu.interface_checksum) then
                     writeln('  intfcrc change (2): ',hexstr(pu.u.interface_crc,8),' <> ',hexstr(pu.interface_checksum,8))
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to