Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2011-03

Indy compilation problem revisited.

10 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Frank Church

There is a persistent problem in installing Indy which always returns to bite me and I have to get the bottom of it.

Whenever Indy is being compiled it compiles okay.

When I want to reinstall the package this error comes up.

Recompiling IdStreamVCL, checksum changed for IdGlobal
IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by IdStream

What do they actually mean, in particular which process is emitting the message Fatal: Can't find unit IdStreamVCL used by IdStream?

Frank Church ======================= http://devblog.brahmancreations.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20110322/4b0887f4/attachment.html>

Reply by email

Peter Williams
to Frank Church

Hi Frank,

Date: Tue, 22 Mar 2011 10:21:04 +0000
From:
To:
Subject: [Lazarus] Indy compilation problem revisited.

Show quoted text 5 lines
There is a persistent problem in installing Indy which always returns to bite me and I have to get the bottom of it. Whenever Indy is being compiled it compiles okay. When I want to reinstall the package this error comes up.
Recompiling IdStreamVCL, checksum changed for IdGlobal IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by IdStream What do they actually mean, in particular which process is emitting the message Fatal: Can't find unit IdStreamVCL used by IdStream?

This is my best guess. Look for file IdStreamVCL.pas. You will probably find that this has the statement "unit IdStream" at line 1. Then look at line 13, column 20 and you will find IdStreamVCL (in it's uses section). -- >Frank Church

======================= http://devblog.brahmancreations.com

Best Regards,PEW

Reply by email

Mattias Gaertner
to Peter Williams
[...] >Recompiling IdStreamVCL, checksum changed for IdGlobal >IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by IdStream

You can try compiling the Indy package with -Ur. Add this to the compiler options of the Indy package.

>What do they actually mean, in particular which process is emitting the message Fatal: Can't find unit IdStreamVCL used by IdStream?

Process: fpc
Meaning: a ppu file is outdated. There is a bug in fpc that can trigger this. There are several ways to work around the bug. One is to use -Ur.

Mattias

Reply by email

Frank Church
to Mattias Gaertner
Mattias Gaertner wrote 21 lines
On Wed, 23 Mar 2011 00:44:43 +1100 Peter Williams wrote: >[...] > >Recompiling IdStreamVCL, checksum changed for IdGlobal > >IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by IdStream You can try compiling the Indy package with -Ur. Add this to the compiler options of the Indy package. > >What do they actually mean, in particular which process is emitting the message Fatal: Can't find unit IdStreamVCL used by IdStream? Process: fpc Meaning: a ppu file is outdated. There is a bug in fpc that can trigger this. There are several ways to work around the bug. One is to use -Ur.

I will test your suggestion. I have always suspected that there some bugs in FPC that Indy triggers.

Show quoted text 8 lines
Mattias -- _______________________________________________ Lazarus mailing list http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Frank Church ======================= http://devblog.brahmancreations.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20110323/2691af91/attachment.html>

Reply by email

Frank Church
to Frank Church
Frank Church wrote 29 lines
On 22 March 2011 18:15, Mattias Gaertner wrote: > On Wed, 23 Mar 2011 00:44:43 +1100 > Peter Williams wrote: > > >[...] > > >Recompiling IdStreamVCL, checksum changed for IdGlobal > > >IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by > IdStream > > You can try compiling the Indy package with -Ur. Add this to the > compiler options of the Indy package. > > > > >What do they actually mean, in particular which process is emitting the > message Fatal: Can't find unit IdStreamVCL used by IdStream? > > Process: fpc > Meaning: a ppu file is outdated. There is a bug in fpc that can trigger > this. There are several ways to work around the bug. One is to use -Ur. > > > I will test your suggestion. I have always suspected that there some bugs in FPC that Indy triggers.

After trying it out it now compiling is okay, but when it comes to registration it stops on the file indylaz.pas, which is the file that registers the components.

It is sensible or the norm for the unit that does the registration to have the same base name of the project file?

ie indylaz.pas and indylaz.lpk

The file also appears to be created at compile time

Show quoted text 29 lines
{ This file was automatically created by Lazarus. do not edit! This source is only used to compile and install the package. } unit indylaz; interface uses IdAbout, IdAboutVCL, IdAntiFreeze, IdCoreDsnRegister, IdDsnBaseCmpEdt, IdDsnCoreResourceStrings, IdDsnPropEdBinding, IdDsnPropEdBindingVCL, IdDsnRegister, IdDsnResourceStrings, IdDsnSASLListEditor, IdDsnSASLListEditorForm, IdDsnSASLListEditorFormVCL, IdRegister, IdRegisterCore, LazarusPackageIntf; implementation procedure Register; begin RegisterUnit('IdCoreDsnRegister', @IdCoreDsnRegister.Register); RegisterUnit('IdDsnRegister', @IdDsnRegister.Register); RegisterUnit('IdRegister', @IdRegister.Register); RegisterUnit('IdRegisterCore', @IdRegisterCore.Register); end; initialization RegisterPackage('indylaz', @Register); end.
Show quoted text 17 lines
Mattias > > -- > _______________________________________________ > Lazarus mailing list > > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus > -- Frank Church ======================= http://devblog.brahmancreations.com
Frank Church ======================= http://devblog.brahmancreations.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20110323/8e7bd945/attachment.html>

Reply by email

Frank Church
to Frank Church
Frank Church wrote 35 lines
On 23 March 2011 16:20, Frank Church wrote: > > > On 22 March 2011 18:15, Mattias Gaertner wrote: > >> On Wed, 23 Mar 2011 00:44:43 +1100 >> Peter Williams wrote: >> >> >[...] >> > >Recompiling IdStreamVCL, checksum changed for IdGlobal >> > >IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by >> IdStream >> >> You can try compiling the Indy package with -Ur. Add this to the >> compiler options of the Indy package. >> >> >> > >What do they actually mean, in particular which process is emitting >> the message Fatal: Can't find unit IdStreamVCL used by IdStream? >> >> Process: fpc >> Meaning: a ppu file is outdated. There is a bug in fpc that can trigger >> this. There are several ways to work around the bug. One is to use -Ur. >> >> >> > I will test your suggestion. I have always suspected that there some bugs > in FPC that Indy triggers. > >

PS. I missed out the relevant error message:
Recompiling indylaz, checksum changed for IdAbout
indylaz.pas(79,12) Fatal: Can't find unit indylaz used by Lazarus

Show quoted text 75 lines
After trying it out it now compiling is okay, but when it comes to registration it stops on the file indylaz.pas, which is the file that registers the components. It is sensible or the norm for the unit that does the registration to have the same base name of the project file? ie indylaz.pas and indylaz.lpk The file also appears to be created at compile time > { This file was automatically created by Lazarus. do not edit! > This source is only used to compile and install the package. > } > > unit indylaz; > > interface > > uses > IdAbout, IdAboutVCL, IdAntiFreeze, IdCoreDsnRegister, IdDsnBaseCmpEdt, > > IdDsnCoreResourceStrings, IdDsnPropEdBinding, IdDsnPropEdBindingVCL, > IdDsnRegister, IdDsnResourceStrings, IdDsnSASLListEditor, > IdDsnSASLListEditorForm, IdDsnSASLListEditorFormVCL, IdRegister, > IdRegisterCore, LazarusPackageIntf; > > implementation > > procedure Register; > begin > RegisterUnit('IdCoreDsnRegister', @IdCoreDsnRegister.Register); > RegisterUnit('IdDsnRegister', @IdDsnRegister.Register); > RegisterUnit('IdRegister', @IdRegister.Register); > RegisterUnit('IdRegisterCore', @IdRegisterCore.Register); > end; > > initialization > RegisterPackage('indylaz', @Register); > end. > > Mattias >> >> -- >> _______________________________________________ >> Lazarus mailing list >> >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus >> > > > > -- > Frank Church > > ======================= > http://devblog.brahmancreations.com > -- Frank Church ======================= http://devblog.brahmancreations.com
Frank Church ======================= http://devblog.brahmancreations.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20110323/5b95e9a4/attachment.html>

Reply by email

Mattias Gaertner
to Frank Church
Show quoted text 38 lines
On 23 March 2011 20:43, Frank Church wrote: > > > On 23 March 2011 16:20, Frank Church wrote: > >> >> >> On 22 March 2011 18:15, Mattias Gaertner wrote: >> >>> On Wed, 23 Mar 2011 00:44:43 +1100 >>> Peter Williams wrote: >>> >>> >[...] >>> > >Recompiling IdStreamVCL, checksum changed for IdGlobal >>> > >IdStreamVCL.pas(13,20) Fatal: Can't find unit IdStreamVCL used by >>> IdStream >>> >>> You can try compiling the Indy package with -Ur. Add this to the >>> compiler options of the Indy package. >>> >>> >>> > >What do they actually mean, in particular which process is emitting >>> the message Fatal: Can't find unit IdStreamVCL used by IdStream? >>> >>> Process: fpc >>> Meaning: a ppu file is outdated. There is a bug in fpc that can trigger >>> this. There are several ways to work around the bug. One is to use -Ur. >>> >>> >>> >> I will test your suggestion. I have always suspected that there some bugs >> in FPC that Indy triggers. > PS. I missed out the relevant error message: Recompiling indylaz, checksum changed for IdAbout indylaz.pas(79,12) Fatal: Can't find unit indylaz used by Lazarus

Well, if -Ur does not work, you have to bite the bullet and change the uses sections. Remove "inline" modifiers from functions and try to move units from the implementation to the interface section.

Show quoted text 6 lines
> After trying it out it now compiling is okay, but when it comes to > registration it stops on the file indylaz.pas, which is the file that > registers the components. > > It is sensible or the norm for the unit that does the registration to have > the same base name of the project file?

Yes.

Note: Since 0.9.29 you can select another name.

[...]

Mattias

Reply by email

Marco van de Voort
to Mattias Gaertner: On Wed, 23 Mar 2011 00:44:43 +1100 You can try compiling the Indy package with -Ur. Add…
Mattias Gaertner wrote 6 lines
> >What do they actually mean, in particular which process is emitting the message Fatal: Can't find unit IdStreamVCL used by IdStream? Process: fpc Meaning: a ppu file is outdated. There is a bug in fpc that can trigger this. There are several ways to work around the bug. One is to use -Ur.

Afaik this bug is not caused by that, but due to includefiles with the same name.

Indy copies their .inc file with $defines and compiler detection in every dir, and FPC recompiles on (some?) .inc changes, while Delphi does not.

Reply by email

Mattias Gaertner
to Marco van de Voort
Show quoted text 13 lines
On Tue, Mar 22, 2011 at 07:15:57PM +0100, Mattias Gaertner wrote: > > > >What do they actually mean, in particular which process is emitting the message Fatal: Can't find unit IdStreamVCL used by IdStream? > > Process: fpc > Meaning: a ppu file is outdated. There is a bug in fpc that can trigger > this. There are several ways to work around the bug. One is to use -Ur. Afaik this bug is not caused by that, but due to includefiles with the same name. Indy copies their .inc file with $defines and compiler detection in every dir, and FPC recompiles on (some?) .inc changes, while Delphi does not.

Yes, that is not a bug in fpc.
But duplicated include file is fixed by -Ur, isn't it? So, the remaining is something different.

Mattias

Reply by email

Marco van de Voort
to Mattias Gaertner
Mattias Gaertner wrote 8 lines
> > Meaning: a ppu file is outdated. There is a bug in fpc that can trigger > > this. There are several ways to work around the bug. One is to use -Ur. > > Afaik this bug is not caused by that, but due to includefiles with the same > name. > > Indy copies their .inc file with $defines and compiler detection in every > dir, and FPC recompiles on (some?) .inc changes, while Delphi does not.
Yes, that is not a bug in fpc. But duplicated include file is fixed by -Ur, isn't it? So, the remaining is something different.

I haven't tried with -Ur, but I could compile Indy easily by fixing this.

I've pointed this out to Indycore many, many times, but they keep mumbling "difficult, should be exact copies", and nothing happens.

But while in theory exact copy with the same datetime should work (since their path is the only differentiator and afaik not checked), extracting it from an archive might already cause problems with the timestamps

Reply by email