diff --git a/components/fppkg/src/fppkg_mainfrm.pas b/components/fppkg/src/fppkg_mainfrm.pas index 59975cc06e..d192f614d7 100644 --- a/components/fppkg/src/fppkg_mainfrm.pas +++ b/components/fppkg/src/fppkg_mainfrm.pas @@ -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; diff --git a/components/fppkg/src/laz_pkgcommands.pas b/components/fppkg/src/laz_pkgcommands.pas index cbd7c6ebe6..e0d3f0b09e 100644 --- a/components/fppkg/src/laz_pkgcommands.pas +++ b/components/fppkg/src/laz_pkgcommands.pas @@ -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.