libzypp  17.23.3
ZConfig.cc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 extern "C"
13 {
14 #include <features.h>
15 #include <sys/utsname.h>
16 #if __GLIBC_PREREQ (2,16)
17 #include <sys/auxv.h> // getauxval for PPC64P7 detection
18 #endif
19 #include <unistd.h>
20 #include <solv/solvversion.h>
21 }
22 #include <iostream>
23 #include <fstream>
24 #include "zypp/base/LogTools.h"
25 #include "zypp/base/IOStream.h"
26 #include "zypp/base/InputStream.h"
27 #include "zypp/base/String.h"
28 #include "zypp/base/Regex.h"
29 
30 #include "zypp/ZConfig.h"
31 #include "zypp/ZYppFactory.h"
32 #include "zypp/PathInfo.h"
33 #include "zypp/parser/IniDict.h"
34 
35 #include "zypp/sat/Pool.h"
37 
38 using namespace std;
39 using namespace zypp::filesystem;
40 using namespace zypp::parser;
41 
42 #undef ZYPP_BASE_LOGGER_LOGGROUP
43 #define ZYPP_BASE_LOGGER_LOGGROUP "zconfig"
44 
46 namespace zypp
47 {
48 
57  namespace
59  {
60 
63  Arch _autodetectSystemArchitecture()
64  {
65  struct ::utsname buf;
66  if ( ::uname( &buf ) < 0 )
67  {
68  ERR << "Can't determine system architecture" << endl;
69  return Arch_noarch;
70  }
71 
72  Arch architecture( buf.machine );
73  MIL << "Uname architecture is '" << buf.machine << "'" << endl;
74 
75  if ( architecture == Arch_i686 )
76  {
77  // some CPUs report i686 but dont implement cx8 and cmov
78  // check for both flags in /proc/cpuinfo and downgrade
79  // to i586 if either is missing (cf bug #18885)
80  std::ifstream cpuinfo( "/proc/cpuinfo" );
81  if ( cpuinfo )
82  {
83  for( iostr::EachLine in( cpuinfo ); in; in.next() )
84  {
85  if ( str::hasPrefix( *in, "flags" ) )
86  {
87  if ( in->find( "cx8" ) == std::string::npos
88  || in->find( "cmov" ) == std::string::npos )
89  {
90  architecture = Arch_i586;
91  WAR << "CPU lacks 'cx8' or 'cmov': architecture downgraded to '" << architecture << "'" << endl;
92  }
93  break;
94  }
95  }
96  }
97  else
98  {
99  ERR << "Cant open " << PathInfo("/proc/cpuinfo") << endl;
100  }
101  }
102  else if ( architecture == Arch_sparc || architecture == Arch_sparc64 )
103  {
104  // Check for sun4[vum] to get the real arch. (bug #566291)
105  std::ifstream cpuinfo( "/proc/cpuinfo" );
106  if ( cpuinfo )
107  {
108  for( iostr::EachLine in( cpuinfo ); in; in.next() )
109  {
110  if ( str::hasPrefix( *in, "type" ) )
111  {
112  if ( in->find( "sun4v" ) != std::string::npos )
113  {
114  architecture = ( architecture == Arch_sparc64 ? Arch_sparc64v : Arch_sparcv9v );
115  WAR << "CPU has 'sun4v': architecture upgraded to '" << architecture << "'" << endl;
116  }
117  else if ( in->find( "sun4u" ) != std::string::npos )
118  {
119  architecture = ( architecture == Arch_sparc64 ? Arch_sparc64 : Arch_sparcv9 );
120  WAR << "CPU has 'sun4u': architecture upgraded to '" << architecture << "'" << endl;
121  }
122  else if ( in->find( "sun4m" ) != std::string::npos )
123  {
124  architecture = Arch_sparcv8;
125  WAR << "CPU has 'sun4m': architecture upgraded to '" << architecture << "'" << endl;
126  }
127  break;
128  }
129  }
130  }
131  else
132  {
133  ERR << "Cant open " << PathInfo("/proc/cpuinfo") << endl;
134  }
135  }
136  else if ( architecture == Arch_armv7l || architecture == Arch_armv6l )
137  {
138  std::ifstream platform( "/etc/rpm/platform" );
139  if (platform)
140  {
141  for( iostr::EachLine in( platform ); in; in.next() )
142  {
143  if ( str::hasPrefix( *in, "armv7hl-" ) )
144  {
145  architecture = Arch_armv7hl;
146  WAR << "/etc/rpm/platform contains armv7hl-: architecture upgraded to '" << architecture << "'" << endl;
147  break;
148  }
149  if ( str::hasPrefix( *in, "armv6hl-" ) )
150  {
151  architecture = Arch_armv6hl;
152  WAR << "/etc/rpm/platform contains armv6hl-: architecture upgraded to '" << architecture << "'" << endl;
153  break;
154  }
155  }
156  }
157  }
158 #if __GLIBC_PREREQ (2,16)
159  else if ( architecture == Arch_ppc64 )
160  {
161  const char * platform = (const char *)getauxval( AT_PLATFORM );
162  int powerlvl;
163  if ( platform && sscanf( platform, "power%d", &powerlvl ) == 1 && powerlvl > 6 )
164  architecture = Arch_ppc64p7;
165  }
166 #endif
167  return architecture;
168  }
169 
187  Locale _autodetectTextLocale()
188  {
189  Locale ret( Locale::enCode );
190  const char * envlist[] = { "LC_ALL", "LC_MESSAGES", "LANG", NULL };
191  for ( const char ** envvar = envlist; *envvar; ++envvar )
192  {
193  const char * envlang = getenv( *envvar );
194  if ( envlang )
195  {
196  std::string envstr( envlang );
197  if ( envstr != "POSIX" && envstr != "C" )
198  {
199  Locale lang( envstr );
200  if ( lang )
201  {
202  MIL << "Found " << *envvar << "=" << envstr << endl;
203  ret = lang;
204  break;
205  }
206  }
207  }
208  }
209  MIL << "Default text locale is '" << ret << "'" << endl;
210 #warning HACK AROUND BOOST_TEST_CATCH_SYSTEM_ERRORS
211  setenv( "BOOST_TEST_CATCH_SYSTEM_ERRORS", "no", 1 );
212  return ret;
213  }
214 
215 
216  inline Pathname _autodetectSystemRoot()
217  {
218  Target_Ptr target( getZYpp()->getTarget() );
219  return target ? target->root() : Pathname();
220  }
221 
222  inline Pathname _autodetectZyppConfPath()
223  {
224  const char *env_confpath = getenv( "ZYPP_CONF" );
225  return env_confpath ? env_confpath : "/etc/zypp/zypp.conf";
226  }
227 
229  } // namespace zypp
231 
233  template<class Tp>
234  struct Option
235  {
236  typedef Tp value_type;
237 
239  Option( const value_type & initial_r )
240  : _val( initial_r )
241  {}
242 
244  const value_type & get() const
245  { return _val; }
246 
248  operator const value_type &() const
249  { return _val; }
250 
252  void set( const value_type & newval_r )
253  { _val = newval_r; }
254 
257  { return _val; }
258 
259  private:
261  };
262 
264  template<class Tp>
265  struct DefaultOption : public Option<Tp>
266  {
267  typedef Tp value_type;
269 
270  DefaultOption( const value_type & initial_r )
271  : Option<Tp>( initial_r ), _default( initial_r )
272  {}
273 
276  { this->set( _default.get() ); }
277 
279  void restoreToDefault( const value_type & newval_r )
280  { setDefault( newval_r ); restoreToDefault(); }
281 
283  const value_type & getDefault() const
284  { return _default.get(); }
285 
287  void setDefault( const value_type & newval_r )
288  { _default.set( newval_r ); }
289 
290  private:
292  };
293 
295  //
296  // CLASS NAME : ZConfig::Impl
297  //
304  {
305  typedef std::set<std::string> MultiversionSpec;
306 
307  public:
308  Impl( const Pathname & override_r = Pathname() )
309  : _parsedZyppConf ( override_r )
310  , cfg_arch ( defaultSystemArchitecture() )
311  , cfg_textLocale ( defaultTextLocale() )
312  , updateMessagesNotify ( "" )
313  , repo_add_probe ( false )
314  , repo_refresh_delay ( 10 )
315  , repoLabelIsAlias ( false )
316  , download_use_deltarpm ( true )
317  , download_use_deltarpm_always ( false )
318  , download_media_prefer_download( true )
319  , download_mediaMountdir ( "/var/adm/mount" )
320  , download_max_concurrent_connections( 5 )
321  , download_min_download_speed ( 0 )
322  , download_max_download_speed ( 0 )
323  , download_max_silent_tries ( 5 )
324  , download_transfer_timeout ( 180 )
325  , commit_downloadMode ( DownloadDefault )
326  , gpgCheck ( true )
327  , repoGpgCheck ( indeterminate )
328  , pkgGpgCheck ( indeterminate )
329  , solver_focus ( ResolverFocus::Default )
330  , solver_onlyRequires ( false )
331  , solver_allowVendorChange ( false )
332  , solver_dupAllowDowngrade ( true )
333  , solver_dupAllowNameChange ( true )
334  , solver_dupAllowArchChange ( true )
335  , solver_dupAllowVendorChange ( true )
336  , solver_cleandepsOnRemove ( false )
337  , solver_upgradeTestcasesToKeep ( 2 )
338  , solverUpgradeRemoveDroppedPackages( true )
339  , apply_locks_file ( true )
340  , pluginsPath ( "/usr/lib/zypp/plugins" )
341  {
342  MIL << "libzypp: " LIBZYPP_VERSION_STRING << endl;
343  // override_r has higest prio
344  // ZYPP_CONF might override /etc/zypp/zypp.conf
345  if ( _parsedZyppConf.empty() )
346  {
347  _parsedZyppConf = _autodetectZyppConfPath();
348  }
349  else
350  {
351  // Inject this into ZConfig. Be shure this is
352  // allocated via new. See: reconfigureZConfig
353  INT << "Reconfigure to " << _parsedZyppConf << endl;
354  ZConfig::instance()._pimpl.reset( this );
355  }
356  if ( PathInfo(_parsedZyppConf).isExist() )
357  {
358  parser::IniDict dict( _parsedZyppConf );
360  sit != dict.sectionsEnd();
361  ++sit )
362  {
363  string section(*sit);
364  //MIL << section << endl;
365  for ( IniDict::entry_const_iterator it = dict.entriesBegin(*sit);
366  it != dict.entriesEnd(*sit);
367  ++it )
368  {
369  string entry(it->first);
370  string value(it->second);
371  //DBG << (*it).first << "=" << (*it).second << endl;
372  if ( section == "main" )
373  {
374  if ( entry == "arch" )
375  {
376  Arch carch( value );
377  if ( carch != cfg_arch )
378  {
379  WAR << "Overriding system architecture (" << cfg_arch << "): " << carch << endl;
380  cfg_arch = carch;
381  }
382  }
383  else if ( entry == "cachedir" )
384  {
385  cfg_cache_path = Pathname(value);
386  }
387  else if ( entry == "metadatadir" )
388  {
389  cfg_metadata_path = Pathname(value);
390  }
391  else if ( entry == "solvfilesdir" )
392  {
393  cfg_solvfiles_path = Pathname(value);
394  }
395  else if ( entry == "packagesdir" )
396  {
397  cfg_packages_path = Pathname(value);
398  }
399  else if ( entry == "configdir" )
400  {
401  cfg_config_path = Pathname(value);
402  }
403  else if ( entry == "reposdir" )
404  {
405  cfg_known_repos_path = Pathname(value);
406  }
407  else if ( entry == "servicesdir" )
408  {
409  cfg_known_services_path = Pathname(value);
410  }
411  else if ( entry == "varsdir" )
412  {
413  cfg_vars_path = Pathname(value);
414  }
415  else if ( entry == "repo.add.probe" )
416  {
417  repo_add_probe = str::strToBool( value, repo_add_probe );
418  }
419  else if ( entry == "repo.refresh.delay" )
420  {
421  str::strtonum(value, repo_refresh_delay);
422  }
423  else if ( entry == "repo.refresh.locales" )
424  {
425  std::vector<std::string> tmp;
426  str::split( value, back_inserter( tmp ), ", \t" );
427 
428  boost::function<Locale(const std::string &)> transform(
429  [](const std::string & str_r)->Locale{ return Locale(str_r); }
430  );
431  repoRefreshLocales.insert( make_transform_iterator( tmp.begin(), transform ),
432  make_transform_iterator( tmp.end(), transform ) );
433  }
434  else if ( entry == "download.use_deltarpm" )
435  {
436  download_use_deltarpm = str::strToBool( value, download_use_deltarpm );
437  }
438  else if ( entry == "download.use_deltarpm.always" )
439  {
440  download_use_deltarpm_always = str::strToBool( value, download_use_deltarpm_always );
441  }
442  else if ( entry == "download.media_preference" )
443  {
444  download_media_prefer_download.restoreToDefault( str::compareCI( value, "volatile" ) != 0 );
445  }
446 
447  else if ( entry == "download.media_mountdir" )
448  {
449  download_mediaMountdir.restoreToDefault( Pathname(value) );
450  }
451 
452  else if ( entry == "download.max_concurrent_connections" )
453  {
454  str::strtonum(value, download_max_concurrent_connections);
455  }
456  else if ( entry == "download.min_download_speed" )
457  {
458  str::strtonum(value, download_min_download_speed);
459  }
460  else if ( entry == "download.max_download_speed" )
461  {
462  str::strtonum(value, download_max_download_speed);
463  }
464  else if ( entry == "download.max_silent_tries" )
465  {
466  str::strtonum(value, download_max_silent_tries);
467  }
468  else if ( entry == "download.transfer_timeout" )
469  {
470  str::strtonum(value, download_transfer_timeout);
471  if ( download_transfer_timeout < 0 ) download_transfer_timeout = 0;
472  else if ( download_transfer_timeout > 3600 ) download_transfer_timeout = 3600;
473  }
474  else if ( entry == "commit.downloadMode" )
475  {
476  commit_downloadMode.set( deserializeDownloadMode( value ) );
477  }
478  else if ( entry == "gpgcheck" )
479  {
480  gpgCheck.restoreToDefault( str::strToBool( value, gpgCheck ) );
481  }
482  else if ( entry == "repo_gpgcheck" )
483  {
484  repoGpgCheck.restoreToDefault( str::strToTriBool( value ) );
485  }
486  else if ( entry == "pkg_gpgcheck" )
487  {
488  pkgGpgCheck.restoreToDefault( str::strToTriBool( value ) );
489  }
490  else if ( entry == "vendordir" )
491  {
492  cfg_vendor_path = Pathname(value);
493  }
494  else if ( entry == "multiversiondir" )
495  {
496  cfg_multiversion_path = Pathname(value);
497  }
498  else if ( entry == "multiversion.kernels" )
499  {
500  cfg_kernel_keep_spec = value;
501  }
502  else if ( entry == "solver.focus" )
503  {
504  fromString( value, solver_focus );
505  }
506  else if ( entry == "solver.onlyRequires" )
507  {
508  solver_onlyRequires.set( str::strToBool( value, solver_onlyRequires ) );
509  }
510  else if ( entry == "solver.allowVendorChange" )
511  {
512  solver_allowVendorChange.set( str::strToBool( value, solver_allowVendorChange ) );
513  }
514  else if ( entry == "solver.dupAllowDowngrade" )
515  {
516  solver_dupAllowDowngrade.set( str::strToBool( value, solver_dupAllowDowngrade ) );
517  }
518  else if ( entry == "solver.dupAllowNameChange" )
519  {
520  solver_dupAllowNameChange.set( str::strToBool( value, solver_dupAllowNameChange ) );
521  }
522  else if ( entry == "solver.dupAllowArchChange" )
523  {
524  solver_dupAllowArchChange.set( str::strToBool( value, solver_dupAllowArchChange ) );
525  }
526  else if ( entry == "solver.dupAllowVendorChange" )
527  {
528  solver_dupAllowVendorChange.set( str::strToBool( value, solver_dupAllowVendorChange ) );
529  }
530  else if ( entry == "solver.cleandepsOnRemove" )
531  {
532  solver_cleandepsOnRemove.set( str::strToBool( value, solver_cleandepsOnRemove ) );
533  }
534  else if ( entry == "solver.upgradeTestcasesToKeep" )
535  {
536  solver_upgradeTestcasesToKeep.set( str::strtonum<unsigned>( value ) );
537  }
538  else if ( entry == "solver.upgradeRemoveDroppedPackages" )
539  {
540  solverUpgradeRemoveDroppedPackages.restoreToDefault( str::strToBool( value, solverUpgradeRemoveDroppedPackages.getDefault() ) );
541  }
542  else if ( entry == "solver.checkSystemFile" )
543  {
544  solver_checkSystemFile = Pathname(value);
545  }
546  else if ( entry == "solver.checkSystemFileDir" )
547  {
548  solver_checkSystemFileDir = Pathname(value);
549  }
550  else if ( entry == "multiversion" )
551  {
552  MultiversionSpec & defSpec( _multiversionMap.getDefaultSpec() );
553  str::splitEscaped( value, std::inserter( defSpec, defSpec.end() ), ", \t" );
554  }
555  else if ( entry == "locksfile.path" )
556  {
557  locks_file = Pathname(value);
558  }
559  else if ( entry == "locksfile.apply" )
560  {
561  apply_locks_file = str::strToBool( value, apply_locks_file );
562  }
563  else if ( entry == "update.datadir" )
564  {
565  update_data_path = Pathname(value);
566  }
567  else if ( entry == "update.scriptsdir" )
568  {
569  update_scripts_path = Pathname(value);
570  }
571  else if ( entry == "update.messagessdir" )
572  {
573  update_messages_path = Pathname(value);
574  }
575  else if ( entry == "update.messages.notify" )
576  {
577  updateMessagesNotify.set( value );
578  }
579  else if ( entry == "rpm.install.excludedocs" )
580  {
581  rpmInstallFlags.setFlag( target::rpm::RPMINST_EXCLUDEDOCS,
582  str::strToBool( value, false ) );
583  }
584  else if ( entry == "history.logfile" )
585  {
586  history_log_path = Pathname(value);
587  }
588  else if ( entry == "credentials.global.dir" )
589  {
590  credentials_global_dir_path = Pathname(value);
591  }
592  else if ( entry == "credentials.global.file" )
593  {
594  credentials_global_file_path = Pathname(value);
595  }
596  }
597  }
598  }
599  //
600 
601  }
602  else
603  {
604  MIL << _parsedZyppConf << " not found, using defaults instead." << endl;
605  _parsedZyppConf = _parsedZyppConf.extend( " (NOT FOUND)" );
606  }
607 
608  // legacy:
609  if ( getenv( "ZYPP_TESTSUITE_FAKE_ARCH" ) )
610  {
611  Arch carch( getenv( "ZYPP_TESTSUITE_FAKE_ARCH" ) );
612  if ( carch != cfg_arch )
613  {
614  WAR << "ZYPP_TESTSUITE_FAKE_ARCH: Overriding system architecture (" << cfg_arch << "): " << carch << endl;
615  cfg_arch = carch;
616  }
617  }
618  MIL << "ZConfig singleton created." << endl;
619  }
620 
622  {}
623 
624  public:
627 
630 
635 
641 
644  std::string cfg_kernel_keep_spec;
646 
651 
656 
661 
667 
669 
673 
684 
687 
688  MultiversionSpec & multiversion() { return getMultiversion(); }
689  const MultiversionSpec & multiversion() const { return getMultiversion(); }
690 
692 
693  target::rpm::RpmInstFlags rpmInstallFlags;
694 
698 
699  std::string userData;
700 
702 
703  private:
704  // HACK for bnc#906096: let pool re-evaluate multiversion spec
705  // if target root changes. ZConfig returns data sensitive to
706  // current target root.
707  // TODO Actually we'd need to scan the target systems zypp.conf and
708  // overlay all system specific values.
710  {
711  typedef std::map<Pathname,MultiversionSpec> SpecMap;
712 
713  MultiversionSpec & getSpec( Pathname root_r, const Impl & zConfImpl_r ) // from system at root
714  {
715  // _specMap[] - the plain zypp.conf value
716  // _specMap[/] - combine [] and multiversion.d scan
717  // _specMap[root] - scan root/zypp.conf and root/multiversion.d
718 
719  if ( root_r.empty() )
720  root_r = "/";
721  bool cacheHit = _specMap.count( root_r );
722  MultiversionSpec & ret( _specMap[root_r] ); // creates new entry on the fly
723 
724  if ( ! cacheHit )
725  {
726  if ( root_r == "/" )
727  ret.swap( _specMap[Pathname()] ); // original zypp.conf
728  else
729  scanConfAt( root_r, ret, zConfImpl_r ); // scan zypp.conf at root_r
730  scanDirAt( root_r, ret, zConfImpl_r ); // add multiversion.d at root_r
731  using zypp::operator<<;
732  MIL << "MultiversionSpec '" << root_r << "' = " << ret << endl;
733  }
734  return ret;
735  }
736 
737  MultiversionSpec & getDefaultSpec() // Spec from zypp.conf parsing; called before any getSpec
738  { return _specMap[Pathname()]; }
739 
740  private:
741  void scanConfAt( const Pathname root_r, MultiversionSpec & spec_r, const Impl & zConfImpl_r )
742  {
743  static const str::regex rx( "^multiversion *= *(.*)" );
744  str::smatch what;
745  iostr::simpleParseFile( InputStream( Pathname::assertprefix( root_r, _autodetectZyppConfPath() ) ),
746  [&]( int num_r, std::string line_r )->bool
747  {
748  if ( line_r[0] == 'm' && str::regex_match( line_r, what, rx ) )
749  {
750  str::splitEscaped( what[1], std::inserter( spec_r, spec_r.end() ), ", \t" );
751  return false; // stop after match
752  }
753  return true;
754  } );
755  }
756 
757  void scanDirAt( const Pathname root_r, MultiversionSpec & spec_r, const Impl & zConfImpl_r )
758  {
759  // NOTE: Actually we'd need to scan and use the root_r! zypp.conf values.
760  Pathname multiversionDir( zConfImpl_r.cfg_multiversion_path );
761  if ( multiversionDir.empty() )
762  multiversionDir = ( zConfImpl_r.cfg_config_path.empty()
763  ? Pathname("/etc/zypp")
764  : zConfImpl_r.cfg_config_path ) / "multiversion.d";
765 
766  filesystem::dirForEach( Pathname::assertprefix( root_r, multiversionDir ),
767  [&spec_r]( const Pathname & dir_r, const char *const & name_r )->bool
768  {
769  MIL << "Parsing " << dir_r/name_r << endl;
770  iostr::simpleParseFile( InputStream( dir_r/name_r ),
771  [&spec_r]( int num_r, std::string line_r )->bool
772  {
773  DBG << " found " << line_r << endl;
774  spec_r.insert( std::move(line_r) );
775  return true;
776  } );
777  return true;
778  } );
779  }
780 
781  private:
783  };
784 
786  { return _multiversionMap.getSpec( _autodetectSystemRoot(), *this ); }
787 
789  };
791 
792  // Backdoor to redirect ZConfig from within the running
793  // TEST-application. HANDLE WITH CARE!
794  void reconfigureZConfig( const Pathname & override_r )
795  {
796  // ctor puts itself unter smart pointer control.
797  new ZConfig::Impl( override_r );
798  }
799 
801  //
802  // METHOD NAME : ZConfig::instance
803  // METHOD TYPE : ZConfig &
804  //
805  ZConfig & ZConfig::instance()
806  {
807  static ZConfig _instance; // The singleton
808  return _instance;
809  }
810 
812  //
813  // METHOD NAME : ZConfig::ZConfig
814  // METHOD TYPE : Ctor
815  //
816  ZConfig::ZConfig()
817  : _pimpl( new Impl )
818  {
819  about( MIL );
820  }
821 
823  //
824  // METHOD NAME : ZConfig::~ZConfig
825  // METHOD TYPE : Dtor
826  //
828  {}
829 
831  { return _autodetectSystemRoot(); }
832 
833 
835  {
836  return ( _pimpl->cfg_repo_mgr_root_path.empty()
837  ? systemRoot() : _pimpl->cfg_repo_mgr_root_path );
838  }
839 
841  { _pimpl->cfg_repo_mgr_root_path = root; }
842 
844  //
845  // system architecture
846  //
848 
850  {
851  static Arch _val( _autodetectSystemArchitecture() );
852  return _val;
853  }
854 
856  { return _pimpl->cfg_arch; }
857 
858  void ZConfig::setSystemArchitecture( const Arch & arch_r )
859  {
860  if ( arch_r != _pimpl->cfg_arch )
861  {
862  WAR << "Overriding system architecture (" << _pimpl->cfg_arch << "): " << arch_r << endl;
863  _pimpl->cfg_arch = arch_r;
864  }
865  }
866 
868  //
869  // text locale
870  //
872 
874  {
875  static Locale _val( _autodetectTextLocale() );
876  return _val;
877  }
878 
880  { return _pimpl->cfg_textLocale; }
881 
882  void ZConfig::setTextLocale( const Locale & locale_r )
883  {
884  if ( locale_r != _pimpl->cfg_textLocale )
885  {
886  WAR << "Overriding text locale (" << _pimpl->cfg_textLocale << "): " << locale_r << endl;
887  _pimpl->cfg_textLocale = locale_r;
888 #warning prefer signal
889  sat::Pool::instance().setTextLocale( locale_r );
890  }
891  }
892 
894  // user data
896 
897  bool ZConfig::hasUserData() const
898  { return !_pimpl->userData.empty(); }
899 
900  std::string ZConfig::userData() const
901  { return _pimpl->userData; }
902 
903  bool ZConfig::setUserData( const std::string & str_r )
904  {
905  for_( ch, str_r.begin(), str_r.end() )
906  {
907  if ( *ch < ' ' && *ch != '\t' )
908  {
909  ERR << "New user data string rejectded: char " << (int)*ch << " at position " << (ch - str_r.begin()) << endl;
910  return false;
911  }
912  }
913  MIL << "Set user data string to '" << str_r << "'" << endl;
914  _pimpl->userData = str_r;
915  return true;
916  }
917 
919 
921  {
922  return ( _pimpl->cfg_cache_path.empty()
923  ? Pathname("/var/cache/zypp") : _pimpl->cfg_cache_path );
924  }
925 
927  {
928  return ( _pimpl->cfg_cache_path.empty()
929  ? Pathname("/var/cache/zypp/pubkeys") : _pimpl->cfg_cache_path/"pubkeys" );
930  }
931 
933  {
934  _pimpl->cfg_cache_path = path_r;
935  }
936 
938  {
939  return ( _pimpl->cfg_metadata_path.empty()
940  ? (repoCachePath()/"raw") : _pimpl->cfg_metadata_path );
941  }
942 
944  {
945  _pimpl->cfg_metadata_path = path_r;
946  }
947 
949  {
950  return ( _pimpl->cfg_solvfiles_path.empty()
951  ? (repoCachePath()/"solv") : _pimpl->cfg_solvfiles_path );
952  }
953 
955  {
956  _pimpl->cfg_solvfiles_path = path_r;
957  }
958 
960  {
961  return ( _pimpl->cfg_packages_path.empty()
962  ? (repoCachePath()/"packages") : _pimpl->cfg_packages_path );
963  }
964 
966  {
967  _pimpl->cfg_packages_path = path_r;
968  }
969 
971 
973  {
974  return ( _pimpl->cfg_config_path.empty()
975  ? Pathname("/etc/zypp") : _pimpl->cfg_config_path );
976  }
977 
979  {
980  return ( _pimpl->cfg_known_repos_path.empty()
981  ? (configPath()/"repos.d") : _pimpl->cfg_known_repos_path );
982  }
983 
985  {
986  return ( _pimpl->cfg_known_services_path.empty()
987  ? (configPath()/"services.d") : _pimpl->cfg_known_services_path );
988  }
989 
991  { return configPath()/"needreboot"; }
992 
994  { return configPath()/"needreboot.d"; }
995 
997  {
998  return ( _pimpl->cfg_vars_path.empty()
999  ? (configPath()/"vars.d") : _pimpl->cfg_vars_path );
1000  }
1001 
1003  {
1004  return ( _pimpl->cfg_vendor_path.empty()
1005  ? (configPath()/"vendors.d") : _pimpl->cfg_vendor_path );
1006  }
1007 
1009  {
1010  return ( _pimpl->locks_file.empty()
1011  ? (configPath()/"locks") : _pimpl->locks_file );
1012  }
1013 
1015 
1017  { return _pimpl->repo_add_probe; }
1018 
1020  { return _pimpl->repo_refresh_delay; }
1021 
1023  { return _pimpl->repoRefreshLocales.empty() ? Target::requestedLocales("") :_pimpl->repoRefreshLocales; }
1024 
1026  { return _pimpl->repoLabelIsAlias; }
1027 
1028  void ZConfig::repoLabelIsAlias( bool yesno_r )
1029  { _pimpl->repoLabelIsAlias = yesno_r; }
1030 
1032  { return _pimpl->download_use_deltarpm; }
1033 
1035  { return download_use_deltarpm() && _pimpl->download_use_deltarpm_always; }
1036 
1038  { return _pimpl->download_media_prefer_download; }
1039 
1041  { _pimpl->download_media_prefer_download.set( yesno_r ); }
1042 
1044  { _pimpl->download_media_prefer_download.restoreToDefault(); }
1045 
1047  { return _pimpl->download_max_concurrent_connections; }
1048 
1050  { return _pimpl->download_min_download_speed; }
1051 
1053  { return _pimpl->download_max_download_speed; }
1054 
1056  { return _pimpl->download_max_silent_tries; }
1057 
1059  { return _pimpl->download_transfer_timeout; }
1060 
1061  Pathname ZConfig::download_mediaMountdir() const { return _pimpl->download_mediaMountdir; }
1062  void ZConfig::set_download_mediaMountdir( Pathname newval_r ) { _pimpl->download_mediaMountdir.set( std::move(newval_r) ); }
1063  void ZConfig::set_default_download_mediaMountdir() { _pimpl->download_mediaMountdir.restoreToDefault(); }
1064 
1066  { return _pimpl->commit_downloadMode; }
1067 
1068 
1069  bool ZConfig::gpgCheck() const { return _pimpl->gpgCheck; }
1070  TriBool ZConfig::repoGpgCheck() const { return _pimpl->repoGpgCheck; }
1071  TriBool ZConfig::pkgGpgCheck() const { return _pimpl->pkgGpgCheck; }
1072 
1073  void ZConfig::setGpgCheck( bool val_r ) { _pimpl->gpgCheck.set( val_r ); }
1074  void ZConfig::setRepoGpgCheck( TriBool val_r ) { _pimpl->repoGpgCheck.set( val_r ); }
1075  void ZConfig::setPkgGpgCheck( TriBool val_r ) { _pimpl->pkgGpgCheck.set( val_r ); }
1076 
1077  void ZConfig::resetGpgCheck() { _pimpl->gpgCheck.restoreToDefault(); }
1078  void ZConfig::resetRepoGpgCheck() { _pimpl->repoGpgCheck.restoreToDefault(); }
1079  void ZConfig::resetPkgGpgCheck() { _pimpl->pkgGpgCheck.restoreToDefault(); }
1080 
1081  ResolverFocus ZConfig::solver_focus() const { return _pimpl->solver_focus; }
1082 
1084  { return _pimpl->solver_onlyRequires; }
1085 
1087  { return _pimpl->solver_allowVendorChange; }
1088 
1089  bool ZConfig::solver_dupAllowDowngrade() const { return _pimpl->solver_dupAllowDowngrade; }
1090  bool ZConfig::solver_dupAllowNameChange() const { return _pimpl->solver_dupAllowNameChange; }
1091  bool ZConfig::solver_dupAllowArchChange() const { return _pimpl->solver_dupAllowArchChange; }
1092  bool ZConfig::solver_dupAllowVendorChange() const { return _pimpl->solver_dupAllowVendorChange; }
1093 
1095  { return _pimpl->solver_cleandepsOnRemove; }
1096 
1098  { return ( _pimpl->solver_checkSystemFile.empty()
1099  ? (configPath()/"systemCheck") : _pimpl->solver_checkSystemFile ); }
1100 
1102  { return ( _pimpl->solver_checkSystemFileDir.empty()
1103  ? (configPath()/"systemCheck.d") : _pimpl->solver_checkSystemFileDir ); }
1104 
1106  { return _pimpl->solver_upgradeTestcasesToKeep; }
1107 
1108  bool ZConfig::solverUpgradeRemoveDroppedPackages() const { return _pimpl->solverUpgradeRemoveDroppedPackages; }
1109  void ZConfig::setSolverUpgradeRemoveDroppedPackages( bool val_r ) { _pimpl->solverUpgradeRemoveDroppedPackages.set( val_r ); }
1110  void ZConfig::resetSolverUpgradeRemoveDroppedPackages() { _pimpl->solverUpgradeRemoveDroppedPackages.restoreToDefault(); }
1111 
1112  namespace
1113  {
1114  inline void sigMultiversionSpecChanged()
1115  {
1117  }
1118  }
1119 
1120  const std::set<std::string> & ZConfig::multiversionSpec() const { return _pimpl->multiversion(); }
1121  void ZConfig::multiversionSpec( std::set<std::string> new_r ) { _pimpl->multiversion().swap( new_r ); sigMultiversionSpecChanged(); }
1122  void ZConfig::clearMultiversionSpec() { _pimpl->multiversion().clear(); sigMultiversionSpecChanged(); }
1123  void ZConfig::addMultiversionSpec( const std::string & name_r ) { _pimpl->multiversion().insert( name_r ); sigMultiversionSpecChanged(); }
1124  void ZConfig::removeMultiversionSpec( const std::string & name_r ) { _pimpl->multiversion().erase( name_r ); sigMultiversionSpecChanged(); }
1125 
1127  { return _pimpl->apply_locks_file; }
1128 
1130  {
1131  return ( _pimpl->update_data_path.empty()
1132  ? Pathname("/var/adm") : _pimpl->update_data_path );
1133  }
1134 
1136  {
1137  return ( _pimpl->update_messages_path.empty()
1138  ? Pathname(update_dataPath()/"update-messages") : _pimpl->update_messages_path );
1139  }
1140 
1142  {
1143  return ( _pimpl->update_scripts_path.empty()
1144  ? Pathname(update_dataPath()/"update-scripts") : _pimpl->update_scripts_path );
1145  }
1146 
1147  std::string ZConfig::updateMessagesNotify() const
1148  { return _pimpl->updateMessagesNotify; }
1149 
1150  void ZConfig::setUpdateMessagesNotify( const std::string & val_r )
1151  { _pimpl->updateMessagesNotify.set( val_r ); }
1152 
1154  { _pimpl->updateMessagesNotify.restoreToDefault(); }
1155 
1157 
1158  target::rpm::RpmInstFlags ZConfig::rpmInstallFlags() const
1159  { return _pimpl->rpmInstallFlags; }
1160 
1161 
1163  {
1164  return ( _pimpl->history_log_path.empty() ?
1165  Pathname("/var/log/zypp/history") : _pimpl->history_log_path );
1166  }
1167 
1169  {
1170  return ( _pimpl->credentials_global_dir_path.empty() ?
1171  Pathname("/etc/zypp/credentials.d") : _pimpl->credentials_global_dir_path );
1172  }
1173 
1175  {
1176  return ( _pimpl->credentials_global_file_path.empty() ?
1177  Pathname("/etc/zypp/credentials.cat") : _pimpl->credentials_global_file_path );
1178  }
1179 
1181 
1182  std::string ZConfig::distroverpkg() const
1183  { return "system-release"; }
1184 
1186 
1188  { return _pimpl->pluginsPath.get(); }
1189 
1191  {
1192  return _pimpl->cfg_kernel_keep_spec;
1193  }
1194 
1196 
1197  std::ostream & ZConfig::about( std::ostream & str ) const
1198  {
1199  str << "libzypp: " LIBZYPP_VERSION_STRING << endl;
1200 
1201  str << "libsolv: " << solv_version;
1202  if ( ::strcmp( solv_version, LIBSOLV_VERSION_STRING ) )
1203  str << " (built against " << LIBSOLV_VERSION_STRING << ")";
1204  str << endl;
1205 
1206  str << "zypp.conf: '" << _pimpl->_parsedZyppConf << "'" << endl;
1207  str << "TextLocale: '" << textLocale() << "' (" << defaultTextLocale() << ")" << endl;
1208  str << "SystemArchitecture: '" << systemArchitecture() << "' (" << defaultSystemArchitecture() << ")" << endl;
1209  return str;
1210  }
1211 
1213 } // namespace zypp
zypp::sat::Pool::instance
static Pool instance()
Singleton ctor.
Definition: Pool.h:55
zypp::ZConfig::Impl::cfg_solvfiles_path
Pathname cfg_solvfiles_path
Definition: ZConfig.cc:633
zypp::ZConfig::Impl::solver_dupAllowDowngrade
Option< bool > solver_dupAllowDowngrade
Definition: ZConfig.cc:677
zypp::ZConfig::Impl::MultiversionMap::scanConfAt
void scanConfAt(const Pathname root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
Definition: ZConfig.cc:741
zypp::ZConfig::resetSolverUpgradeRemoveDroppedPackages
void resetSolverUpgradeRemoveDroppedPackages()
Reset solverUpgradeRemoveDroppedPackages to the zypp.conf default.
Definition: ZConfig.cc:1110
zypp::ZConfig::Impl::apply_locks_file
bool apply_locks_file
Definition: ZConfig.cc:691
zypp::ZConfig::repo_add_probe
bool repo_add_probe() const
Whether repository urls should be probed.
Definition: ZConfig.cc:1016
zypp::sat::detail::PoolImpl::multiversionSpecChanged
void multiversionSpecChanged()
Definition: PoolImpl.cc:607
zypp::ZConfig::Impl::cfg_arch
Arch cfg_arch
Definition: ZConfig.cc:628
zypp::ZConfig::Impl::solver_cleandepsOnRemove
Option< bool > solver_cleandepsOnRemove
Definition: ZConfig.cc:681
zypp::str::strToTriBool
TriBool strToTriBool(const C_Str &str)
Parse str into a bool if it's a legal true or false string; else indterminate.
Definition: String.cc:89
zypp::parser::IniDict::sectionsBegin
section_const_iterator sectionsBegin() const
Definition: IniDict.cc:94
zypp::ZConfig::Impl::multiversion
MultiversionSpec & multiversion()
Definition: ZConfig.cc:688
zypp::Option::_val
value_type _val
Definition: ZConfig.cc:260
zypp::DefaultOption::DefaultOption
DefaultOption(const value_type &initial_r)
Definition: ZConfig.cc:270
zypp::ZConfig::solver_dupAllowNameChange
bool solver_dupAllowNameChange() const
DUP tune: Whether to follow package renames upon DUP.
Definition: ZConfig.cc:1090
zypp::reconfigureZConfig
void reconfigureZConfig(const Pathname &override_r)
Definition: ZConfig.cc:794
zypp::ZConfig::setSolverUpgradeRemoveDroppedPackages
void setSolverUpgradeRemoveDroppedPackages(bool val_r)
Set solverUpgradeRemoveDroppedPackages to val_r.
Definition: ZConfig.cc:1109
PathInfo.h
zypp::ZConfig::repoGpgCheck
TriBool repoGpgCheck() const
Check repo matadata signatures (indeterminate - according to gpgcheck)
Definition: ZConfig.cc:1070
zypp::ZConfig::apply_locks_file
bool apply_locks_file() const
Whether locks file should be read and applied after start (true)
Definition: ZConfig.cc:1126
zypp::ZConfig::resetUpdateMessagesNotify
void resetUpdateMessagesNotify()
Reset to the zypp.conf default.
Definition: ZConfig.cc:1153
zypp::ZConfig::commit_downloadMode
DownloadMode commit_downloadMode() const
Commit download policy to use as default.
Definition: ZConfig.cc:1065
zypp::ZConfig::download_transfer_timeout
long download_transfer_timeout() const
Maximum time in seconds that you allow a transfer operation to take.
Definition: ZConfig.cc:1058
zypp::ZConfig::Impl::update_scripts_path
Pathname update_scripts_path
Definition: ZConfig.cc:648
zypp::ZConfig::configPath
Pathname configPath() const
Path where the configfiles are kept (/etc/zypp).
Definition: ZConfig.cc:972
zypp::ZConfig::Impl::cfg_known_services_path
Pathname cfg_known_services_path
Definition: ZConfig.cc:638
ZYppFactory.h
zypp::ZConfig::Impl::download_use_deltarpm
bool download_use_deltarpm
Definition: ZConfig.cc:657
zypp::ZConfig::solver_dupAllowArchChange
bool solver_dupAllowArchChange() const
DUP tune: Whether to allow package arch changes upon DUP.
Definition: ZConfig.cc:1091
zypp::ZConfig::Impl::repoRefreshLocales
LocaleSet repoRefreshLocales
Definition: ZConfig.cc:654
zypp::ZConfig::Impl::download_transfer_timeout
int download_transfer_timeout
Definition: ZConfig.cc:666
zypp::ZConfig::repoPackagesPath
Pathname repoPackagesPath() const
Path where the repo packages are downloaded and kept (repoCachePath()/packages).
Definition: ZConfig.cc:959
zypp::ZConfig::setRepoCachePath
void setRepoCachePath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:932
zypp::ResolverFocus::Default
Request the standard behavior (as defined in zypp.conf or 'Job')
zypp::ZConfig::setRepoManagerRoot
void setRepoManagerRoot(const Pathname &root)
Sets the RepoManager root directory.
Definition: ZConfig.cc:840
zypp::ZConfig::Impl::solver_dupAllowVendorChange
Option< bool > solver_dupAllowVendorChange
Definition: ZConfig.cc:680
zypp::Option::get
const value_type & get() const
Get the value.
Definition: ZConfig.cc:244
zypp::DefaultOption::restoreToDefault
void restoreToDefault()
Reset value to the current default.
Definition: ZConfig.cc:275
zypp::ZConfig::solver_checkSystemFileDir
Pathname solver_checkSystemFileDir() const
Directory, which may or may not contain files in which dependencies described which has to be fulfill...
Definition: ZConfig.cc:1101
zypp::ZConfig::Impl::cfg_metadata_path
Pathname cfg_metadata_path
Definition: ZConfig.cc:632
zypp::ZConfig::multiversionSpec
const std::set< std::string > & multiversionSpec() const
Definition: ZConfig.cc:1120
zypp::ZConfig::Impl::update_messages_path
Pathname update_messages_path
Definition: ZConfig.cc:649
zypp::ZConfig::solver_onlyRequires
bool solver_onlyRequires() const
Solver regards required packages,patterns,...
Definition: ZConfig.cc:1083
zypp::ZConfig::Impl::download_max_concurrent_connections
int download_max_concurrent_connections
Definition: ZConfig.cc:662
zypp::Option::Option
Option(const value_type &initial_r)
No default ctor, explicit initialisation!
Definition: ZConfig.cc:239
zypp::ZConfig::Impl::~Impl
~Impl()
Definition: ZConfig.cc:621
zypp::ZConfig::set_default_download_media_prefer_download
void set_default_download_media_prefer_download()
Set download_media_prefer_download to the configfiles default.
Definition: ZConfig.cc:1043
zypp::ZConfig::locksFile
Pathname locksFile() const
Path where zypp can find or create lock file (configPath()/locks)
Definition: ZConfig.cc:1008
zypp::ZConfig::solver_allowVendorChange
bool solver_allowVendorChange() const
Whether vendor check is by default enabled.
Definition: ZConfig.cc:1086
zypp::Option::value_type
Tp value_type
Definition: ZConfig.cc:236
zypp::Option
Mutable option.
Definition: ZConfig.cc:234
ZConfig.h
zypp::ZConfig::download_max_download_speed
long download_max_download_speed() const
Maximum download speed (bytes per second)
Definition: ZConfig.cc:1052
zypp::ZConfig::Impl::rpmInstallFlags
target::rpm::RpmInstFlags rpmInstallFlags
Definition: ZConfig.cc:693
zypp::filesystem
Types and functions for filesystem operations.
Definition: Glob.cc:23
MIL
#define MIL
Definition: Logger.h:79
zypp::ZConfig::repoCachePath
Pathname repoCachePath() const
Path where the caches are kept (/var/cache/zypp)
Definition: ZConfig.cc:920
zypp::ZConfig::Impl::cfg_config_path
Pathname cfg_config_path
Definition: ZConfig.cc:636
zypp::ZConfig::Impl::_parsedZyppConf
Pathname _parsedZyppConf
Remember any parsed zypp.conf.
Definition: ZConfig.cc:626
zypp::Option::ref
value_type & ref()
Non-const reference to set a new value.
Definition: ZConfig.cc:256
zypp::ZConfig::Impl::MultiversionSpec
std::set< std::string > MultiversionSpec
Definition: ZConfig.cc:305
zypp::DefaultOption::value_type
Tp value_type
Definition: ZConfig.cc:267
zypp::ZConfig::Impl::MultiversionMap::scanDirAt
void scanDirAt(const Pathname root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
Definition: ZConfig.cc:757
zypp::ZConfig::vendorPath
Pathname vendorPath() const
Directory for equivalent vendor definitions (configPath()/vendors.d)
Definition: ZConfig.cc:1002
zypp::str::strToBool
bool strToBool(const C_Str &str, bool default_r)
Parse str into a bool depending on the default value.
Definition: String.h:426
zypp::iostr::simpleParseFile
int simpleParseFile(std::istream &str_r, ParseFlags flags_r, function< bool(int, std::string)> consume_r)
Simple lineparser optionally trimming and skipping comments.
Definition: IOStream.cc:123
zypp::sat::detail::PoolMember::myPool
static PoolImpl & myPool()
Definition: PoolImpl.cc:176
zypp::ZConfig::solverUpgradeRemoveDroppedPackages
bool solverUpgradeRemoveDroppedPackages() const
Whether dist upgrade should remove a products dropped packages (true).
Definition: ZConfig.cc:1108
zypp::ZConfig::needrebootPath
Pathname needrebootPath() const
Path where the custom needreboot config files are kept (configPath()/needreboot.d).
Definition: ZConfig.cc:993
zypp::ZConfig::Impl::MultiversionMap::getSpec
MultiversionSpec & getSpec(Pathname root_r, const Impl &zConfImpl_r)
Definition: ZConfig.cc:713
zypp::ZConfig::Impl::cfg_cache_path
Pathname cfg_cache_path
Definition: ZConfig.cc:631
zypp::ZConfig::update_dataPath
Pathname update_dataPath() const
Path where the update items are kept (/var/adm)
Definition: ZConfig.cc:1129
zypp::ZConfig::download_min_download_speed
long download_min_download_speed() const
Minimum download speed (bytes per second) until the connection is dropped.
Definition: ZConfig.cc:1049
zypp::ZConfig::download_max_concurrent_connections
long download_max_concurrent_connections() const
Maximum number of concurrent connections for a single transfer.
Definition: ZConfig.cc:1046
zypp::ZConfig::clearMultiversionSpec
void clearMultiversionSpec()
Definition: ZConfig.cc:1122
zypp::ZConfig::Impl::download_media_prefer_download
DefaultOption< bool > download_media_prefer_download
Definition: ZConfig.cc:659
zypp::ZConfig::Impl::download_mediaMountdir
DefaultOption< Pathname > download_mediaMountdir
Definition: ZConfig.cc:660
INT
#define INT
Definition: Logger.h:83
zypp::ZConfig::Impl::solver_allowVendorChange
Option< bool > solver_allowVendorChange
Definition: ZConfig.cc:676
zypp::ZConfig::setTextLocale
void setTextLocale(const Locale &locale_r)
Set the preferred locale for translated texts.
Definition: ZConfig.cc:882
zypp::ZConfig::Impl::credentials_global_dir_path
Pathname credentials_global_dir_path
Definition: ZConfig.cc:696
zypp::ResolverFocus
ResolverFocus
The resolvers general attitude.
Definition: ResolverFocus.h:21
zypp::Arch
Architecture.
Definition: Arch.h:36
zypp::Target::requestedLocales
LocaleSet requestedLocales() const
Languages to be supported by the system.
Definition: Target.cc:94
IOStream.h
zypp::ZConfig::knownServicesPath
Pathname knownServicesPath() const
Path where the known services .service files are kept (configPath()/services.d).
Definition: ZConfig.cc:984
zypp::ZConfig::Impl::cfg_kernel_keep_spec
std::string cfg_kernel_keep_spec
Definition: ZConfig.cc:644
zypp::ZConfig::Impl::update_data_path
Pathname update_data_path
Definition: ZConfig.cc:647
zypp::ZConfig::solver_upgradeTestcasesToKeep
unsigned solver_upgradeTestcasesToKeep() const
When committing a dist upgrade (e.g.
Definition: ZConfig.cc:1105
zypp::ZConfig::update_messagesPath
Pathname update_messagesPath() const
Path where the repo solv files are created and kept (update_dataPath()/solv).
Definition: ZConfig.cc:1135
zypp::ZConfig::repoManagerRoot
Pathname repoManagerRoot() const
The RepoManager root directory.
Definition: ZConfig.cc:834
zypp::ZConfig::Impl::credentials_global_file_path
Pathname credentials_global_file_path
Definition: ZConfig.cc:697
zypp::ZConfig::updateMessagesNotify
std::string updateMessagesNotify() const
Command definition for sending update messages.
Definition: ZConfig.cc:1147
bool
zypp::ZConfig::setUserData
bool setUserData(const std::string &str_r)
Set a new userData string.
Definition: ZConfig.cc:903
zypp::ZConfig::setRepoSolvfilesPath
void setRepoSolvfilesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:954
zypp::ZConfig::textLocale
Locale textLocale() const
The locale for translated texts zypp uses.
Definition: ZConfig.cc:879
zypp::parser::IniDict
Parses a INI file and offers its structure as a dictionary.
Definition: IniDict.h:40
zypp::ZConfig::Impl::repo_add_probe
bool repo_add_probe
Definition: ZConfig.cc:652
zypp::ZConfig::setPkgGpgCheck
void setPkgGpgCheck(TriBool val_r)
Change the value.
Definition: ZConfig.cc:1075
zypp::ZConfig::resetRepoGpgCheck
void resetRepoGpgCheck()
Reset to the zconfig default.
Definition: ZConfig.cc:1078
zypp::ZConfig::solver_cleandepsOnRemove
bool solver_cleandepsOnRemove() const
Whether removing a package should also remove no longer needed requirements.
Definition: ZConfig.cc:1094
zypp::str::split
unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t", const Trim trim_r=NO_TRIM)
Split line_r into words.
Definition: String.h:527
zypp::ZConfig::Impl::_multiversionMap
MultiversionMap _multiversionMap
Definition: ZConfig.cc:788
zypp::ZConfig::solver_dupAllowDowngrade
bool solver_dupAllowDowngrade() const
DUP tune: Whether to allow version downgrades upon DUP.
Definition: ZConfig.cc:1089
zypp::ZConfig::solver_focus
ResolverFocus solver_focus() const
The resolvers general attitude when resolving jobs.
Definition: ZConfig.cc:1081
LogTools.h
zypp::parser::IniDict::entriesEnd
entry_const_iterator entriesEnd(const std::string &section) const
Definition: IniDict.cc:82
zypp::filesystem::PathInfo
Wrapper class for ::stat/::lstat.
Definition: PathInfo.h:220
zypp::parser::IniDict::entry_const_iterator
EntrySet::const_iterator entry_const_iterator
Definition: IniDict.h:47
zypp::ZConfig::Impl::gpgCheck
DefaultOption< bool > gpgCheck
Definition: ZConfig.cc:670
zypp::ZConfig::multiversionKernels
std::string multiversionKernels() const
Definition: ZConfig.cc:1190
zypp::ZConfig::pkgGpgCheck
TriBool pkgGpgCheck() const
Check rpm package signatures (indeterminate - according to gpgcheck)
Definition: ZConfig.cc:1071
PoolImpl.h
zypp::ZConfig::repoRefreshLocales
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
Definition: ZConfig.cc:1022
zypp::ZConfig::repoSolvfilesPath
Pathname repoSolvfilesPath() const
Path where the repo solv files are created and kept (repoCachePath()/solv).
Definition: ZConfig.cc:948
zypp::ZConfig::Impl::cfg_vars_path
Pathname cfg_vars_path
Definition: ZConfig.cc:639
WAR
#define WAR
Definition: Logger.h:80
zypp::ZConfig::historyLogFile
Pathname historyLogFile() const
Path where ZYpp install history is logged.
Definition: ZConfig.cc:1162
zypp::ZConfig::solver_dupAllowVendorChange
bool solver_dupAllowVendorChange() const
DUP tune: Whether to allow package vendor changes upon DUP.
Definition: ZConfig.cc:1092
zypp::ZConfig::about
std::ostream & about(std::ostream &str) const
Print some detail about the current libzypp version.
Definition: ZConfig.cc:1197
zypp::DownloadMode
DownloadMode
Supported commit download policies.
Definition: DownloadMode.h:22
zypp::Option::set
void set(const value_type &newval_r)
Set a new value.
Definition: ZConfig.cc:252
zypp::ZConfig::setSystemArchitecture
void setSystemArchitecture(const Arch &arch_r)
Override the zypp system architecture.
Definition: ZConfig.cc:858
zypp::ZConfig::_pimpl
RW_pointer< Impl, rw_pointer::Scoped< Impl > > _pimpl
Pointer to implementation.
Definition: ZConfig.h:552
zypp::ZConfig::removeMultiversionSpec
void removeMultiversionSpec(const std::string &name_r)
Definition: ZConfig.cc:1124
zypp::ZConfig::setRepoGpgCheck
void setRepoGpgCheck(TriBool val_r)
Change the value.
Definition: ZConfig.cc:1074
zypp::ZConfig::addMultiversionSpec
void addMultiversionSpec(const std::string &name_r)
Definition: ZConfig.cc:1123
zypp::fromString
bool fromString(const std::string &val_r, ResolverFocus &ret_r)
Definition: ResolverFocus.cc:39
zypp::sat::Pool::setTextLocale
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
Definition: Pool.cc:233
zypp::str::splitEscaped
unsigned splitEscaped(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t", bool withEmpty=false)
Split line_r into words with respect to escape delimeters.
Definition: String.h:591
zypp::ZConfig::knownReposPath
Pathname knownReposPath() const
Path where the known repositories .repo files are kept (configPath()/repos.d).
Definition: ZConfig.cc:978
zypp::ZConfig::defaultTextLocale
static Locale defaultTextLocale()
The autodetected preferred locale for translated texts.
Definition: ZConfig.cc:873
zypp::ZConfig::Impl::cfg_packages_path
Pathname cfg_packages_path
Definition: ZConfig.cc:634
zypp::InputStream
Helper to create and pass std::istream.
Definition: InputStream.h:56
zypp::ZConfig::set_download_mediaMountdir
void set_download_mediaMountdir(Pathname newval_r)
Set alternate value.
Definition: ZConfig.cc:1062
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::str::compareCI
int compareCI(const C_Str &lhs, const C_Str &rhs)
Definition: String.h:980
zypp::ZConfig::Impl::download_use_deltarpm_always
bool download_use_deltarpm_always
Definition: ZConfig.cc:658
Pool.h
zypp::ZConfig::Impl::pluginsPath
Option< Pathname > pluginsPath
Definition: ZConfig.cc:701
Regex.h
zypp::DefaultOption::option_type
Option< Tp > option_type
Definition: ZConfig.cc:268
zypp::ZConfig::Impl::MultiversionMap
Definition: ZConfig.cc:709
zypp::ZConfig::download_media_prefer_download
bool download_media_prefer_download() const
Hint which media to prefer when installing packages (download vs.
Definition: ZConfig.cc:1037
zypp::ZConfig::set_default_download_mediaMountdir
void set_default_download_mediaMountdir()
Reset to zypp.cong default.
Definition: ZConfig.cc:1063
zypp::ZConfig::Impl::download_max_silent_tries
int download_max_silent_tries
Definition: ZConfig.cc:665
zypp::ZConfig::Impl::locks_file
Pathname locks_file
Definition: ZConfig.cc:645
zypp::ZConfig::Impl::MultiversionMap::_specMap
SpecMap _specMap
Definition: ZConfig.cc:782
zypp::ZConfig::Impl::cfg_textLocale
Locale cfg_textLocale
Definition: ZConfig.cc:629
zypp::str::smatch
Regular expression match result.
Definition: Regex.h:145
zypp::ZConfig::repoLabelIsAlias
bool repoLabelIsAlias() const
Whether to use repository alias or name in user messages (progress, exceptions, .....
Definition: ZConfig.cc:1025
zypp::ZConfig::Impl::solver_onlyRequires
Option< bool > solver_onlyRequires
Definition: ZConfig.cc:675
zypp::ZConfig::defaultSystemArchitecture
static Arch defaultSystemArchitecture()
The autodetected system architecture.
Definition: ZConfig.cc:849
zypp::ZConfig::Impl::solver_dupAllowNameChange
Option< bool > solver_dupAllowNameChange
Definition: ZConfig.cc:678
zypp::ZConfig::download_max_silent_tries
long download_max_silent_tries() const
Maximum silent tries.
Definition: ZConfig.cc:1055
zypp::ZConfig::varsPath
Pathname varsPath() const
Path containing custom repo variable definitions (configPath()/vars.d).
Definition: ZConfig.cc:996
zypp::ZConfig::update_scriptsPath
Pathname update_scriptsPath() const
Path where the repo metadata is downloaded and kept (update_dataPath()/).
Definition: ZConfig.cc:1141
zypp::ZConfig::setRepoPackagesPath
void setRepoPackagesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:965
zypp::ZConfig::Impl::MultiversionMap::SpecMap
std::map< Pathname, MultiversionSpec > SpecMap
Definition: ZConfig.cc:711
zypp::ZConfig::setRepoMetadataPath
void setRepoMetadataPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:943
zypp::ZConfig::~ZConfig
~ZConfig()
Dtor.
Definition: ZConfig.cc:827
zypp::ZConfig::Impl::userData
std::string userData
Definition: ZConfig.cc:699
zypp::parser::IniDict::sectionsEnd
section_const_iterator sectionsEnd() const
Definition: IniDict.cc:99
zypp::ZConfig::Impl::history_log_path
Pathname history_log_path
Definition: ZConfig.cc:695
zypp::ZConfig::pubkeyCachePath
Pathname pubkeyCachePath() const
Path where the pubkey caches.
Definition: ZConfig.cc:926
zypp::ZConfig::Impl::Impl
Impl(const Pathname &override_r=Pathname())
Definition: ZConfig.cc:308
zypp::ZConfig::Impl::download_max_download_speed
int download_max_download_speed
Definition: ZConfig.cc:664
zypp::ZConfig::Impl::getMultiversion
MultiversionSpec & getMultiversion() const
Definition: ZConfig.cc:785
zypp::ZConfig::needrebootFile
Pathname needrebootFile() const
Path of the default needreboot config file (configPath()/needreboot).
Definition: ZConfig.cc:990
zypp::ZConfig::Impl::cfg_repo_mgr_root_path
Pathname cfg_repo_mgr_root_path
Definition: ZConfig.cc:640
std
Definition: Arch.h:347
zypp::ZConfig::gpgCheck
bool gpgCheck() const
Turn signature checking on/off (on)
Definition: ZConfig.cc:1069
zypp::parser
Definition: HistoryLogReader.cc:28
for_
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:28
zypp::ZConfig::hasUserData
bool hasUserData() const
Whether a (non empty) user data sting is defined.
Definition: ZConfig.cc:897
IniDict.h
zypp::ZConfig::Impl::solver_checkSystemFile
Pathname solver_checkSystemFile
Definition: ZConfig.cc:685
zypp::ZConfig::Impl::updateMessagesNotify
DefaultOption< std::string > updateMessagesNotify
Definition: ZConfig.cc:650
Target_Ptr
zypp::filesystem::Pathname::empty
bool empty() const
Test for an empty path.
Definition: Pathname.h:114
zypp::ZConfig::setUpdateMessagesNotify
void setUpdateMessagesNotify(const std::string &val_r)
Set a new command definition (see update.messages.notify in zypp.conf).
Definition: ZConfig.cc:1150
zypp::LocaleSet
std::unordered_set< Locale > LocaleSet
Definition: Locale.h:27
zypp::ZConfig::Impl::download_min_download_speed
int download_min_download_speed
Definition: ZConfig.cc:663
zypp::DefaultOption::_default
option_type _default
Definition: ZConfig.cc:291
zypp::ZConfig::setGpgCheck
void setGpgCheck(bool val_r)
Change the value.
Definition: ZConfig.cc:1073
zypp::ZConfig::repoMetadataPath
Pathname repoMetadataPath() const
Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
Definition: ZConfig.cc:937
String.h
zypp::ZConfig::download_use_deltarpm_always
bool download_use_deltarpm_always() const
Whether to consider using a deltarpm even when rpm is local.
Definition: ZConfig.cc:1034
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:44
zypp::DownloadDefault
libzypp will decide what to do.
Definition: DownloadMode.h:24
zypp::ZConfig::Impl::cfg_vendor_path
Pathname cfg_vendor_path
Definition: ZConfig.cc:642
zypp::DefaultOption::restoreToDefault
void restoreToDefault(const value_type &newval_r)
Reset value to a new default.
Definition: ZConfig.cc:279
ERR
#define ERR
Definition: Logger.h:81
zypp::ZConfig::Impl::solver_checkSystemFileDir
Pathname solver_checkSystemFileDir
Definition: ZConfig.cc:686
zypp::ZConfig::resetGpgCheck
void resetGpgCheck()
Reset to the zconfig default.
Definition: ZConfig.cc:1077
DBG
#define DBG
Definition: Logger.h:78
zypp::parser::IniDict::section_const_iterator
MapKVIteratorTraits< SectionSet >::Key_const_iterator section_const_iterator
Definition: IniDict.h:46
InputStream.h
zypp::ZConfig::download_mediaMountdir
Pathname download_mediaMountdir() const
Path where media are preferably mounted or downloaded.
Definition: ZConfig.cc:1061
zypp::target::rpm::RPMINST_EXCLUDEDOCS
Definition: RpmFlags.h:40
zypp::ZConfig::credentialsGlobalDir
Pathname credentialsGlobalDir() const
Defaults to /etc/zypp/credentials.d.
Definition: ZConfig.cc:1168
zypp::ZConfig::systemRoot
Pathname systemRoot() const
The target root directory.
Definition: ZConfig.cc:830
zypp::ZConfig::userData
std::string userData() const
User defined string value to be passed to log, history, plugins...
Definition: ZConfig.cc:900
zypp::str::regex_match
bool regex_match(const std::string &s, smatch &matches, const regex &regex)
\relates regex \ingroup ZYPP_STR_REGEX \relates regex \ingroup ZYPP_STR_REGEX
Definition: Regex.h:70
str
String related utilities and Regular expression matching.
zypp::TriBool
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
Definition: String.h:30
zypp::ZConfig::Impl
ZConfig implementation.
Definition: ZConfig.cc:303
zypp::ZConfig::rpmInstallFlags
target::rpm::RpmInstFlags rpmInstallFlags() const
The default target::rpm::RpmInstFlags for ZYppCommitPolicy.
Definition: ZConfig.cc:1158
zypp::ZConfig::distroverpkg
std::string distroverpkg() const
Package telling the "product version" on systems not using /etc/product.d/baseproduct.
Definition: ZConfig.cc:1182
zypp::str::hasPrefix
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
Definition: String.h:1023
zypp::ZConfig::Impl::multiversion
const MultiversionSpec & multiversion() const
Definition: ZConfig.cc:689
zypp::ZConfig::Impl::repoLabelIsAlias
bool repoLabelIsAlias
Definition: ZConfig.cc:655
zypp::ZConfig::Impl::solver_focus
ResolverFocus solver_focus
Definition: ZConfig.cc:674
zypp::ZConfig::set_download_media_prefer_download
void set_download_media_prefer_download(bool yesno_r)
Set download_media_prefer_download to a specific value.
Definition: ZConfig.cc:1040
zypp::ZConfig::Impl::repo_refresh_delay
unsigned repo_refresh_delay
Definition: ZConfig.cc:653
zypp::ZConfig::Impl::commit_downloadMode
Option< DownloadMode > commit_downloadMode
Definition: ZConfig.cc:668
zypp::ZConfig::Impl::pkgGpgCheck
DefaultOption< TriBool > pkgGpgCheck
Definition: ZConfig.cc:672
zypp::str::regex
Regular expression.
Definition: Regex.h:86
zypp::filesystem::dirForEach
int dirForEach(const Pathname &dir_r, function< bool(const Pathname &, const char *const)> fnc_r)
Invoke callback function fnc_r for each entry in directory dir_r.
Definition: PathInfo.cc:537
zypp::ZConfig::download_use_deltarpm
bool download_use_deltarpm() const
Whether to consider using a deltarpm when downloading a package.
Definition: ZConfig.cc:1031
zypp::Locale
'Language[_Country]' codes.
Definition: Locale.h:49
zypp::ZConfig::Impl::solverUpgradeRemoveDroppedPackages
DefaultOption< bool > solverUpgradeRemoveDroppedPackages
Definition: ZConfig.cc:683
zypp::ZConfig::repo_refresh_delay
unsigned repo_refresh_delay() const
Amount of time in minutes that must pass before another refresh.
Definition: ZConfig.cc:1019
zypp::ZConfig::Impl::cfg_multiversion_path
Pathname cfg_multiversion_path
Definition: ZConfig.cc:643
zypp::ZConfig::resetPkgGpgCheck
void resetPkgGpgCheck()
Reset to the zconfig default.
Definition: ZConfig.cc:1079
zypp::DefaultOption::getDefault
const value_type & getDefault() const
Get the current default value.
Definition: ZConfig.cc:283
zypp::parser::IniDict::entriesBegin
entry_const_iterator entriesBegin(const std::string &section) const
Definition: IniDict.cc:71
zypp::DefaultOption
Mutable option with initial value also remembering a config value.
Definition: ZConfig.cc:265
zypp::ZConfig::credentialsGlobalFile
Pathname credentialsGlobalFile() const
Defaults to /etc/zypp/credentials.cat.
Definition: ZConfig.cc:1174
zypp::str::strtonum
TInt strtonum(const C_Str &str)
Parsing numbers from string.
Definition: String.h:385
zypp::ZConfig::pluginsPath
Pathname pluginsPath() const
Defaults to /usr/lib/zypp/plugins.
Definition: ZConfig.cc:1187
zypp::ZConfig::Impl::solver_dupAllowArchChange
Option< bool > solver_dupAllowArchChange
Definition: ZConfig.cc:679
zypp::DefaultOption::setDefault
void setDefault(const value_type &newval_r)
Set a new default value.
Definition: ZConfig.cc:287
zypp::ZConfig::solver_checkSystemFile
Pathname solver_checkSystemFile() const
File in which dependencies described which has to be fulfilled for a running system.
Definition: ZConfig.cc:1097
zypp::ZConfig::systemArchitecture
Arch systemArchitecture() const
The system architecture zypp uses.
Definition: ZConfig.cc:855
zypp::ZConfig::Impl::MultiversionMap::getDefaultSpec
MultiversionSpec & getDefaultSpec()
Definition: ZConfig.cc:737
zypp::ZConfig::Impl::cfg_known_repos_path
Pathname cfg_known_repos_path
Definition: ZConfig.cc:637
zypp::ZConfig::Impl::solver_upgradeTestcasesToKeep
Option< unsigned > solver_upgradeTestcasesToKeep
Definition: ZConfig.cc:682
zypp::ZConfig::Impl::repoGpgCheck
DefaultOption< TriBool > repoGpgCheck
Definition: ZConfig.cc:671