IDE: adding dependency to LCLBase instead uses LCL, fixed adding min version requirement

git-svn-id: trunk@31286 -
This commit is contained in:
mattias 2011-06-19 22:35:27 +00:00
parent 982e95406b
commit 087c6c7a2f
2 changed files with 30 additions and 8 deletions

View File

@ -3441,9 +3441,10 @@ begin
with Result do begin
Owner:=NewOwner;
PackageName:=Self.Name;
if WithMinVersion then
if WithMinVersion then begin
MinVersion.Assign(Version);
Flags:=[pdfMinVersion];
Flags:=[pdfMinVersion];
end;
end;
end;

View File

@ -239,7 +239,7 @@ type
function GetPackageCount: integer; override;
function GetPackages(Index: integer): TIDEPackage; override;
function FindPackageWithName(const PkgName: string): TIDEPackage; override;
procedure RedirectPackageDependency(var APackage: TLazPackage);
// project
function OpenProjectDependencies(AProject: TProject;
@ -1933,12 +1933,17 @@ procedure TPkgManager.AddProjectRegCompDependency(AProject: TProject;
ARegisteredComponent: TRegisteredComponent);
var
PkgFile: TPkgFile;
APackage: TLazPackage;
begin
if not (ARegisteredComponent is TPkgComponent) then exit;
PkgFile:=TPkgComponent(ARegisteredComponent).PkgFile;
if (PkgFile=nil) or (PkgFile.LazPackage=nil) then exit;
AddProjectDependency(AProject,PkgFile.LazPackage);
if (PkgFile=nil) then exit;
APackage:=PkgFile.LazPackage;
RedirectPackageDependency(APackage);
AddProjectDependency(AProject,APackage);
end;
procedure TPkgManager.AddProjectLCLDependency(AProject: TProject);
@ -2488,6 +2493,15 @@ begin
end;
end;
procedure TPkgManager.RedirectPackageDependency(var APackage: TLazPackage);
begin
if APackage=PackageGraph.LCLBasePackage then begin
// Older Lazarus does not have a LCLBase and a component does not work
// without an LCLBase implementation, so we have to use LCL instead.
APackage:=PackageGraph.LCLPackage;
end;
end;
function TPkgManager.DoCompileProjectDependencies(AProject: TProject;
Flags: TPkgCompileFlags): TModalResult;
begin
@ -2667,6 +2681,7 @@ var
NewUnitName: String;
PkgFile: TPkgFile;
ClassUnitInfo: TUnitInfo;
APackage: TLazPackage;
begin
for i:=0 to ComponentClassnames.Count-1 do begin
//DebugLn(['CollectNeededUnitnamesAndPackages ComponentClassnames[i]=',ComponentClassnames[i]]);
@ -2691,9 +2706,12 @@ var
//DebugLn(['CollectNeededUnitnamesAndPackages AAA2 PkgFile=',PkgFile<>nil]);
if (PkgFile=nil) and (RegComp is TPkgComponent) then begin
PkgFile:=TPkgComponent(RegComp).PkgFile;
if (PkgFile<>nil) and (PkgFile.LazPackage<>nil)
and (Packages.IndexOf(PkgFile.LazPackage)<0) then
Packages.Add(PkgFile.LazPackage);
if (PkgFile<>nil) then begin
APackage:=PkgFile.LazPackage;
RedirectPackageDependency(APackage);
if (Packages.IndexOf(APackage)<0) then
Packages.Add(APackage);
end;
end;
end;
end;
@ -2744,6 +2762,7 @@ var
for i:=0 to MissingDependencies.Count-1 do begin
UnitOwner:=TObject(MissingDependencies[i]);
RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]);
RedirectPackageDependency(RequiredPackage);
if UnitOwner is TProject then begin
PackageAdditions:=Format(
lisPkgMangAddingNewDependencyForProjectPackage, [PackageAdditions,
@ -2782,6 +2801,7 @@ var
for i:=0 to MissingDependencies.Count-1 do begin
UnitOwner:=TObject(MissingDependencies[i]);
RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]);
RedirectPackageDependency(RequiredPackage);
if UnitOwner is TProject then begin
DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Project Dependency ',TProject(UnitOwner).Title,' -> ',RequiredPackage.Name);
AddProjectDependency(TProject(UnitOwner),RequiredPackage);
@ -3258,6 +3278,7 @@ begin
end;
// add package dependency
//DebugLn(['TPkgManager.AddDependencyToUnitOwners ',dbgsName(TObject(OwnersList[0])),' ',RequiredPkg.IDAsString]);
RedirectPackageDependency(RequiredPkg);
Result:=AddDependencyToOwners(OwnersList,RequiredPkg,false);
finally
OwnersList.Free;