implemented delete ppu files on clean package

git-svn-id: trunk@6737 -
This commit is contained in:
mattias 2005-02-04 22:59:28 +00:00
parent ab8b283f9b
commit 506413781c
3 changed files with 43 additions and 6 deletions

View File

@ -1160,7 +1160,7 @@ function TBuildLazarusOptions.CompiledUnitExt(FPCVersion, FPCRelease: integer
): string;
begin
Result:=GetDefaultCompiledUnitExt(FPCVersion,FPCRelease);
if (AnsiCompareText(TargetOS,'win32')=0)
if (CompareText(TargetOS,'win32')=0)
and (FPCVersion=1) and (FPCRelease=0) then
Result:='.ppw'
else

View File

@ -64,6 +64,8 @@ function CheckFileIsWritable(const Filename: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
function ForceDirectoryInteractive(Directory: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
function DeleteFileInteractive(const Filename: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
function SaveStringToFile(const Filename, Content: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
@ -230,6 +232,21 @@ begin
Result:=mrOk;
end;
function DeleteFileInteractive(const Filename: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
begin
repeat
Result:=mrOk;
if not FileExists(Filename) then exit;
if not DeleteFile(Filename) then begin
Result:=MessageDlg(lisDeleteFileFailed,
Format(lisPkgMangUnableToDeleteFile, ['"', Filename, '"']),
mtError,[mbCancel,mbRetry],0);
if Result<>mrRetry then exit;
end;
until false;
end;
function SaveStringToFile(const Filename, Content: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
var

View File

@ -152,7 +152,8 @@ type
function CheckPackageGraphForCompilation(APackage: TLazPackage;
FirstDependency: TPkgDependency;
const Directory: string): TModalResult;
function DoPreparePackageOutputDirectory(APackage: TLazPackage): TModalResult;
function DoPreparePackageOutputDirectory(APackage: TLazPackage;
CleanUp: boolean): TModalResult;
function DoSavePackageCompiledState(APackage: TLazPackage;
const CompilerFilename, CompilerParams: string): TModalResult;
function DoLoadPackageCompiledState(APackage: TLazPackage;
@ -1137,12 +1138,17 @@ begin
Result:=mrOk;
end;
function TPkgManager.DoPreparePackageOutputDirectory(APackage: TLazPackage
): TModalResult;
function TPkgManager.DoPreparePackageOutputDirectory(APackage: TLazPackage;
CleanUp: boolean): TModalResult;
var
OutputDir: String;
StateFile: String;
PkgSrcDir: String;
i: Integer;
CurFile: TPkgFile;
CompiledUnitExt: String;
FPCVersion, FPCRelease, FPCPatch: integer;
OutputFileName: String;
begin
OutputDir:=APackage.GetOutputDirectory;
StateFile:=APackage.GetStateFilename;
@ -1175,6 +1181,20 @@ begin
mtError,[mbCancel,mbAbort],0);
exit;
end;
// clean up if wanted
if CleanUp then begin
CodeToolBoss.GetFPCVersionForDirectory(PkgSrcDir,
FPCVersion,FPCRelease,FPCPatch);
CompiledUnitExt:=GetDefaultCompiledUnitExt(FPCVersion,FPCRelease);
for i:=0 to APackage.FileCount-1 do begin
CurFile:=APackage.Files[i];
if not (CurFile.FileType in PkgFileUnitTypes) then continue;
OutputFileName:=AppendPathDelim(OutputDir)+CurFile.UnitName+CompiledUnitExt;
Result:=DeleteFileInteractive(OutputFileName,[mbIgnore,mbAbort]);
if Result in [mrCancel,mrAbort] then exit;
end;
end;
Result:=mrOk;
end;
@ -2322,7 +2342,7 @@ begin
CompilePolicies:=[pupAsNeeded];
if pcfCompileDependenciesClean in Flags then
Include(CompilePolicies,pupOnRebuildingAll);
Result:=CompileRequiredPackages(APackage,nil,Globals,[pupAsNeeded]);
Result:=CompileRequiredPackages(APackage,nil,Globals,CompilePolicies);
if Result<>mrOk then exit;
end;
@ -2349,7 +2369,7 @@ begin
MessagesView.BeginBlock;
try
Result:=DoPreparePackageOutputDirectory(APackage);
Result:=DoPreparePackageOutputDirectory(APackage,pcfCleanCompile in Flags);
if Result<>mrOk then begin
DebugLn('TPkgManager.DoCompilePackage DoPreparePackageOutputDirectory failed');
exit;