[Lazarus] Library dependency problem. Help please!

Donald Ziesig donald at ziesig.org
Thu Feb 11 18:14:16 CET 2016


Hi All!

I am having a strange library dependency problem.  It started yesterday 
afternoon in a set of code very far from where I was working at the 
time.  I have tried everything I can think of (including creating a new 
dummy project,  and rebuilding and renaming both libraries, one file at 
a time).

The problem appears to be associated with a generic type definition.  
When I remove the specialization for that generic and comment out the 
dependent code, the problem goes away (of course the program no longer 
works, but at least it compiles).

I have two packages:  AppLibrary which contains application-specific 
units that will be used in several related projects, and; CommonLibrary 
which contains general-purpose units that I have used for years (some go 
back to Delphi 2).  AppLibrary requires CommonLibrary.   The generic 
type definition is in the common library, the specialization is in the 
app library.

CommonLibrary compiles successfully.  AppLibrary (original version and 
all copies I have made for debugging this issue) fails to compile if it 
has a particular specialize clause in the interfaces section of any of 
its units (most of which have been working for the past month).  I have 
tried all of the units one at a time and any one with this specialize 
clause included fails compilation the exact same way:

During compilation a dialog box appears with the caption "File Not 
Found".  The directory it is looking for is the original path from the 
original app from yesterday.  The path is associated with the AppLibrary 
and the persistslist2.pas file is in the directory associated with the 
CommonLibrary.

/home/pi/Module14Code/Common/persistslist2.pas

The path exists but the file does not (the file is in the appropriate 
directory for the library).

I tried creating a totally new project and as I said above, new 
libraries in a new directory tree.  When I try to compile the AppLibrary 
I still get the error with the old path.  I tried renaming the 
persistslist2 unit to persitslist3 (which only exists in the test 
version of the CommonLibrary).  The same error occurs but now it wants 
the old path with the new file:

/home/pi/Module14Code/Common/persistslist3.pas

I have tried greping for the path and it only appears in files 
associated with the pre-problem application.  Is it possible that 
something associated with the compiler's configuration file(s) is 
remembering the old stuff?  This error has persisted through multiple 
reboots.

I am using Raspbian Jessie with Lazarus 1.7 (no changes here since early 
January).  It worked properly using Lazarus 1.4.2 before then.  I have 
rebuilt Lazarus in an attempt to fix the problem, but it made no 
noticable change.

One thing that would be useful is if the "File Not Found" dialog would 
reference the offending file and perhaps the source of the text of the 
path.  I wasted a lot of time removing units from AppLibrary 
one-at-a-time before I could identify the failing ones.

Any help will be greatly appreciated.

Thanks,

Don Ziesig





More information about the Lazarus mailing list