From 54ae0f7d644216b2eedb638c0d998679eb435639 Mon Sep 17 00:00:00 2001 From: pierre Date: Sat, 23 Feb 2019 15:41:44 +0000 Subject: [PATCH] * Use DupIgnore for TBuildEngine.Clean list of files to delete + Generate list of remaining files and call CmdDeleteFiles git-svn-id: trunk@41418 - --- packages/fpmkunit/src/fpmkunit.pp | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/fpmkunit/src/fpmkunit.pp b/packages/fpmkunit/src/fpmkunit.pp index aa57bdf4a0..e2ebe0c7bb 100644 --- a/packages/fpmkunit/src/fpmkunit.pp +++ b/packages/fpmkunit/src/fpmkunit.pp @@ -8016,19 +8016,21 @@ end; procedure TBuildEngine.Clean(APackage: TPackage; ACPU: TCPU; AOS: TOS); Var - List : TStringList; + List,List2 : TStringList; DirectoryList : TStringList; RemainingList : TStrings; i : longint; begin - List:=TStringList.Create; + List:=TUnsortedDuplicatesStringList.Create; + List.Duplicates:=DupIgnore; try List.Add(APackage.GetUnitConfigOutputFilename(ACPU,AOS)); APackage.GetCleanFiles(List,ACPU,AOS); if (List.Count>0) then begin CmdDeleteFiles(List); - DirectoryList := TStringList.Create; + DirectoryList:=TUnsortedDuplicatesStringList.Create; + DirectoryList.Duplicates:=DupIgnore; try GetDirectoriesFromFilelist(List,DirectoryList); CmdRemoveDirs(DirectoryList); @@ -8049,9 +8051,18 @@ begin Installer.Log(vlWarning,Format(SWarnRemovedNonEmptyDirectory,[APackage.Directory+APackage.GetBinOutputDir(ACPU,AOS)])); DirectoryList.Add(APackage.GetBinOutputDir(ACPU,AOS)); RemainingList := TStringList.Create; + List2:=TStringList.Create; SearchFiles(AllFilesMask, APackage.GetBinOutputDir(ACPU,AOS), true, RemainingList); for i:=0 to RemainingList.Count-1 do - Installer.log(vlDebug,format('File %s still present',[RemainingList[i]])); + begin + if ExtractFileExt(Remaininglist[i])=PPUExt then + Installer.log(vlDebug,format('File %s still present, add corresponding entry to fpmake',[RemainingList[i]])) + else + Installer.log(vlDebug,format('File %s still present',[RemainingList[i]])); + List2.Add(IncludeTrailingPathDelimiter(APackage.GetUnitsOutputDir(ACPU,AOS))+Remaininglist[i]); + end; + CmdDeleteFiles(List2); + List2.Free; RemainingList.Free; CmdRemoveTrees(DirectoryList); DirectoryList.Clear; @@ -8062,9 +8073,18 @@ begin Installer.Log(vlWarning,Format(SWarnRemovedNonEmptyDirectory,[APackage.Directory+APackage.GetUnitsOutputDir(ACPU,AOS)])); DirectoryList.Add(APackage.GetUnitsOutputDir(ACPU,AOS)); RemainingList := TStringList.Create; + List2:=TStringList.Create; SearchFiles(AllFilesMask, APackage.GetUnitsOutputDir(ACPU,AOS), true, RemainingList); for i:=0 to RemainingList.Count-1 do - Installer.log(vlDebug,format('File %s still present',[RemainingList[i]])); + begin + if ExtractFileExt(Remaininglist[i])=PPUExt then + Installer.log(vlDebug,format('File %s still present, add corresponding entry to fpmake',[RemainingList[i]])) + else + Installer.log(vlDebug,format('File %s still present',[RemainingList[i]])); + List2.Add(IncludeTrailingPathDelimiter(APackage.GetUnitsOutputDir(ACPU,AOS))+RemainingList[i]); + end; + CmdDeleteFiles(List2); + List2.free; RemainingList.Free; CmdRemoveTrees(DirectoryList); DirectoryList.Clear;