mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-19 09:09:32 +02:00
implemented delete ppu files on clean package
git-svn-id: trunk@6737 -
This commit is contained in:
parent
ab8b283f9b
commit
506413781c
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user