mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2026-01-07 20:30:28 +01:00
IDE: build all: compile all packages with -B, lazbuild: -B and -r: apply -B to all packages
git-svn-id: trunk@33175 -
This commit is contained in:
parent
ce82b57b84
commit
5c8ad97065
@ -478,6 +478,7 @@ var
|
||||
Dependency: TPkgDependency;
|
||||
OldDependency: TPkgDependency;
|
||||
CurResult: TModalResult;
|
||||
CompilePolicy: TPackageUpdatePolicy;
|
||||
begin
|
||||
Result:=false;
|
||||
PackageGraph.BeginUpdate(false);
|
||||
@ -498,8 +499,11 @@ begin
|
||||
PackageGraph.FirstAutoInstallDependency);
|
||||
|
||||
// compile all auto install dependencies
|
||||
CompilePolicy:=pupAsNeeded;
|
||||
if BuildRecursive and BuildAll then
|
||||
CompilePolicy:=pupOnRebuildingAll;
|
||||
CurResult:=PackageGraph.CompileRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,false,[pupAsNeeded]);
|
||||
PackageGraph.FirstAutoInstallDependency,false,CompilePolicy);
|
||||
if CurResult<>mrOk then exit;
|
||||
|
||||
finally
|
||||
@ -591,6 +595,7 @@ var
|
||||
TargetExeName: String;
|
||||
TargetExeDir: String;
|
||||
NewBuildMode: TProjectBuildMode;
|
||||
CompilePolicy: TPackageUpdatePolicy;
|
||||
begin
|
||||
Result:=false;
|
||||
CloseProject(Project1);
|
||||
@ -626,10 +631,13 @@ begin
|
||||
PackageGraph.BeginUpdate(false);
|
||||
try
|
||||
// automatically compile required packages
|
||||
CompilePolicy:=pupAsNeeded;
|
||||
if BuildRecursive and BuildAll then
|
||||
CompilePolicy:=pupOnRebuildingAll;
|
||||
if PackageGraph.CompileRequiredPackages(nil,
|
||||
Project1.FirstRequiredDependency,
|
||||
not (pfUseDesignTimePackages in Project1.Flags),
|
||||
[pupAsNeeded])<>mrOk
|
||||
CompilePolicy)<>mrOk
|
||||
then
|
||||
Error(ErrorBuildFailed,'Project dependencies of '+AFilename);
|
||||
finally
|
||||
|
||||
@ -12164,6 +12164,7 @@ var
|
||||
InheritedOptionStrings: TInheritedCompOptsStrings;
|
||||
CompiledUnitExt: String;
|
||||
FPCVersion, FPCRelease, FPCPatch: integer;
|
||||
PkgCompileFlags: TPkgCompileFlags;
|
||||
begin
|
||||
if ToolStatus<>itNone then begin
|
||||
MessageDlg(lisNotNow,
|
||||
@ -12185,8 +12186,10 @@ begin
|
||||
MainBuildBoss.SetBuildTargetIDE;
|
||||
|
||||
// clean up
|
||||
PkgCompileFlags:=[];
|
||||
if (not (blfDontCleanAll in Flags))
|
||||
and (BuildLazProfiles.Current.IdeBuildMode=bmCleanAllBuild) then begin
|
||||
PkgCompileFlags:=PkgCompileFlags+[pcfCompileDependenciesClean];
|
||||
SourceEditorManager.ClearErrorLines;
|
||||
Result:=BuildLazarus(BuildLazProfiles,ExternalTools,GlobalMacroList,
|
||||
'',EnvironmentOptions.GetCompilerFilename,
|
||||
@ -12198,7 +12201,7 @@ begin
|
||||
end;
|
||||
|
||||
// compile auto install static packages
|
||||
Result:=PkgBoss.DoCompileAutoInstallPackages([],false);
|
||||
Result:=PkgBoss.DoCompileAutoInstallPackages(PkgCompileFlags,false);
|
||||
if Result<>mrOk then begin
|
||||
DebugLn('TMainIDE.DoBuildLazarus: Compile AutoInstall Packages failed.');
|
||||
exit;
|
||||
|
||||
@ -44,8 +44,8 @@ unit PackageDefs;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, contnrs, LCLProc, LCLType, LResources, Graphics, Forms,
|
||||
FileProcs, FileUtil, AVL_Tree, LazConfigStorage,
|
||||
Classes, SysUtils, contnrs, typinfo, LCLProc, LCLType, LResources, Graphics,
|
||||
Forms, FileProcs, FileUtil, AVL_Tree, LazConfigStorage,
|
||||
CodeToolsCfgScript, DefineTemplates, CodeToolManager, Laz_XMLCfg, CodeCache,
|
||||
PropEdits, LazIDEIntf, MacroIntf, PackageIntf, IDEOptionsIntf,
|
||||
EditDefineTree, CompilerOptions, CompOptsModes, IDEOptionDefs,
|
||||
@ -863,9 +863,6 @@ const
|
||||
'lpfAutoIncrementVersionOnBuild', 'lpfModified',
|
||||
'lpfNeeded', 'lpfVisited', 'lpfDestroying', 'lpfLoading', 'lpfSkipSaving',
|
||||
'lpfCircle');
|
||||
PackageUpdatePolicies: array[TPackageUpdatePolicy] of string = (
|
||||
'pupManually', 'pupOnRebuildingAll', 'pupAsNeeded'
|
||||
);
|
||||
AutoUpdateNames: array[TPackageUpdatePolicy] of string = (
|
||||
'Manually', 'OnRebuildingAll', 'AsNeeded'
|
||||
);
|
||||
@ -945,6 +942,8 @@ procedure PkgVersionLoadFromXMLConfig(Version: TPkgVersion;
|
||||
var
|
||||
Package1: TLazPackage; // don't use it - only for options dialog
|
||||
|
||||
function dbgs(p: TPackageUpdatePolicy): string; overload;
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
@ -1412,6 +1411,11 @@ begin
|
||||
PkgVersionLoadFromXMLConfig(Version,XMLConfig,Path+'Version/',FileVersion);
|
||||
end;
|
||||
|
||||
function dbgs(p: TPackageUpdatePolicy): string;
|
||||
begin
|
||||
Result:=GetEnumName(TypeInfo(p),ord(p));
|
||||
end;
|
||||
|
||||
function IndexOfDependencyInList(First: TPkgDependency;
|
||||
ListType: TPkgDependencyList; FindDependency: TPkgDependency): integer;
|
||||
var
|
||||
|
||||
@ -257,7 +257,7 @@ type
|
||||
function GetAutoCompilationOrder(APackage: TLazPackage;
|
||||
FirstDependency: TPkgDependency;
|
||||
SkipDesignTimePackages: boolean;
|
||||
Policies: TPackageUpdatePolicies): TFPList;
|
||||
Policy: TPackageUpdatePolicy): TFPList;
|
||||
function GetBrokenDependenciesWhenChangingPkgID(APackage: TLazPackage;
|
||||
const NewName: string; NewVersion: TPkgVersion): TFPList;
|
||||
procedure GetPackagesChangedOnDisk(var ListOfPackages: TFPList);
|
||||
@ -312,7 +312,7 @@ type
|
||||
function CompileRequiredPackages(APackage: TLazPackage;
|
||||
FirstDependency: TPkgDependency;
|
||||
SkipDesignTimePackages: boolean;
|
||||
Policies: TPackageUpdatePolicies): TModalResult;
|
||||
Policy: TPackageUpdatePolicy): TModalResult;
|
||||
function CompilePackage(APackage: TLazPackage; Flags: TPkgCompileFlags;
|
||||
ShowAbort: boolean): TModalResult;
|
||||
function ConvertPackageRSTFiles(APackage: TLazPackage): TModalResult;
|
||||
@ -2949,10 +2949,10 @@ end;
|
||||
|
||||
function TLazPackageGraph.GetAutoCompilationOrder(APackage: TLazPackage;
|
||||
FirstDependency: TPkgDependency; SkipDesignTimePackages: boolean;
|
||||
Policies: TPackageUpdatePolicies): TFPList;
|
||||
Policy: TPackageUpdatePolicy): TFPList;
|
||||
// Returns all required auto update packages, including indirect requirements.
|
||||
// The packages will be in topological order, with the package that should be
|
||||
// compiled first at the end.
|
||||
// compiled first at 0.
|
||||
|
||||
procedure GetTopologicalOrder(Dependency: TPkgDependency);
|
||||
var
|
||||
@ -2963,7 +2963,7 @@ function TLazPackageGraph.GetAutoCompilationOrder(APackage: TLazPackage;
|
||||
RequiredPackage:=Dependency.RequiredPackage;
|
||||
if not (lpfVisited in RequiredPackage.Flags) then begin
|
||||
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfVisited];
|
||||
if RequiredPackage.AutoUpdate in Policies then begin
|
||||
if ord(RequiredPackage.AutoUpdate)>=ord(Policy) then begin
|
||||
// add first all needed packages
|
||||
GetTopologicalOrder(RequiredPackage.FirstRequiredDependency);
|
||||
// then add this package
|
||||
@ -3632,24 +3632,28 @@ end;
|
||||
|
||||
function TLazPackageGraph.CompileRequiredPackages(APackage: TLazPackage;
|
||||
FirstDependency: TPkgDependency; SkipDesignTimePackages: boolean;
|
||||
Policies: TPackageUpdatePolicies): TModalResult;
|
||||
Policy: TPackageUpdatePolicy): TModalResult;
|
||||
var
|
||||
AutoPackages: TFPList;
|
||||
i: Integer;
|
||||
Flags: TPkgCompileFlags;
|
||||
begin
|
||||
{$IFDEF VerbosePkgCompile}
|
||||
debugln('TLazPackageGraph.CompileRequiredPackages A ');
|
||||
debugln('TLazPackageGraph.CompileRequiredPackages A ',dbgs(Policy));
|
||||
{$ENDIF}
|
||||
AutoPackages:=PackageGraph.GetAutoCompilationOrder(APackage,
|
||||
FirstDependency,SkipDesignTimePackages,Policies);
|
||||
FirstDependency,SkipDesignTimePackages,Policy);
|
||||
if AutoPackages<>nil then begin
|
||||
//DebugLn('TLazPackageGraph.CompileRequiredPackages B Count=',IntToStr(AutoPackages.Count));
|
||||
try
|
||||
Flags:=[pcfDoNotCompileDependencies,pcfDoNotSaveEditorFiles];
|
||||
if Policy=pupAsNeeded then
|
||||
Flags:=Flags+[pcfOnlyIfNeeded]
|
||||
else
|
||||
Flags:=Flags+[pcfCleanCompile];
|
||||
i:=0;
|
||||
while i<AutoPackages.Count do begin
|
||||
Result:=CompilePackage(TLazPackage(AutoPackages[i]),
|
||||
[pcfDoNotCompileDependencies,pcfOnlyIfNeeded,
|
||||
pcfDoNotSaveEditorFiles],false);
|
||||
Result:=CompilePackage(TLazPackage(AutoPackages[i]),Flags,false);
|
||||
if Result<>mrOk then exit;
|
||||
inc(i);
|
||||
end;
|
||||
@ -3684,7 +3688,7 @@ var
|
||||
CompilerParams: String;
|
||||
SrcFilename: String;
|
||||
EffectiveCompilerParams: String;
|
||||
CompilePolicies: TPackageUpdatePolicies;
|
||||
CompilePolicy: TPackageUpdatePolicy;
|
||||
BlockBegan: Boolean;
|
||||
NeedBuildAllFlag: Boolean;
|
||||
CompileResult, MsgResult: TModalResult;
|
||||
@ -3704,11 +3708,12 @@ begin
|
||||
try
|
||||
// automatically compile required packages
|
||||
if not (pcfDoNotCompileDependencies in Flags) then begin
|
||||
CompilePolicies:=[pupAsNeeded];
|
||||
if pcfCompileDependenciesClean in Flags then
|
||||
Include(CompilePolicies,pupOnRebuildingAll);
|
||||
CompilePolicy:=pupOnRebuildingAll
|
||||
else
|
||||
CompilePolicy:=pupAsNeeded;
|
||||
Result:=CompileRequiredPackages(APackage,nil,
|
||||
pcfSkipDesignTimePackages in Flags,CompilePolicies);
|
||||
pcfSkipDesignTimePackages in Flags,CompilePolicy);
|
||||
if Result<>mrOk then begin
|
||||
DebugLn(['TLazPackageGraph.CompilePackage CompileRequiredPackages failed: ',APackage.IDAsString]);
|
||||
exit;
|
||||
|
||||
@ -2517,6 +2517,8 @@ end;
|
||||
|
||||
function TPkgManager.DoCompileProjectDependencies(AProject: TProject;
|
||||
Flags: TPkgCompileFlags): TModalResult;
|
||||
var
|
||||
CompilePolicy: TPackageUpdatePolicy;
|
||||
begin
|
||||
// check graph for circles and broken dependencies
|
||||
if not (pcfDoNotCompileDependencies in Flags) then begin
|
||||
@ -2536,10 +2538,13 @@ begin
|
||||
try
|
||||
// automatically compile required packages
|
||||
if not (pcfDoNotCompileDependencies in Flags) then begin
|
||||
CompilePolicy:=pupAsNeeded;
|
||||
if pcfCompileDependenciesClean in Flags then
|
||||
CompilePolicy:=pupOnRebuildingAll;
|
||||
Result:=PackageGraph.CompileRequiredPackages(nil,
|
||||
AProject.FirstRequiredDependency,
|
||||
not (pfUseDesignTimePackages in AProject.Flags),
|
||||
[pupAsNeeded]);
|
||||
CompilePolicy);
|
||||
if Result<>mrOk then exit;
|
||||
end;
|
||||
finally
|
||||
@ -3963,6 +3968,7 @@ var
|
||||
OldDependency: TPkgDependency;
|
||||
Dependencies: TPkgDependency;
|
||||
AutoRemove: Boolean;
|
||||
CompilePolicy: TPackageUpdatePolicy;
|
||||
begin
|
||||
PackageGraph.BeginUpdate(false);
|
||||
Dependencies:=PackageGraph.FirstAutoInstallDependency;
|
||||
@ -4025,8 +4031,11 @@ begin
|
||||
end;
|
||||
|
||||
// compile all auto install dependencies
|
||||
CompilePolicy:=pupAsNeeded;
|
||||
if pcfCompileDependenciesClean in Flags then
|
||||
CompilePolicy:=pupOnRebuildingAll;
|
||||
Result:=PackageGraph.CompileRequiredPackages(nil,Dependencies,false,
|
||||
[pupAsNeeded]);
|
||||
CompilePolicy);
|
||||
if Result<>mrOk then exit;
|
||||
|
||||
finally
|
||||
|
||||
Loading…
Reference in New Issue
Block a user