diff options
| author | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-11-28 12:26:06 +0000 |
|---|---|---|
| committer | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-11-28 12:26:06 +0000 |
| commit | c3d89a325156bf0b2004d2b1cee2323c543d5efc (patch) | |
| tree | b15f1cc85508259ea5bd6257487650f15c89f6ce /packages/fpmkunit/src | |
| parent | 77cb9aac522c70633ee8ed4b0544a1a47b63f867 (diff) | |
| download | fpc-c3d89a325156bf0b2004d2b1cee2323c543d5efc.tar.gz | |
* Fixed mem-leak
* Added BuildEngine.CmdRenameFile
* Added TPackage.IsFPMakeAddIn, when this flag is set, the package can be
needed when compiling fpmake.pp files.
* Added ability to override TCustomInstaller.Packages
* GetInstallFiles and GetInstallSourceFiles are virtual now
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16461 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fpmkunit/src')
| -rw-r--r-- | packages/fpmkunit/src/fpmkunit.pp | 59 |
1 files changed, 47 insertions, 12 deletions
diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp index 49a6b72ab7..9aaac18704 100644 --- a/packages/fpmkunit/src/fpmkunit.pp +++ b/packages/fpmkunit/src/fpmkunit.pp @@ -515,6 +515,7 @@ Type FBeforeCompile: TNotifyEvent; FBeforeInstall: TNotifyEvent; FBeforeManifest: TNotifyEvent; + FIsFPMakeAddIn: boolean; FUnitPath, FObjectPath, FIncludePath, @@ -562,8 +563,8 @@ Type Function GetUnitsOutputDir(ACPU:TCPU; AOS : TOS):String; Function GetBinOutputDir(ACPU:TCPU; AOS : TOS) : String; Procedure GetCleanFiles(List : TStrings; ACPU:TCPU; AOS : TOS); virtual; - procedure GetInstallFiles(List: TStrings;Types : TTargetTypes;ACPU:TCPU; AOS : TOS); - procedure GetInstallSourceFiles(List: TStrings;Types : TSourceTypes); + procedure GetInstallFiles(List: TStrings;Types : TTargetTypes;ACPU:TCPU; AOS : TOS); virtual; + procedure GetInstallSourceFiles(List: TStrings;Types : TSourceTypes); virtual; Procedure GetArchiveFiles(List : TStrings; ACPU:TCPU; AOS : TOS); virtual; Procedure GetManifest(Manifest : TStrings); Property Version : String Read GetVersion Write SetVersion; @@ -577,6 +578,7 @@ Type Property Description : String Read GetDescription Write FDescription; Property DescriptionFile : String Read FDescriptionFile Write FDescriptionFile; Property InstalledChecksum : Cardinal Read FInstalledChecksum Write FInstalledChecksum; + Property IsFPMakeAddIn: boolean read FIsFPMakeAddIn write FIsFPMakeAddIn; // Compiler options. Property OSes : TOSes Read FOSes Write FOSes; Property CPUs : TCPUs Read FCPUs Write FCPUs; @@ -784,6 +786,7 @@ Type Procedure CmdMoveFiles(List : TStrings; Const DestDir : String); Procedure CmdDeleteFiles(List : TStrings); Procedure CmdArchiveFiles(List : TStrings; Const ArchiveFile : String); + Procedure CmdRenameFile(SourceName, DestName : String); Procedure ExecuteCommands(Commands : TCommands; At : TCommandAt); // Dependency commands Function DependencyOK(ADependency : TDependency) : Boolean; @@ -852,6 +855,8 @@ Type Protected Procedure Log(Level : TVerboseLevel; Const Msg : String); Procedure CreatePackages; virtual; + Procedure FreePackages; virtual; + function GetPackages: TPackages; virtual; Procedure CheckPackages; virtual; Procedure CreateBuildEngine; virtual; Procedure Error(const Msg : String); @@ -870,7 +875,7 @@ Type Function AddPackage(Const AName : String) : TPackage; Function Run : Boolean; //files in package - Property Packages : TPackages Read FPackages; + Property Packages : TPackages Read GetPackages; Property RunMode : TRunMode Read FRunMode; Property ListMode : Boolean Read FListMode; end; @@ -1116,6 +1121,7 @@ Const KeyChecksum = 'Checksum'; KeyNeedLibC = 'NeedLibC'; KeyDepends = 'Depends'; + KeyAddIn = 'FPMakeAddIn'; {**************************************************************************** Helpers @@ -2293,6 +2299,7 @@ begin end; FreeAndNil(L2); NeedLibC:=Upcase(Values[KeyNeedLibC])='Y'; + IsFPMakeAddIn:=Upcase(Values[KeyAddIn])='Y'; end; Finally L.Free; @@ -2339,6 +2346,10 @@ begin Values[KeyNeedLibC]:='Y' else Values[KeyNeedLibC]:='N'; + if IsFPMakeAddIn then + Values[KeyAddIn]:='Y' + else + Values[KeyAddIn]:='N'; end; L.SaveToStream(F); Finally @@ -2826,11 +2837,16 @@ end; destructor TCustomInstaller.Destroy; begin + FreePackages; FreeAndNil(Defaults); FreeAndNil(Dictionary); inherited destroy; end; +function TCustomInstaller.GetPackages: TPackages; +begin + result := FPackages; +end; procedure TCustomInstaller.Log(Level: TVerboseLevel; const Msg: String); begin @@ -2841,7 +2857,12 @@ end; procedure TCustomInstaller.CreatePackages; begin - FPAckages:=TPackages.Create(TPackage); + FPackages:=TPackages.Create(TPackage); +end; + +procedure TCustomInstaller.FreePackages; +begin + FreeAndNil(FPackages); end; @@ -2868,7 +2889,7 @@ end; Function TCustomInstaller.AddPackage(const AName: String) : TPackage; begin - result:=FPackages.AddPackage(AName); + result:=Packages.AddPackage(AName); end; @@ -3090,40 +3111,40 @@ end; procedure TCustomInstaller.Compile(Force: Boolean); begin FBuildEngine.ForceCompile:=Force; - FBuildEngine.Compile(FPackages); + FBuildEngine.Compile(Packages); Log(vlWarning,SWarnDone); end; procedure TCustomInstaller.Clean; begin - BuildEngine.Clean(FPackages); + BuildEngine.Clean(Packages); end; procedure TCustomInstaller.Install; begin - BuildEngine.Install(FPackages); + BuildEngine.Install(Packages); end; procedure TCustomInstaller.Archive; begin // Force generation of manifest.xml, this is required for the repository - BuildEngine.Manifest(FPackages); - BuildEngine.Archive(FPackages); + BuildEngine.Manifest(Packages); + BuildEngine.Archive(Packages); end; procedure TCustomInstaller.Manifest; begin - BuildEngine.Manifest(FPackages); + BuildEngine.Manifest(Packages); end; procedure TCustomInstaller.CheckPackages; begin - If (FPackages.Count=0) then + If (Packages.Count=0) then Error(SErrNoPackagesDefined); // Check for other obvious errors ? end; @@ -3466,6 +3487,20 @@ begin end; end; +procedure TBuildEngine.CmdRenameFile(SourceName, DestName: String); +var + Args: string; +begin + If (Defaults.Move<>'') then + begin + Args:=SourceName; + Args:=Args+' '+DestName; + ExecuteCommand(Defaults.Move,Args); + end + else + SysMoveFile(SourceName,DestName); +end; + Function TBuildEngine.FileNewer(const Src,Dest : String) : Boolean; Var |
