mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 20:09:19 +02:00
* PackageVariants are now owned by the installer. Multiple packages can have references to them.
git-svn-id: trunk@22407 -
This commit is contained in:
parent
76b9b4fdac
commit
5d24a23e66
@ -435,6 +435,7 @@ Type
|
|||||||
|
|
||||||
{ TPackageVariant }
|
{ TPackageVariant }
|
||||||
|
|
||||||
|
TPackage = Class;
|
||||||
TPackageVariant = class(TNamedItem)
|
TPackageVariant = class(TNamedItem)
|
||||||
private
|
private
|
||||||
FOptions: TStrings;
|
FOptions: TStrings;
|
||||||
@ -453,17 +454,16 @@ Type
|
|||||||
FActivePackageVariantName: string;
|
FActivePackageVariantName: string;
|
||||||
FDefaultPackageVariantName: string;
|
FDefaultPackageVariantName: string;
|
||||||
FIsInheritable: boolean;
|
FIsInheritable: boolean;
|
||||||
|
FMasterPackage: TPackage;
|
||||||
FName: string;
|
FName: string;
|
||||||
FOwner: TPersistent;
|
|
||||||
function GetActivePackageVariant: TPackageVariant;
|
function GetActivePackageVariant: TPackageVariant;
|
||||||
function GetDefaultPackageVariant: TPackageVariant;
|
function GetDefaultPackageVariant: TPackageVariant;
|
||||||
procedure SetActivePackageVariantName(AValue: string);
|
procedure SetActivePackageVariantName(AValue: string);
|
||||||
procedure SetDefaultPackageVariantName(AValue: string);
|
procedure SetDefaultPackageVariantName(AValue: string);
|
||||||
protected
|
|
||||||
function GetOwner: TPersistent; override;
|
|
||||||
public
|
public
|
||||||
function Add(AName: String): TPackageVariant; overload; virtual;
|
function Add(AName: String): TPackageVariant; overload; virtual;
|
||||||
property Name: string read FName write FName;
|
property Name: string read FName write FName;
|
||||||
|
property MasterPackage: TPackage read FMasterPackage;
|
||||||
property DefaultPackageVariant: TPackageVariant read GetDefaultPackageVariant;
|
property DefaultPackageVariant: TPackageVariant read GetDefaultPackageVariant;
|
||||||
property ActivePackageVariant: TPackageVariant read GetActivePackageVariant;
|
property ActivePackageVariant: TPackageVariant read GetActivePackageVariant;
|
||||||
property DefaultPackageVariantName: string read FDefaultPackageVariantName write SetDefaultPackageVariantName;
|
property DefaultPackageVariantName: string read FDefaultPackageVariantName write SetDefaultPackageVariantName;
|
||||||
@ -752,7 +752,7 @@ Type
|
|||||||
Procedure GetArchiveFiles(List : TStrings; ACPU:TCPU; AOS : TOS); virtual;
|
Procedure GetArchiveFiles(List : TStrings; ACPU:TCPU; AOS : TOS); virtual;
|
||||||
Procedure GetArchiveSourceFiles(List : TStrings); virtual;
|
Procedure GetArchiveSourceFiles(List : TStrings); virtual;
|
||||||
Procedure GetManifest(Manifest : TStrings);
|
Procedure GetManifest(Manifest : TStrings);
|
||||||
function AddPackageVariant(AName: string; AIsInheritable: boolean): TPackageVariants;
|
Procedure AddPackageVariant(APackageVariant: TPackageVariants);
|
||||||
procedure ApplyPackageVariantToCompilerOptions(ACompilerOptions: tstrings);
|
procedure ApplyPackageVariantToCompilerOptions(ACompilerOptions: tstrings);
|
||||||
procedure SetDefaultPackageVariant;
|
procedure SetDefaultPackageVariant;
|
||||||
procedure LoadUnitConfigFromFile(Const AFileName: String);
|
procedure LoadUnitConfigFromFile(Const AFileName: String);
|
||||||
@ -1105,6 +1105,7 @@ Type
|
|||||||
FLogLevels : TVerboseLevels;
|
FLogLevels : TVerboseLevels;
|
||||||
FFPMakeOptionsString: string;
|
FFPMakeOptionsString: string;
|
||||||
FPackageVariantSettings: TStrings;
|
FPackageVariantSettings: TStrings;
|
||||||
|
FPackageVariants: TFPList;
|
||||||
Protected
|
Protected
|
||||||
Procedure Log(Level : TVerboseLevel; Const Msg : String);
|
Procedure Log(Level : TVerboseLevel; Const Msg : String);
|
||||||
Procedure CreatePackages; virtual;
|
Procedure CreatePackages; virtual;
|
||||||
@ -1125,6 +1126,7 @@ Type
|
|||||||
Constructor Create(AOwner : TComponent); virtual;
|
Constructor Create(AOwner : TComponent); virtual;
|
||||||
Destructor destroy; override;
|
Destructor destroy; override;
|
||||||
Function AddPackage(Const AName : String) : TPackage;
|
Function AddPackage(Const AName : String) : TPackage;
|
||||||
|
Function AddPackageVariant(AName: string; AIsInheritable: boolean): TPackageVariants;
|
||||||
Function Run : Boolean;
|
Function Run : Boolean;
|
||||||
Property FPMakeOptionsString: string read FFPMakeOptionsString;
|
Property FPMakeOptionsString: string read FFPMakeOptionsString;
|
||||||
Property BuildEngine : TBuildEngine Read FBuildEngine;
|
Property BuildEngine : TBuildEngine Read FBuildEngine;
|
||||||
@ -2212,11 +2214,6 @@ begin
|
|||||||
FDefaultPackageVariantName:=AValue;
|
FDefaultPackageVariantName:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPackageVariants.GetOwner: TPersistent;
|
|
||||||
begin
|
|
||||||
Result:=FOwner;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPackageVariants.GetActivePackageVariant: TPackageVariant;
|
function TPackageVariants.GetActivePackageVariant: TPackageVariant;
|
||||||
begin
|
begin
|
||||||
result := ItemByName(ActivePackageVariantName) as TPackageVariant;
|
result := ItemByName(ActivePackageVariantName) as TPackageVariant;
|
||||||
@ -2803,11 +2800,6 @@ begin
|
|||||||
FreeAndNil(FVersion);
|
FreeAndNil(FVersion);
|
||||||
FreeAndNil(FOptions);
|
FreeAndNil(FOptions);
|
||||||
FreeAndNil(FFlags);
|
FreeAndNil(FFlags);
|
||||||
for i := 0 to FPackageVariants.Count-1 do
|
|
||||||
begin
|
|
||||||
if TPackageVariants(FPackageVariants.Items[i]).Owner=Self then
|
|
||||||
TPackageVariants(FPackageVariants.Items[i]).Free;
|
|
||||||
end;
|
|
||||||
FreeAndNil(FPackageVariants);
|
FreeAndNil(FPackageVariants);
|
||||||
inherited destroy;
|
inherited destroy;
|
||||||
end;
|
end;
|
||||||
@ -3128,13 +3120,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPackage.AddPackageVariant(AName: string; AIsInheritable: boolean): TPackageVariants;
|
procedure TPackage.AddPackageVariant(APackageVariant: TPackageVariants);
|
||||||
begin
|
begin
|
||||||
result := TPackageVariants.Create(TPackageVariant);
|
if not assigned(APackageVariant.FMasterPackage) then
|
||||||
result.Name:=AName;
|
APackageVariant.FMasterPackage := Self;
|
||||||
result.FIsInheritable:=AIsInheritable;
|
FPackageVariants.Add(APackageVariant);
|
||||||
FPackageVariants.Add(result);
|
|
||||||
result.FOwner := Self;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackage.ApplyPackageVariantToCompilerOptions(ACompilerOptions: tstrings);
|
procedure TPackage.ApplyPackageVariantToCompilerOptions(ACompilerOptions: tstrings);
|
||||||
@ -3164,8 +3154,8 @@ begin
|
|||||||
Dictionary.AddVariable(PackageVariants.Name,PackageVariants.ActivePackageVariantName);
|
Dictionary.AddVariable(PackageVariants.Name,PackageVariants.ActivePackageVariantName);
|
||||||
SetUnitsOutputDir(FUnitsOutputDir+'$('+PackageVariants.name+')');
|
SetUnitsOutputDir(FUnitsOutputDir+'$('+PackageVariants.name+')');
|
||||||
SetPackageUnitInstallDir(FPackageUnitInstallDir+'$('+PackageVariants.Name+')');
|
SetPackageUnitInstallDir(FPackageUnitInstallDir+'$('+PackageVariants.Name+')');
|
||||||
// Do not add targets f the package is inerited
|
// Do not add targets f the package is inherited
|
||||||
if PackageVariants.GetOwner=Self then
|
if PackageVariants.MasterPackage=Self then
|
||||||
for j := 0 to PackageVariants.ActivePackageVariant.Targets.count -1 do
|
for j := 0 to PackageVariants.ActivePackageVariant.Targets.count -1 do
|
||||||
targets.add.assign(PackageVariants.ActivePackageVariant.Targets.items[j]);
|
targets.add.assign(PackageVariants.ActivePackageVariant.Targets.items[j]);
|
||||||
end;
|
end;
|
||||||
@ -3235,7 +3225,8 @@ begin
|
|||||||
else
|
else
|
||||||
AnIsInheritable:=false;
|
AnIsInheritable:=false;
|
||||||
PackageVariantsStr:=copy(PackageVariantsStr,k+1,length(PackageVariantsStr)-k);
|
PackageVariantsStr:=copy(PackageVariantsStr,k+1,length(PackageVariantsStr)-k);
|
||||||
pv := AddPackageVariant(PackageVarName, AnIsInheritable);
|
pv := Installer.AddPackageVariant(PackageVarName, AnIsInheritable);
|
||||||
|
AddPackageVariant(pv);
|
||||||
|
|
||||||
k := pos(',',PackageVariantsStr);
|
k := pos(',',PackageVariantsStr);
|
||||||
while k>0 do
|
while k>0 do
|
||||||
@ -3849,6 +3840,7 @@ end;
|
|||||||
constructor TCustomInstaller.Create(AOwner: TComponent);
|
constructor TCustomInstaller.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
FPackageVariantSettings := TStringList.Create;
|
FPackageVariantSettings := TStringList.Create;
|
||||||
|
FPackageVariants := TFPList.Create;
|
||||||
GlobalDictionary:=DictionaryClass.Create(Nil);
|
GlobalDictionary:=DictionaryClass.Create(Nil);
|
||||||
AnalyzeOptions;
|
AnalyzeOptions;
|
||||||
GlobalDictionary.AddVariable('BaseInstallDir',Defaults.BaseInstallDir);
|
GlobalDictionary.AddVariable('BaseInstallDir',Defaults.BaseInstallDir);
|
||||||
@ -3860,11 +3852,19 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
destructor TCustomInstaller.Destroy;
|
destructor TCustomInstaller.Destroy;
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
FreePackages;
|
FreePackages;
|
||||||
FreeAndNil(Defaults);
|
FreeAndNil(Defaults);
|
||||||
FreeAndNil(GlobalDictionary);
|
FreeAndNil(GlobalDictionary);
|
||||||
FreeAndNil(FPackageVariantSettings);
|
FreeAndNil(FPackageVariantSettings);
|
||||||
|
for i := 0 to FPackageVariants.Count-1 do
|
||||||
|
begin
|
||||||
|
if TPackageVariants(FPackageVariants.Items[i]).Owner=Self then
|
||||||
|
TPackageVariants(FPackageVariants.Items[i]).Free;
|
||||||
|
end;
|
||||||
|
FreeAndNil(FPackageVariants);
|
||||||
inherited destroy;
|
inherited destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3921,6 +3921,13 @@ begin
|
|||||||
result:=Packages.AddPackage(AName);
|
result:=Packages.AddPackage(AName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCustomInstaller.AddPackageVariant(AName: string; AIsInheritable: boolean): TPackageVariants;
|
||||||
|
begin
|
||||||
|
result := TPackageVariants.Create(TPackageVariant);
|
||||||
|
result.Name:=AName;
|
||||||
|
result.FIsInheritable:=AIsInheritable;
|
||||||
|
FPackageVariants.Add(result);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCustomInstaller.AnalyzeOptions;
|
procedure TCustomInstaller.AnalyzeOptions;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user