mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 06:08:55 +02:00
* Replaced the global GFFppkg instance at some locations
git-svn-id: trunk@35211 -
This commit is contained in:
parent
5015e85140
commit
b9f8c73198
@ -163,7 +163,7 @@ var
|
||||
begin
|
||||
if PackageName='' then
|
||||
Error(SErrNoPackageSpecified);
|
||||
P:=GFPpkg.PackageByName(PackageName, pkgpkAvailable);
|
||||
P:=PackageManager.PackageByName(PackageName, pkgpkAvailable);
|
||||
|
||||
log(llProgres,SLogPackageInfoName,[P.Name]);
|
||||
S := P.Email;
|
||||
@ -209,7 +209,7 @@ begin
|
||||
end
|
||||
else if (PackageName<>CurrentDirPackageName) then
|
||||
begin
|
||||
AvailP:=GFPpkg.FindPackage(PackageName, pkgpkAvailable);
|
||||
AvailP:=PackageManager.FindPackage(PackageName, pkgpkAvailable);
|
||||
if Assigned(AvailP) then
|
||||
begin
|
||||
if AvailP.PackagesStructure.UnzipBeforeUse then
|
||||
@ -224,9 +224,9 @@ end;
|
||||
|
||||
procedure TCommandListSettings.Execute;
|
||||
begin
|
||||
GFPpkg.Options.LogValues(llProgres);
|
||||
GFPpkg.CompilerOptions.LogValues(llProgres,'');
|
||||
GFPpkg.FPMakeCompilerOptions.LogValues(llProgres,'fpmake-building ');
|
||||
PackageManager.Options.LogValues(llProgres);
|
||||
PackageManager.CompilerOptions.LogValues(llProgres,'');
|
||||
PackageManager.FPMakeCompilerOptions.LogValues(llProgres,'fpmake-building ');
|
||||
end;
|
||||
|
||||
|
||||
@ -246,27 +246,27 @@ var
|
||||
begin
|
||||
// Download and load mirrors.xml
|
||||
// This can be skipped when a custom RemoteRepository is configured
|
||||
if (GFPpkg.Options.GlobalSection.RemoteMirrorsURL<>'') and
|
||||
(GFPpkg.Options.GlobalSection.RemoteRepository='auto') then
|
||||
if (PackageManager.Options.GlobalSection.RemoteMirrorsURL<>'') and
|
||||
(PackageManager.Options.GlobalSection.RemoteRepository='auto') then
|
||||
begin
|
||||
Log(llCommands,SLogDownloading,[GFPpkg.Options.GlobalSection.RemoteMirrorsURL,GFPpkg.Options.GlobalSection.LocalMirrorsFile]);
|
||||
DownloadFile(GFPpkg.Options.GlobalSection.RemoteMirrorsURL,GFPpkg.Options.GlobalSection.LocalMirrorsFile);
|
||||
Log(llCommands,SLogDownloading,[PackageManager.Options.GlobalSection.RemoteMirrorsURL,PackageManager.Options.GlobalSection.LocalMirrorsFile]);
|
||||
DownloadFile(PackageManager.Options.GlobalSection.RemoteMirrorsURL,PackageManager.Options.GlobalSection.LocalMirrorsFile);
|
||||
LoadLocalAvailableMirrors;
|
||||
end;
|
||||
// Download packages.xml
|
||||
PackagesURL:=GetRemoteRepositoryURL(PackagesFileName);
|
||||
Log(llCommands,SLogDownloading,[PackagesURL,GFPpkg.Options.GlobalSection.LocalPackagesFile]);
|
||||
DownloadFile(PackagesURL,GFPpkg.Options.GlobalSection.LocalPackagesFile);
|
||||
Log(llCommands,SLogDownloading,[PackagesURL,PackageManager.Options.GlobalSection.LocalPackagesFile]);
|
||||
DownloadFile(PackagesURL,PackageManager.Options.GlobalSection.LocalPackagesFile);
|
||||
// Read the repository again
|
||||
GFPpkg.ScanAvailablePackages;
|
||||
PackageManager.ScanAvailablePackages;
|
||||
// no need to log errors again
|
||||
FindInstalledPackages(GFPpkg.CompilerOptions,False);
|
||||
FindInstalledPackages(PackageManager.CompilerOptions,False);
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandListPackages.Execute;
|
||||
begin
|
||||
ListPackages(GFPpkg.Options.CommandLineSection.ShowLocation);
|
||||
ListPackages(PackageManager.Options.CommandLineSection.ShowLocation);
|
||||
end;
|
||||
|
||||
|
||||
@ -283,7 +283,7 @@ var
|
||||
begin
|
||||
if PackageName='' then
|
||||
Error(SErrNoPackageSpecified);
|
||||
P:=GFPpkg.PackageByName(PackageName, pkgpkAvailable);
|
||||
P:=PackageManager.PackageByName(PackageName, pkgpkAvailable);
|
||||
if not FileExists(PackageLocalArchive(P)) then
|
||||
ExecuteAction(PackageName,'downloadpackage');
|
||||
end;
|
||||
@ -297,7 +297,7 @@ Var
|
||||
begin
|
||||
if PackageName='' then
|
||||
Error(SErrNoPackageSpecified);
|
||||
P:=GFPpkg.PackageByName(PackageName, pkgpkAvailable);
|
||||
P:=PackageManager.PackageByName(PackageName, pkgpkAvailable);
|
||||
BuildDir:=PackageBuildPath(P);
|
||||
ArchiveFile:=PackageLocalArchive(P);
|
||||
if not FileExists(ArchiveFile) then
|
||||
@ -365,7 +365,7 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
P:=GFPpkg.FindPackage(PackageName, pkgpkAvailable);
|
||||
P:=PackageManager.FindPackage(PackageName, pkgpkAvailable);
|
||||
if Assigned(P) then
|
||||
begin
|
||||
if P.PackagesStructure.UnzipBeforeUse then
|
||||
@ -418,8 +418,8 @@ begin
|
||||
begin
|
||||
ExecuteAction(PackageName,'build');
|
||||
|
||||
AvailPackage := GFPpkg.FindPackage(PackageName, pkgpkAvailable);
|
||||
InstallRepo := GFPpkg.GetInstallRepository(AvailPackage);
|
||||
AvailPackage := PackageManager.FindPackage(PackageName, pkgpkAvailable);
|
||||
InstallRepo := PackageManager.GetInstallRepository(AvailPackage);
|
||||
case InstallRepo.DefaultPackagesStructure.IsInstallationNeeded(AvailPackage) of
|
||||
fpinInstallationNeeded:
|
||||
ExecuteAction(PackageName,'fpmakeinstall');
|
||||
@ -526,7 +526,7 @@ begin
|
||||
end;
|
||||
end
|
||||
else
|
||||
P:=GFPpkg.PackageByName(PackageName, pkgpkBoth);
|
||||
P:=PackageManager.PackageByName(PackageName, pkgpkBoth);
|
||||
|
||||
MissingDependency:=nil;
|
||||
while assigned(P) do
|
||||
@ -536,18 +536,18 @@ begin
|
||||
for i:=0 to P.Dependencies.Count-1 do
|
||||
begin
|
||||
D:=P.Dependencies[i];
|
||||
if not ((GFPpkg.CompilerOptions.CompilerOS in D.OSes) and (GFPpkg.CompilerOptions.CompilerCPU in D.CPUs)) then
|
||||
Log(llDebug,SDbgPackageDependencyOtherTarget,[D.PackageName,MakeTargetString(GFPpkg.CompilerOptions.CompilerCPU,GFPpkg.CompilerOptions.CompilerOS)])
|
||||
if not ((PackageManager.CompilerOptions.CompilerOS in D.OSes) and (PackageManager.CompilerOptions.CompilerCPU in D.CPUs)) then
|
||||
Log(llDebug,SDbgPackageDependencyOtherTarget,[D.PackageName,MakeTargetString(PackageManager.CompilerOptions.CompilerCPU,PackageManager.CompilerOptions.CompilerOS)])
|
||||
// Skip dependencies that are available within the fpmake-file itself
|
||||
else if not (assigned(ManifestPackages) and assigned(ManifestPackages.FindPackage(D.PackageName))) then
|
||||
begin
|
||||
AvailP := nil;
|
||||
InstalledP:=GFPpkg.FindPackage(D.PackageName, pkgpkInstalled);
|
||||
InstalledP:=PackageManager.FindPackage(D.PackageName, pkgpkInstalled);
|
||||
// Need installation?
|
||||
if not assigned(InstalledP) or
|
||||
(InstalledP.Version.CompareVersion(D.MinVersion)<0) then
|
||||
begin
|
||||
AvailP:=GFPpkg.FindPackage(D.PackageName, pkgpkAvailable);
|
||||
AvailP:=PackageManager.FindPackage(D.PackageName, pkgpkAvailable);
|
||||
if not assigned(AvailP) or
|
||||
(AvailP.Version.CompareVersion(D.MinVersion)<0) then
|
||||
begin
|
||||
|
@ -23,7 +23,8 @@ uses
|
||||
{$ifdef HAS_UNIT_PROCESS}
|
||||
process,
|
||||
{$endif HAS_UNIT_PROCESS}
|
||||
fprepos;
|
||||
fprepos,
|
||||
pkgFppkg;
|
||||
|
||||
type
|
||||
{ TPackageHandler }
|
||||
@ -31,6 +32,7 @@ type
|
||||
TPackageHandler = Class(TComponent)
|
||||
private
|
||||
FPackageName : string;
|
||||
FPackageManager: tpkgFPpkg;
|
||||
Protected
|
||||
Procedure Log(Level: TLogLevel;Msg : String);
|
||||
Procedure Log(Level: TLogLevel;Fmt : String; const Args : array of const);
|
||||
@ -38,8 +40,9 @@ type
|
||||
Procedure Error(Fmt : String; const Args : array of const);
|
||||
Function ExecuteProcess(Const Prog,Args:String):Integer;
|
||||
Procedure SetCurrentDir(Const ADir:String);
|
||||
Property PackageManager:TpkgFPpkg Read FPackageManager;
|
||||
Public
|
||||
Constructor Create(AOwner:TComponent;const APackageName:string); virtual;
|
||||
Constructor Create(AOwner:TComponent; APackageManager:TpkgFPpkg; const APackageName:string); virtual;
|
||||
function PackageLogPrefix:String;
|
||||
procedure ExecuteAction(const APackageName,AAction:string);
|
||||
procedure Execute; virtual; abstract;
|
||||
@ -52,7 +55,7 @@ type
|
||||
// Actions/PkgHandler
|
||||
procedure RegisterPkgHandler(const AAction:string;pkghandlerclass:TPackageHandlerClass);
|
||||
function GetPkgHandler(const AAction:string):TPackageHandlerClass;
|
||||
procedure ExecuteAction(const APackageName,AAction:string);
|
||||
procedure ExecuteAction(const APackageName,AAction:string; PackageManager: TpkgFPpkg);
|
||||
|
||||
function PackageBuildPath(APackage:TFPPackage):String;
|
||||
function PackageRemoteArchive(APackage:TFPPackage): String;
|
||||
@ -94,7 +97,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure ExecuteAction(const APackageName,AAction:string);
|
||||
procedure ExecuteAction(const APackageName,AAction:string; PackageManager: TpkgFPpkg);
|
||||
var
|
||||
pkghandlerclass : TPackageHandlerClass;
|
||||
FullActionName : string;
|
||||
@ -111,7 +114,7 @@ begin
|
||||
|
||||
// Create action handler class
|
||||
pkghandlerclass:=GetPkgHandler(AAction);
|
||||
With pkghandlerclass.Create(nil,APackageName) do
|
||||
With pkghandlerclass.Create(nil,PackageManager,APackageName) do
|
||||
try
|
||||
Log(llDebug,SLogRunAction+' start',[AAction]);
|
||||
Execute;
|
||||
@ -169,10 +172,12 @@ end;
|
||||
|
||||
{ TPackageHandler }
|
||||
|
||||
constructor TPackageHandler.Create(AOwner:TComponent;const APackageName:string);
|
||||
Constructor TPackageHandler.Create(AOwner: TComponent; APackageManager: TpkgFPpkg;
|
||||
const APackageName: string);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
FPackageName:=APackageName;
|
||||
FPackageManager:=APackageManager;
|
||||
end;
|
||||
|
||||
{$ifdef HAS_UNIT_PROCESS}
|
||||
@ -290,8 +295,7 @@ end;
|
||||
|
||||
procedure TPackageHandler.ExecuteAction(const APackageName,AAction:string);
|
||||
begin
|
||||
// Needed to override TComponent.ExecuteAction method
|
||||
pkghandler.ExecuteAction(APackageName,AAction);
|
||||
pkghandler.ExecuteAction(APackageName,AAction,PackageManager);
|
||||
end;
|
||||
|
||||
|
||||
|
@ -259,7 +259,7 @@ begin
|
||||
TempPackagesStructure.SetTempPath(FPath+SR.Name);
|
||||
PackageName := SR.Name + '_create_manifest';
|
||||
TempPackagesStructure.TempPackageName := PackageName;
|
||||
pkghandler.ExecuteAction(PackageName,'fpmakemanifest');
|
||||
pkghandler.ExecuteAction(PackageName,'fpmakemanifest',GFPpkg);
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
|
@ -332,7 +332,7 @@ begin
|
||||
if not FileExists(GFPpkg.Options.GlobalSection.LocalPackagesFile) then
|
||||
begin
|
||||
try
|
||||
pkghandler.ExecuteAction('','update');
|
||||
pkghandler.ExecuteAction('','update', GFPpkg);
|
||||
except
|
||||
on E: Exception do
|
||||
pkgglobals.Log(llWarning,E.Message);
|
||||
@ -374,7 +374,7 @@ begin
|
||||
InstPackages.AddPackagesToRepository(Repo);
|
||||
Repo.DefaultPackagesStructure := InstPackages;
|
||||
end;
|
||||
pkghandler.ExecuteAction(CurrentDirPackageName,ParaAction);
|
||||
pkghandler.ExecuteAction(CurrentDirPackageName,ParaAction,GFPpkg);
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -383,19 +383,19 @@ begin
|
||||
begin
|
||||
if sametext(ExtractFileExt(ParaPackages[i]),'.zip') and FileExists(ParaPackages[i]) then
|
||||
begin
|
||||
pkghandler.ExecuteAction(CmdLinePackageName,ParaAction);
|
||||
pkghandler.ExecuteAction(CmdLinePackageName,ParaAction,GFPpkg);
|
||||
end
|
||||
else
|
||||
begin
|
||||
pkgglobals.Log(llDebug,SLogCommandLineAction,['['+ParaPackages[i]+']',ParaAction]);
|
||||
pkghandler.ExecuteAction(ParaPackages[i],ParaAction);
|
||||
pkghandler.ExecuteAction(ParaPackages[i],ParaAction,GFPpkg);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// Recompile all packages dependent on this package
|
||||
if (ParaAction='install') and not GFPpkg.Options.CommandLineSection.SkipFixBrokenAfterInstall then
|
||||
pkghandler.ExecuteAction('','fixbroken');
|
||||
pkghandler.ExecuteAction('','fixbroken',GFPpkg);
|
||||
|
||||
Terminate;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user