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 with Result do begin
Owner:=NewOwner; Owner:=NewOwner;
PackageName:=Self.Name; PackageName:=Self.Name;
if WithMinVersion then if WithMinVersion then begin
MinVersion.Assign(Version); MinVersion.Assign(Version);
Flags:=[pdfMinVersion]; Flags:=[pdfMinVersion];
end;
end; end;
end; end;

View File

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