mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-09 01:27:39 +01:00
IDE: InstallPackages: add all src base packages
This commit is contained in:
parent
e9cf352190
commit
f18e10ec0e
@ -1404,7 +1404,7 @@ begin
|
||||
LazDir:=EnvironmentOptions.GetParsedLazarusDirectory;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,PkgList,[pirSkipDesignTimeOnly]);
|
||||
PackageGraph.FirstInstallDependency,PkgList,[pirSkipDesignTimeOnly]);
|
||||
|
||||
// add detail nodes
|
||||
if PkgList<>nil then
|
||||
|
||||
@ -372,7 +372,7 @@ var
|
||||
begin
|
||||
ReqFlags:=[];
|
||||
if Target=IDEAsTarget then begin
|
||||
Result:=GetList(LazarusIDE,PackageGraph.FirstAutoInstallDependency,ReqFlags);
|
||||
Result:=GetList(LazarusIDE,PackageGraph.FirstInstallDependency,ReqFlags);
|
||||
end else if Target=ProjectAsTarget(Project1) then begin
|
||||
if not (pfUseDesignTimePackages in Project1.Flags) then
|
||||
Include(ReqFlags,pirSkipDesignTimeOnly);
|
||||
|
||||
@ -663,7 +663,7 @@ begin
|
||||
Result:=false;
|
||||
PackageGraph.BeginUpdate(false);
|
||||
try
|
||||
Dependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
Dependency:=PackageGraph.FirstInstallDependency;
|
||||
while Dependency<>nil do begin
|
||||
OldDependency:=Dependency;
|
||||
Dependency:=Dependency.NextRequiresDependency;
|
||||
@ -676,14 +676,14 @@ begin
|
||||
|
||||
// check consistency
|
||||
CheckPackageGraphForCompilation(nil,
|
||||
PackageGraph.FirstAutoInstallDependency);
|
||||
PackageGraph.FirstInstallDependency);
|
||||
|
||||
// compile all auto install dependencies
|
||||
CompilePolicy:=pupAsNeeded;
|
||||
if (BuildRecursive and BuildAll) or Clean then
|
||||
CompilePolicy:=pupOnRebuildingAll;
|
||||
CurResult:=PackageGraph.CompileRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,false,CompilePolicy);
|
||||
PackageGraph.FirstInstallDependency,false,CompilePolicy);
|
||||
if CurResult<>mrOk then exit;
|
||||
|
||||
finally
|
||||
|
||||
@ -429,7 +429,7 @@ type
|
||||
function WriteFpmake(APackage: TLazPackage): TModalResult;
|
||||
public
|
||||
// installed packages
|
||||
FirstAutoInstallDependency: TPkgDependency;
|
||||
FirstInstallDependency: TPkgDependency;
|
||||
function ParseBasePackages(Verbose: boolean): boolean; // read list from current sources
|
||||
function SrcBasePackagesNeedLazbuild: string; // check if compiled-in and source base pkg list differ that a built using make is needed
|
||||
procedure LoadStaticBasePackages;
|
||||
@ -2255,14 +2255,14 @@ procedure TLazPackageGraph.LoadStaticBasePackages;
|
||||
Dependency: TPkgDependency;
|
||||
Quiet: Boolean;
|
||||
begin
|
||||
if FindDependencyByNameInList(FirstAutoInstallDependency,pddRequires,PkgName)<>nil
|
||||
if FindDependencyByNameInList(FirstInstallDependency,pddRequires,PkgName)<>nil
|
||||
then
|
||||
exit;
|
||||
Dependency:=TPkgDependency.Create;
|
||||
Dependency.Owner:=Self;
|
||||
Dependency.PackageName:=PkgName;
|
||||
Dependency.DependencyType:=pdtLazarus;
|
||||
Dependency.AddToList(FirstAutoInstallDependency,pddRequires);
|
||||
Dependency.AddToList(FirstInstallDependency,pddRequires);
|
||||
Quiet:=false;
|
||||
OpenInstalledDependency(Dependency,pitStatic,Quiet);
|
||||
end;
|
||||
@ -2285,7 +2285,7 @@ begin
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
PackageName:=PkgList[i];
|
||||
if not IsValidPkgName(PackageName) then continue;
|
||||
Dependency:=FindDependencyByNameInList(FirstAutoInstallDependency,
|
||||
Dependency:=FindDependencyByNameInList(FirstInstallDependency,
|
||||
pddRequires,PackageName);
|
||||
//DebugLn('TLazPackageGraph.LoadAutoInstallPackages ',dbgs(Dependency),' ',PackageName);
|
||||
if Dependency<>nil then continue;
|
||||
@ -2293,7 +2293,7 @@ begin
|
||||
Dependency.Owner:=Self;
|
||||
Dependency.DependencyType:=pdtLazarus;
|
||||
Dependency.PackageName:=PackageName;
|
||||
Dependency.AddToList(FirstAutoInstallDependency,pddRequires);
|
||||
Dependency.AddToList(FirstInstallDependency,pddRequires);
|
||||
if OpenDependency(Dependency,false)<>lprSuccess then begin
|
||||
IDEMessageDialog(lisPkgMangUnableToLoadPackage,
|
||||
Format(lisPkgMangUnableToOpenThePackage, [PackageName, LineEnding]),
|
||||
@ -2309,7 +2309,7 @@ end;
|
||||
procedure TLazPackageGraph.SortAutoInstallDependencies;
|
||||
begin
|
||||
// sort install dependencies, so that lower packages come first
|
||||
SortDependencyListTopologicallyOld(PackageGraph.FirstAutoInstallDependency,
|
||||
SortDependencyListTopologicallyOld(PackageGraph.FirstInstallDependency,
|
||||
false);
|
||||
end;
|
||||
|
||||
@ -2333,7 +2333,7 @@ begin
|
||||
Result:='';
|
||||
// get all required packages
|
||||
PkgList:=nil;
|
||||
GetAllRequiredPackages(nil,FirstAutoInstallDependency,PkgList,[pirCompileOrder]);
|
||||
GetAllRequiredPackages(nil,FirstInstallDependency,PkgList,[pirCompileOrder]);
|
||||
if PkgList=nil then exit;
|
||||
// get all usage options
|
||||
AddOptionsList:=GetUsageOptionsList(PkgList);
|
||||
@ -2369,7 +2369,7 @@ begin
|
||||
// create auto install package list for the Lazarus uses section
|
||||
PkgList:=nil;
|
||||
try
|
||||
GetAllRequiredPackages(nil,FirstAutoInstallDependency,PkgList,[pirCompileOrder]);
|
||||
GetAllRequiredPackages(nil,FirstInstallDependency,PkgList,[pirCompileOrder]);
|
||||
StaticPackagesInc:='// In case of duplicate identifier errors, see lazarus.pp'+LineEnding;
|
||||
if PkgList<>nil then begin
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
@ -2413,11 +2413,11 @@ procedure TLazPackageGraph.FreeAutoInstallDependencies;
|
||||
var
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
while Assigned(FirstAutoInstallDependency) do
|
||||
while Assigned(FirstInstallDependency) do
|
||||
begin
|
||||
Dependency:=FirstAutoInstallDependency;
|
||||
Dependency:=FirstInstallDependency;
|
||||
Dependency.RequiredPackage:=nil;
|
||||
Dependency.RemoveFromList(FirstAutoInstallDependency,pddRequires);
|
||||
Dependency.RemoveFromList(FirstInstallDependency,pddRequires);
|
||||
Dependency.Free;
|
||||
end;
|
||||
end;
|
||||
@ -5194,7 +5194,7 @@ begin
|
||||
if IsCompiledInBasePackage(PkgName) then
|
||||
continue;
|
||||
// new base package
|
||||
if FindDependencyByNameInList(FirstAutoInstallDependency,pddRequires,PkgName)<>nil
|
||||
if FindDependencyByNameInList(FirstInstallDependency,pddRequires,PkgName)<>nil
|
||||
then
|
||||
exit; // it will be installed anyway -> ok
|
||||
// the sources need a base package, that this IDE will not install
|
||||
|
||||
@ -320,7 +320,7 @@ begin
|
||||
InstallPkgList:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,InstallPkgList,[]);
|
||||
PackageGraph.FirstInstallDependency,InstallPkgList,[]);
|
||||
i:=0;
|
||||
Dependency:=Pkg.FirstRequiredDependency;
|
||||
while Dependency<>nil do begin
|
||||
@ -536,7 +536,7 @@ begin
|
||||
for i:=0 to Cnt-1 do
|
||||
fSortedPackages.Add(PackageGraph[i]);
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,InstallPkgList,[]);
|
||||
PackageGraph.FirstInstallDependency,InstallPkgList,[]);
|
||||
// rebuild the TreeView
|
||||
PkgTreeView.BeginUpdate;
|
||||
// save old expanded state
|
||||
@ -608,7 +608,7 @@ begin
|
||||
for i:=0 to Cnt-1 do
|
||||
fSortedPackages.Add(PackageGraph[i]);
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,InstallPkgList,[]);
|
||||
PackageGraph.FirstInstallDependency,InstallPkgList,[]);
|
||||
|
||||
// save old selection
|
||||
OldSelected:='';
|
||||
@ -643,7 +643,7 @@ begin
|
||||
AddEdges(ProjectNode,Project1.FirstRequiredDependency);
|
||||
|
||||
// add IDE dependencies
|
||||
AddEdges(IDENode,PackageGraph.FirstAutoInstallDependency);
|
||||
AddEdges(IDENode,PackageGraph.FirstInstallDependency);
|
||||
|
||||
// add package dependencies
|
||||
AVLNode:=fSortedPackages.FindLowest;
|
||||
|
||||
@ -461,7 +461,7 @@ begin
|
||||
RebuildIDE:=false;
|
||||
PkgIDList:=nil;
|
||||
try
|
||||
if ShowEditInstallPkgsDialog(PackageGraph.FirstAutoInstallDependency,
|
||||
if ShowEditInstallPkgsDialog(PackageGraph.FirstInstallDependency,
|
||||
@CheckInstallPackageListHandler,PkgIDList,RebuildIDE)<>mrOk
|
||||
then exit;
|
||||
|
||||
@ -1514,7 +1514,7 @@ var
|
||||
sl: TStringListUTF8Fast;
|
||||
begin
|
||||
sl:=TStringListUTF8Fast.Create;
|
||||
Dependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
Dependency:=PackageGraph.FirstInstallDependency;
|
||||
while Dependency<>nil do begin
|
||||
if (Dependency.LoadPackageResult=lprSuccess)
|
||||
and (not Dependency.RequiredPackage.Missing)
|
||||
@ -1584,10 +1584,10 @@ begin
|
||||
Result:=NewDependency.RequiredPackage;
|
||||
if AddToAutoInstall and (Result<>nil) then begin
|
||||
if FindDependencyByNameInList(
|
||||
PackageGraph.FirstAutoInstallDependency,pddRequires,PackageName)=nil
|
||||
PackageGraph.FirstInstallDependency,pddRequires,PackageName)=nil
|
||||
then begin
|
||||
NewDependency.RequiredPackage.AutoInstall:=pitStatic;
|
||||
NewDependency.AddToList(PackageGraph.FirstAutoInstallDependency,pddRequires)
|
||||
NewDependency.AddToList(PackageGraph.FirstInstallDependency,pddRequires)
|
||||
end else
|
||||
NewDependency.Free;
|
||||
PackageList:=MiscellaneousOptions.BuildLazProfiles.StaticAutoInstallPackages;
|
||||
@ -3057,10 +3057,10 @@ var
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
// unbind and free auto installed packages
|
||||
while PackageGraph.FirstAutoInstallDependency<>nil do begin
|
||||
Dependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
while PackageGraph.FirstInstallDependency<>nil do begin
|
||||
Dependency:=PackageGraph.FirstInstallDependency;
|
||||
Dependency.RequiredPackage:=nil;
|
||||
Dependency.RemoveFromList(PackageGraph.FirstAutoInstallDependency,pddRequires);
|
||||
Dependency.RemoveFromList(PackageGraph.FirstInstallDependency,pddRequires);
|
||||
Dependency.Free;
|
||||
end;
|
||||
end;
|
||||
@ -3097,7 +3097,7 @@ var
|
||||
begin
|
||||
PkgList:=nil;
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,PkgList);
|
||||
PackageGraph.FirstInstallDependency,PkgList);
|
||||
if PkgList=nil then exit;
|
||||
for i:=0 to PkgList.Count-1 do
|
||||
if TObject(PkgList[i]) is TLazPackage then
|
||||
@ -5035,7 +5035,7 @@ begin
|
||||
else if AnOwner is TLazPackage then
|
||||
Dependency:=TLazPackage(AnOwner).FirstRequiredDependency
|
||||
else if AnOwner=PkgBoss then
|
||||
Dependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
Dependency:=PackageGraph.FirstInstallDependency;
|
||||
if Dependency=nil then exit;
|
||||
PackageGraph.GetAllRequiredPackages(nil,Dependency,PkgList,Flags);
|
||||
end;
|
||||
@ -5592,7 +5592,7 @@ begin
|
||||
if RequiredPackage.AutoInstall=pitNope then begin
|
||||
RequiredPackage.AutoInstall:=pitStatic;
|
||||
Dependency:=RequiredPackage.CreateDependencyWithOwner(Self);
|
||||
Dependency.AddToList(PackageGraph.FirstAutoInstallDependency,pddRequires);
|
||||
Dependency.AddToList(PackageGraph.FirstInstallDependency,pddRequires);
|
||||
PackageGraph.OpenDependency(Dependency,false);
|
||||
NeedSaving:=true;
|
||||
end;
|
||||
@ -5684,10 +5684,10 @@ begin
|
||||
// remove package from auto installed packages
|
||||
if APackage.AutoInstall<>pitNope then begin
|
||||
APackage.AutoInstall:=pitNope;
|
||||
Dependency:=FindCompatibleDependencyInList(PackageGraph.FirstAutoInstallDependency,
|
||||
Dependency:=FindCompatibleDependencyInList(PackageGraph.FirstInstallDependency,
|
||||
pddRequires,APackage);
|
||||
if Dependency<>nil then begin
|
||||
Dependency.RemoveFromList(PackageGraph.FirstAutoInstallDependency,pddRequires);
|
||||
Dependency.RemoveFromList(PackageGraph.FirstInstallDependency,pddRequires);
|
||||
Dependency.Free;
|
||||
PackageGraph.SortAutoInstallDependencies;
|
||||
end;
|
||||
@ -5880,6 +5880,21 @@ function TPkgManager.InstallPackages(PkgIdList: TObjectList;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure AddPkg(Pkg: TLazPackage);
|
||||
var
|
||||
i: Integer;
|
||||
PkgID: TLazPackageID;
|
||||
begin
|
||||
if Pkg=nil then exit;
|
||||
i:=PkgIdList.Count-1;
|
||||
while (i>=0) and (TLazPackageID(PkgIdList[i]).Compare(Pkg)<>0) do
|
||||
dec(i);
|
||||
if i>=0 then exit;
|
||||
PkgID:=TLazPackageID.Create;
|
||||
PkgID.AssignID(Pkg);
|
||||
PkgIdList.Add(PkgID);
|
||||
end;
|
||||
|
||||
var
|
||||
NewFirstAutoInstallDependency: TPkgDependency;
|
||||
BuildIDEFlags: TBuildLazarusFlags;
|
||||
@ -5888,7 +5903,6 @@ var
|
||||
RequiredPackage: TLazPackage;
|
||||
i: Integer;
|
||||
CurDependency: TPkgDependency;
|
||||
OldID: TLazPackageID;
|
||||
begin
|
||||
Result:=mrCancel;
|
||||
NewFirstAutoInstallDependency:=nil;
|
||||
@ -5899,23 +5913,21 @@ begin
|
||||
if not (piiifClear in Flags) then
|
||||
begin
|
||||
// add existing install packages to list
|
||||
NewFirstAutoInstallDependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
NewFirstAutoInstallDependency:=PackageGraph.FirstInstallDependency;
|
||||
while NewFirstAutoInstallDependency<>nil do begin
|
||||
if NewFirstAutoInstallDependency.RequiredPackage<>nil then begin
|
||||
i:=PkgIdList.Count-1;
|
||||
while (i>=0)
|
||||
and (TLazPackageID(PkgIdList[i]).Compare(NewFirstAutoInstallDependency.RequiredPackage)<>0)
|
||||
do dec(i);
|
||||
if i<0 then begin
|
||||
OldID:=TLazPackageID.Create;
|
||||
OldID.AssignID(NewFirstAutoInstallDependency.RequiredPackage);
|
||||
PkgIdList.Add(OldID);
|
||||
end;
|
||||
end;
|
||||
AddPkg(NewFirstAutoInstallDependency.RequiredPackage);
|
||||
NewFirstAutoInstallDependency:=NewFirstAutoInstallDependency.NextRequiresDependency;
|
||||
end;
|
||||
end;
|
||||
|
||||
// add base packages
|
||||
if PackageGraph.ParseBasePackages(true) then begin
|
||||
for i:=0 to PackageGraph.SrcBasePackages.Count-1 do begin
|
||||
RequiredPackage:=PackageGraph.FindPackageWithName(PackageGraph.SrcBasePackages[i],nil);
|
||||
AddPkg(RequiredPackage);
|
||||
end;
|
||||
end;
|
||||
|
||||
if not (piiifSkipChecks in Flags) then
|
||||
begin
|
||||
if not CheckInstallPackageList(PkgIDList,Flags*[piiifQuiet,piiifRemoveConflicts]) then
|
||||
@ -5936,7 +5948,7 @@ begin
|
||||
try
|
||||
Report:=TStringList.Create;
|
||||
CreateChangeReport(
|
||||
PackageGraph.FirstAutoInstallDependency,NewFirstAutoInstallDependency,
|
||||
PackageGraph.FirstInstallDependency,NewFirstAutoInstallDependency,
|
||||
Report);
|
||||
if not ConfirmPackageList(Report) then exit(mrCancel);
|
||||
finally
|
||||
@ -5963,7 +5975,7 @@ begin
|
||||
|
||||
// mark packages for uninstall
|
||||
//debugln('TPkgManager.MainIDEitmPkgEditInstallPkgsClick mark packages for uninstall');
|
||||
CurDependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
CurDependency:=PackageGraph.FirstInstallDependency;
|
||||
while CurDependency<>nil do begin
|
||||
if (CurDependency.RequiredPackage<>nil)
|
||||
and (not PackageGraph.IsCompiledInBasePackage(CurDependency.PackageName)) then
|
||||
@ -5973,8 +5985,8 @@ begin
|
||||
|
||||
// replace install list
|
||||
//debugln('TPkgManager.MainIDEitmPkgEditInstallPkgsClick replace install list');
|
||||
FreeDependencyList(PackageGraph.FirstAutoInstallDependency,pddRequires);
|
||||
PackageGraph.FirstAutoInstallDependency:=NewFirstAutoInstallDependency;
|
||||
FreeDependencyList(PackageGraph.FirstInstallDependency,pddRequires);
|
||||
PackageGraph.FirstInstallDependency:=NewFirstAutoInstallDependency;
|
||||
NewFirstAutoInstallDependency:=nil;
|
||||
finally
|
||||
PackageGraph.EndUpdate;
|
||||
@ -6032,12 +6044,12 @@ var
|
||||
CompilePolicy: TPackageUpdatePolicy;
|
||||
begin
|
||||
PackageGraph.BeginUpdate(false);
|
||||
Dependencies:=PackageGraph.FirstAutoInstallDependency;
|
||||
Dependencies:=PackageGraph.FirstInstallDependency;
|
||||
try
|
||||
if OnlyBase then
|
||||
begin
|
||||
// create the list of base packages
|
||||
OldDependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
OldDependency:=PackageGraph.FirstInstallDependency;
|
||||
Dependencies:=nil;
|
||||
while OldDependency<>nil do begin
|
||||
if (OldDependency.RequiredPackage<>nil)
|
||||
@ -6073,7 +6085,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
OldDependency.RemoveFromList(PackageGraph.FirstAutoInstallDependency,pddRequires);
|
||||
OldDependency.RemoveFromList(PackageGraph.FirstInstallDependency,pddRequires);
|
||||
OldDependency.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user