mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-04 20:18:14 +02:00
FPPKG
Code cleanup: Patch to remove obsolete laz-actions in favour of actions from fppkg package, thanks to Joost http://bugs.freepascal.org/view.php?id=19479 git-svn-id: trunk@31262 -
This commit is contained in:
parent
6931892bff
commit
001e8771d1
@ -203,7 +203,7 @@ begin
|
||||
if s.Count = 0 then
|
||||
Error(SErrNoPackageSpecified)
|
||||
else
|
||||
DoRun(FppkgCfg, 'laz_clean', s);
|
||||
DoRun(FppkgCfg, 'clean', s);
|
||||
|
||||
s.Free;
|
||||
end;
|
||||
@ -219,7 +219,7 @@ begin
|
||||
if s.Count = 0 then
|
||||
Error(SErrNoPackageSpecified)
|
||||
else
|
||||
DoRun(FppkgCfg, 'laz_compile', s);
|
||||
DoRun(FppkgCfg, 'compile', s);
|
||||
|
||||
s.Free;
|
||||
end;
|
||||
@ -235,7 +235,7 @@ begin
|
||||
if s.Count = 0 then
|
||||
Error(SErrNoPackageSpecified)
|
||||
else
|
||||
DoRun(FppkgCfg, 'laz_download', s);
|
||||
DoRun(FppkgCfg, 'download', s);
|
||||
|
||||
s.Free;
|
||||
end;
|
||||
@ -251,7 +251,7 @@ begin
|
||||
if s.Count = 0 then
|
||||
Error(SErrNoPackageSpecified)
|
||||
else
|
||||
DoRun(FppkgCfg, 'laz_archive', s);
|
||||
DoRun(FppkgCfg, 'archive', s);
|
||||
|
||||
s.Free;
|
||||
end;
|
||||
@ -267,7 +267,7 @@ begin
|
||||
if s.Count = 0 then
|
||||
Error(SErrNoPackageSpecified)
|
||||
else
|
||||
DoRun(FppkgCfg, 'laz_build', s);
|
||||
DoRun(FppkgCfg, 'build', s);
|
||||
|
||||
s.Free;
|
||||
end;
|
||||
@ -323,7 +323,7 @@ begin
|
||||
Error(SErrNoPackageSpecified)
|
||||
else
|
||||
begin
|
||||
DoRun(FppkgCfg, 'laz_install', s);
|
||||
DoRun(FppkgCfg, 'install', s);
|
||||
ListPackages;
|
||||
UpdatePackageListView;
|
||||
|
||||
@ -457,7 +457,7 @@ var
|
||||
s: TStrings;
|
||||
begin
|
||||
s := TStringList.Create;
|
||||
DoRun(FppkgCfg, 'laz_update', s);
|
||||
DoRun(FppkgCfg, 'update', s);
|
||||
UpdatePackageListView;
|
||||
s.Free;
|
||||
end;
|
||||
|
@ -15,20 +15,6 @@ uses
|
||||
laz_pkgrepos, pkgfpmake, SvnCommand;
|
||||
|
||||
type
|
||||
{ TCommandLazAddConfig }
|
||||
|
||||
TCommandLazAddConfig = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazUpdate }
|
||||
|
||||
TCommandLazUpdate = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazListPackages }
|
||||
|
||||
TCommandLazListPackages = Class(TPackagehandler)
|
||||
@ -36,20 +22,6 @@ type
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazScanPackages }
|
||||
|
||||
TCommandLazScanPackages = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazDownload }
|
||||
|
||||
TCommandLazDownload = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazUnzip }
|
||||
|
||||
TCommandLazUnzip = Class(TPackagehandler)
|
||||
@ -57,137 +29,12 @@ type
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazCompile }
|
||||
|
||||
TCommandLazCompile = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazBuild }
|
||||
|
||||
TCommandLazBuild = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazInstall }
|
||||
|
||||
TCommandLazInstall = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazClean }
|
||||
|
||||
TCommandLazClean = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazArchive }
|
||||
|
||||
TCommandLazArchive = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazInstallDependencies }
|
||||
|
||||
TCommandLazInstallDependencies = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazFixBroken }
|
||||
|
||||
TCommandLazFixBroken = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
{ TCommandLazListSettings }
|
||||
|
||||
TCommandLazListSettings = Class(TPackagehandler)
|
||||
Public
|
||||
Procedure Execute;override;
|
||||
end;
|
||||
|
||||
var
|
||||
DependenciesDepth: integer;
|
||||
|
||||
{ TCommandLazListSettings }
|
||||
|
||||
procedure TCommandLazListSettings.Execute;
|
||||
begin
|
||||
GlobalOptions.LogValues(vlProgres);
|
||||
CompilerOptions.LogValues(vlProgres,'');
|
||||
FPMakeCompilerOptions.LogValues(vlProgres,'fpmake-building ');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazAddConfig.Execute;
|
||||
begin
|
||||
{
|
||||
Log(vlInfo,SLogGeneratingCompilerConfig,[S]);
|
||||
Options.InitCompilerDefaults(Args[2]);
|
||||
Options.SaveCompilerToFile(S);
|
||||
}
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazUpdate.Execute;
|
||||
var
|
||||
PackagesURL : String;
|
||||
begin
|
||||
// Download and load mirrors.xml
|
||||
// This can be skipped when a custom RemoteRepository is configured
|
||||
if (GlobalOptions.RemoteMirrorsURL<>'') and
|
||||
(GlobalOptions.RemoteRepository='auto') then
|
||||
begin
|
||||
Log(vlCommands,SLogDownloading,[GlobalOptions.RemoteMirrorsURL,GlobalOptions.LocalMirrorsFile]);
|
||||
DownloadFile(GlobalOptions.RemoteMirrorsURL,GlobalOptions.LocalMirrorsFile);
|
||||
LoadLocalAvailableMirrors;
|
||||
end;
|
||||
// Download packages.xml
|
||||
PackagesURL:=GetRemoteRepositoryURL(PackagesFileName);
|
||||
Log(vlCommands,SLogDownloading,[PackagesURL,GlobalOptions.LocalPackagesFile]);
|
||||
DownloadFile(PackagesURL,GlobalOptions.LocalPackagesFile);
|
||||
// Read the repository again
|
||||
LoadLocalAvailableRepository;
|
||||
// no need to log errors again
|
||||
FindInstalledPackages(CompilerOptions,False);
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazListPackages.Execute;
|
||||
begin
|
||||
Laz_ListPackages;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazScanPackages.Execute;
|
||||
begin
|
||||
{ nothing, already handled in fppkg.pp as special case
|
||||
before the local fppkg directory is processed }
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazDownload.Execute;
|
||||
var
|
||||
P : TFPPackage;
|
||||
begin
|
||||
if PackageName='' then
|
||||
begin
|
||||
Error(SErrNoPackageSpecified);
|
||||
exit;
|
||||
end;
|
||||
P:=AvailableRepository.PackageByName(PackageName);
|
||||
if not FileExists(PackageLocalArchive(P)) then
|
||||
Laz_ExecuteAction(PackageName,'downloadpackage');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazUnzip.Execute;
|
||||
Var
|
||||
BuildDir : string;
|
||||
@ -231,256 +78,7 @@ begin
|
||||
ExecuteSvnCommand('export ' + M.URL + P.FileName + ' "' + BuildDir + '"');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazCompile.Execute;
|
||||
begin
|
||||
if PackageName<>'' then
|
||||
begin
|
||||
// For local files we need the information inside the zip to get the
|
||||
// dependencies
|
||||
if (PackageName=CmdLinePackageName) then
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_unzip');
|
||||
Laz_ExecuteAction(PackageName,'laz_installdependencies');
|
||||
end
|
||||
else
|
||||
if (PackageName=CurrentDirPackageName) then
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_installdependencies');
|
||||
end
|
||||
else
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_installdependencies');
|
||||
Laz_ExecuteAction(PackageName,'laz_unzip');
|
||||
end;
|
||||
end;
|
||||
Laz_ExecuteAction(PackageName,'fpmakecompile');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazBuild.Execute;
|
||||
var
|
||||
P: TFPPackage;
|
||||
begin
|
||||
if PackageName<>'' then
|
||||
begin
|
||||
// For local files we need the information inside the zip to get the
|
||||
// dependencies
|
||||
if (PackageName=CmdLinePackageName) then
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_unzip');
|
||||
Laz_ExecuteAction(PackageName,'laz_installdependencies');
|
||||
end
|
||||
else
|
||||
if (PackageName=CurrentDirPackageName) then
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_installdependencies');
|
||||
end
|
||||
else
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_installdependencies');
|
||||
// Check if the package is not installed but being recompiled because of changed
|
||||
// dependencies while the original source is still available.
|
||||
P := AvailableRepository.FindPackage(PackageName);
|
||||
if not (assigned(P) and P.RecompileBroken and (P.SourcePath<>'')) then
|
||||
// The package is not available locally, download and unzip it.
|
||||
Laz_ExecuteAction(PackageName,'laz_unzip');
|
||||
end;
|
||||
end;
|
||||
Laz_ExecuteAction(PackageName,'fpmakebuild');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazInstall.Execute;
|
||||
var
|
||||
UFN,S : String;
|
||||
P : TFPPackage;
|
||||
begin
|
||||
if PackageName<>'' then
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'laz_build');
|
||||
Laz_ExecuteAction(PackageName,'fpmakeinstall');
|
||||
if (PackageName=CmdLinePackageName) or (PackageName=CurrentDirPackageName) then
|
||||
begin
|
||||
// Load package name from manifest
|
||||
if not FileExists(ManifestFileName) then
|
||||
Laz_ExecuteAction(PackageName,'fpmakemanifest');
|
||||
P:=LoadManifestFromFile(ManifestFileName);
|
||||
S:=P.Name;
|
||||
FreeAndNil(P);
|
||||
end
|
||||
else
|
||||
S:=PackageName;
|
||||
P:=InstalledRepository.FindPackage(S);
|
||||
if not assigned(P) then
|
||||
P:=InstalledRepository.AddPackage(S);
|
||||
if P.RecompileBroken then
|
||||
begin
|
||||
// If the package is recompiled, the installation-location is dependent on where
|
||||
// the package was installed originally.
|
||||
if P.InstalledLocally then
|
||||
UFN:=CompilerOptions.LocalUnitDir
|
||||
else
|
||||
UFN:=CompilerOptions.GlobalUnitDir;
|
||||
// Setting RecompileBroken to false is in a strict sense not needed. But it is better
|
||||
// to clean this temporary flag, to avoid problems with changes in the future
|
||||
P.RecompileBroken := false;
|
||||
AvailableRepository.FindPackage(P.Name).RecompileBroken:=false;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (IsSuperUser or GlobalOptions.InstallGlobal) then
|
||||
UFN:=CompilerOptions.GlobalUnitDir
|
||||
else
|
||||
UFN:=CompilerOptions.LocalUnitDir;
|
||||
end;
|
||||
UFN:=IncludeTrailingPathDelimiter(UFN)+S+PathDelim+UnitConfigFileName;
|
||||
P.LoadUnitConfigFromFile(UFN);
|
||||
if P.IsFPMakeAddIn then
|
||||
AddFPMakeAddIn(P);
|
||||
end
|
||||
else
|
||||
Laz_ExecuteAction(PackageName,'fpmakeinstall');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazClean.Execute;
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'fpmakeclean');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazArchive.Execute;
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'fpmakearchive');
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazInstallDependencies.Execute;
|
||||
var
|
||||
i : Integer;
|
||||
MissingDependency,
|
||||
D : TFPDependency;
|
||||
P,
|
||||
InstalledP,
|
||||
AvailP : TFPPackage;
|
||||
L : TStringList;
|
||||
status : string;
|
||||
FreeManifest : boolean;
|
||||
begin
|
||||
if PackageName='' then
|
||||
Error(SErrNoPackageSpecified);
|
||||
FreeManifest:=false;
|
||||
// Load dependencies for local packages
|
||||
if (PackageName=CmdLinePackageName) or (PackageName=CurrentDirPackageName) then
|
||||
begin
|
||||
Laz_ExecuteAction(PackageName,'fpmakemanifest');
|
||||
P:=LoadManifestFromFile(ManifestFileName);
|
||||
FreeManifest:=true;
|
||||
end
|
||||
else
|
||||
P:=AvailableRepository.PackageByName(PackageName);
|
||||
// Find and List dependencies
|
||||
MissingDependency:=nil;
|
||||
L:=TStringList.Create;
|
||||
for i:=0 to P.Dependencies.Count-1 do
|
||||
begin
|
||||
D:=P.Dependencies[i];
|
||||
if (CompilerOptions.CompilerOS in D.OSes) and
|
||||
(CompilerOptions.CompilerCPU in D.CPUs) then
|
||||
begin
|
||||
InstalledP:=InstalledRepository.FindPackage(D.PackageName);
|
||||
// Need installation?
|
||||
if not assigned(InstalledP) or
|
||||
(InstalledP.Version.CompareVersion(D.MinVersion)<0) then
|
||||
begin
|
||||
AvailP:=AvailableRepository.FindPackage(D.PackageName);
|
||||
if not assigned(AvailP) or
|
||||
(AvailP.Version.CompareVersion(D.MinVersion)<0) then
|
||||
begin
|
||||
status:='Not Available!';
|
||||
MissingDependency:=D;
|
||||
end
|
||||
else
|
||||
begin
|
||||
status:='Updating';
|
||||
L.Add(D.PackageName);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if PackageIsBroken(InstalledP, True) then
|
||||
begin
|
||||
status:='Broken, recompiling';
|
||||
L.Add(D.PackageName);
|
||||
end
|
||||
else
|
||||
status:='OK';
|
||||
end;
|
||||
Log(vlInfo,SLogPackageDependency,
|
||||
[D.PackageName,D.MinVersion.AsString,PackageInstalledVersionStr(D.PackageName),
|
||||
PackageAvailableVersionStr(D.PackageName),status]);
|
||||
end
|
||||
else
|
||||
Log(vlDebug,SDbgPackageDependencyOtherTarget,[D.PackageName,MakeTargetString(CompilerOptions.CompilerCPU,CompilerOptions.CompilerOS)]);
|
||||
end;
|
||||
// Give error on first missing dependency
|
||||
if assigned(MissingDependency) then
|
||||
Error(SErrNoPackageAvailable,[MissingDependency.PackageName,MissingDependency.MinVersion.AsString]);
|
||||
// Install needed updates
|
||||
if L.Count > 0 then
|
||||
begin
|
||||
if DependenciesDepth=0 then
|
||||
pkgglobals.Log(vlProgres,SProgrInstallDependencies);
|
||||
inc(DependenciesDepth);
|
||||
|
||||
for i:=0 to L.Count-1 do
|
||||
Laz_ExecuteAction(L[i],'laz_install');
|
||||
|
||||
dec(DependenciesDepth);
|
||||
if DependenciesDepth=0 then
|
||||
pkgglobals.Log(vlProgres,SProgrDependenciesInstalled);
|
||||
end;
|
||||
FreeAndNil(L);
|
||||
if FreeManifest then
|
||||
FreeAndNil(P);
|
||||
end;
|
||||
|
||||
|
||||
procedure TCommandLazFixBroken.Execute;
|
||||
var
|
||||
i : integer;
|
||||
SL : TStringList;
|
||||
begin
|
||||
SL:=TStringList.Create;
|
||||
repeat
|
||||
FindBrokenPackages(SL);
|
||||
if SL.Count=0 then
|
||||
break;
|
||||
pkgglobals.Log(vlProgres,SProgrReinstallDependent);
|
||||
for i:=0 to SL.Count-1 do
|
||||
begin
|
||||
Laz_ExecuteAction(SL[i],'laz_build');
|
||||
Laz_ExecuteAction(SL[i],'laz_install');
|
||||
end;
|
||||
until false;
|
||||
FreeAndNil(SL);
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
DependenciesDepth:=0;
|
||||
RegisterPkgHandler('laz_update',TCommandLazUpdate);
|
||||
RegisterPkgHandler('laz_list',TCommandLazListPackages);
|
||||
RegisterPkgHandler('laz_scan',TCommandLazScanPackages);
|
||||
RegisterPkgHandler('laz_download',TCommandLazDownload);
|
||||
RegisterPkgHandler('laz_unzip',TCommandLazUnzip);
|
||||
RegisterPkgHandler('laz_compile',TCommandLazCompile);
|
||||
RegisterPkgHandler('laz_build',TCommandLazBuild);
|
||||
RegisterPkgHandler('laz_install',TCommandLazInstall);
|
||||
RegisterPkgHandler('laz_clean',TCommandLazClean);
|
||||
RegisterPkgHandler('laz_archive',TCommandLazArchive);
|
||||
RegisterPkgHandler('laz_installdependencies',TCommandLazInstallDependencies);
|
||||
RegisterPkgHandler('laz_fixbroken',TCommandLazFixBroken);
|
||||
RegisterPkgHandler('laz_listsettings',TCommandLazListSettings);
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user