From af466b42192f0b7f5652a29972a7b650c2b5c2b6 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 11 Feb 2007 13:03:58 +0000 Subject: [PATCH] * global config logging and writing git-svn-id: trunk@6417 - --- utils/fppkg/fppkg.pp | 25 +++++++++++++++++---- utils/fppkg/pkgmessages.pp | 2 ++ utils/fppkg/pkgropts.pp | 46 ++++++++++++++++++++++---------------- 3 files changed, 50 insertions(+), 23 deletions(-) diff --git a/utils/fppkg/fppkg.pp b/utils/fppkg/fppkg.pp index 771665f7eb..7c8fb7ecb4 100644 --- a/utils/fppkg/fppkg.pp +++ b/utils/fppkg/fppkg.pp @@ -71,9 +71,21 @@ procedure TMakeTool.LoadGlobalDefaults; var SL : TStringList; i : integer; + cfgfile : String; + GeneratedConfig : boolean; begin + cfgfile:=GetConfigFileName; + GeneratedConfig:=false; FDefaults:=TPackagerOptions.Create; - FDefaults.LoadGlobalFromFile(GetConfigFileName); + // Load file or create new default configuration + if FileExists(cfgfile) then + FDefaults.LoadGlobalFromFile(cfgfile) + else + begin + ForceDirectories(ExtractFilePath(cfgfile)); + FDefaults.SaveGlobalToFile(cfgfile); + GeneratedConfig:=true; + end; // Load default verbosity from config SL:=TStringList.Create; SL.CommaText:=FDefaults.DefaultVerbosity; @@ -81,6 +93,11 @@ begin Include(Verbosity,StringToVerbosity(SL[i])); SL.Free; FCompilerConfig:=FDefaults.DefaultCompilerConfig; + // Tracing of what we've done above, need to be done after the verbosity is set + if GeneratedConfig then + Log(vDebug,SLogGeneratingGlobalConfig,[cfgfile]) + else + Log(vDebug,SLogLoadingGlobalConfig,[cfgfile]) end; @@ -141,7 +158,7 @@ procedure TMakeTool.ShowUsage; begin Writeln('Usage: ',Paramstr(0),' [options] '); Writeln('Options:'); - Writeln(' -r --compiler Set compiler'); + Writeln(' -c --config Set compiler configuration to use'); Writeln(' -h --help This help'); Writeln(' -v --verbose Set verbosity'); Writeln('Actions:'); @@ -217,8 +234,8 @@ begin begin Inc(I); // Check options. - if CheckOption(I,'r','compiler') then - FDefaults.Compiler:=OptionArg(I) + if CheckOption(I,'c','config') then + FCompilerConfig:=OptionArg(I) else if CheckOption(I,'v','verbose') then Include(Verbosity,StringToVerbosity(OptionArg(I))) else if CheckOption(I,'h','help') then diff --git a/utils/fppkg/pkgmessages.pp b/utils/fppkg/pkgmessages.pp index 8cec517789..875a3ed805 100644 --- a/utils/fppkg/pkgmessages.pp +++ b/utils/fppkg/pkgmessages.pp @@ -37,7 +37,9 @@ Resourcestring SLogRunAction = 'Action: "%s %s"'; SLogExecute = 'Executing: "%s %s"'; SLogChangeDir = 'CurrentDir: "%s"'; + SLogLoadingGlobalConfig = 'Loading global configuration from "%s"'; SLogLoadingCompilerConfig = 'Loading compiler configuration from "%s"'; + SLogGeneratingGlobalConfig = 'Generating default global configuration in "%s"'; SLogGeneratingCompilerConfig = 'Generating default compiler configuration in "%s"'; SLogLoadingRepository = 'Loading repository data from "%s"'; SLogLoadingVersions = 'Loading versions data from "%s"'; diff --git a/utils/fppkg/pkgropts.pp b/utils/fppkg/pkgropts.pp index d4fbc5f033..4a2cc70efc 100644 --- a/utils/fppkg/pkgropts.pp +++ b/utils/fppkg/pkgropts.pp @@ -32,8 +32,7 @@ Type FLocalRepository : String; FCompilerConfigDir, FPackagesDir, - FBuildDir, - FLocalDir : String; + FBuildDir : String; FDefaultVerbosity, FDefaultCompilerConfig : String; // Compiler specific options @@ -46,8 +45,6 @@ Type procedure SetOptString(Index: integer; const AValue: String); procedure SetCompilerCPU(const AValue: TCPU); procedure SetCompilerOS(const AValue: TOS); - protected - Property LocalDir : String Read FLocalDir; Public Constructor Create; Procedure InitGlobalDefaults; @@ -100,10 +97,10 @@ Const KeyRemoteMirrorsLocation = 'RemoteMirrors'; KeyRemoteRepository = 'RemoteRepository'; KeyLocalRepository = 'LocalRepository'; - KeyDefaultConfig = 'DefaultCompilerConfig'; KeyCompilerConfigDir = 'CompilerConfigDir'; KeyPackagesDir = 'PackagesDir'; KeyBuildDir = 'BuildDir'; + KeyCompilerConfig = 'CompilerConfig'; KeyVerbosity = 'Verbosity'; // Compiler dependent config KeyInstallDir = 'InstallDir'; @@ -207,23 +204,28 @@ end; Procedure TPackagerOptions.InitGlobalDefaults; +var + LocalDir : String; begin - FRemoteMirrorsLocation:=DefaultMirrorsLocation; - FRemoteRepository:=DefaultRemoteRepository; {$ifdef unix} if (fpGetUID=0) then - FLocalDir:=DefaultUnixPrefix + LocalDir:=DefaultUnixPrefix else - FLocalDir:=IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOME'))+'.fppkg/'; + LocalDir:=IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOME'))+'.fppkg/'; {$else} // Change as needed on all OS-es... - FLocalDir:=ExtractFilePath(Paramstr(0))+'fppkg'+PathDelim; + LocalDir:=ExtractFilePath(Paramstr(0))+'fppkg'+PathDelim; {$endif} - FBuildDir:=FLocalDir+'build'+PathDelim; - FPackagesDir:=FLocalDir+'packages'+PathDelim; - FCompilerConfigDir:=FLocalDir+'config'+PathDelim; - FLocalMirrorsLocation:=FLocalDir+DefaultMirrors; - FLocalRepository:=FLocalDir+DefaultRepository; + // Directories + FBuildDir:=LocalDir+'build'+PathDelim; + FPackagesDir:=LocalDir+'packages'+PathDelim; + FCompilerConfigDir:=LocalDir+'config'+PathDelim; + FLocalMirrorsLocation:=LocalDir+DefaultMirrors; + FLocalRepository:=LocalDir+DefaultRepository; + // Remote + FRemoteMirrorsLocation:=DefaultMirrorsLocation; + FRemoteRepository:=DefaultRemoteRepository; + // Other config FDefaultCompilerConfig:='default'; FDefaultVerbosity:='error,info,debug,commands'; end; @@ -270,7 +272,10 @@ begin FRemoteRepository:=ReadString(SDefaults,KeyRemoteRepository,FRemoteRepository); FLocalRepository:=ReadString(SDefaults,KeyLocalRepository,FLocalRepository); FBuildDir:=FixPath(ReadString(SDefaults,KeyBuildDir,FBuildDir)); - FDefaultCompilerConfig:=ReadString(SDefaults,KeyDefaultConfig,FDefaultCompilerConfig); + FPackagesDir:=FixPath(ReadString(SDefaults,KeyPackagesDir,FPackagesDir)); + FCompilerConfigDir:=FixPath(ReadString(SDefaults,KeyCompilerConfigDir,FCompilerConfigDir)); + FDefaultCompilerConfig:=ReadString(SDefaults,KeyCompilerConfig,FDefaultCompilerConfig); + FDefaultVerbosity:=ReadString(SDefaults,KeyVerbosity,FDefaultVerbosity); end; end; @@ -279,12 +284,15 @@ procedure TPackagerOptions.SaveGlobalToIni(Ini: TCustomIniFile); begin With Ini do begin + WriteString(SDefaults,KeyBuildDir,FBuildDir); + WriteString(SDefaults,KeyPackagesDir,FPackagesDir); + WriteString(SDefaults,KeyCompilerConfigDir,FCompilerConfigDir); + WriteString(SDefaults,KeyLocalRepository,FLocalRepository); WriteString(SDefaults,KeyLocalMirrorsLocation,FLocalMirrorsLocation); WriteString(SDefaults,KeyRemoteMirrorsLocation,FRemoteMirrorsLocation); WriteString(SDefaults,KeyRemoteRepository,FRemoteRepository); - WriteString(SDefaults,KeyLocalRepository,FLocalRepository); - WriteString(SDefaults,KeyBuildDir,FBuildDir); - WriteString(SDefaults,KeyDefaultConfig,FDefaultCompilerConfig); + WriteString(SDefaults,KeyCompilerConfig,FDefaultCompilerConfig); + WriteString(SDefaults,KeyVerbosity,FDefaultVerbosity); end; end;