15 #include <sys/utsname.h>
16 #if __GLIBC_PREREQ (2,16)
20 #include <solv/solvversion.h>
42 #undef ZYPP_BASE_LOGGER_LOGGROUP
43 #define ZYPP_BASE_LOGGER_LOGGROUP "zconfig"
63 Arch _autodetectSystemArchitecture()
66 if ( ::uname( &buf ) < 0 )
68 ERR <<
"Can't determine system architecture" << endl;
72 Arch architecture( buf.machine );
73 MIL <<
"Uname architecture is '" << buf.machine <<
"'" << endl;
75 if ( architecture == Arch_i686 )
80 std::ifstream cpuinfo(
"/proc/cpuinfo" );
83 for( iostr::EachLine in( cpuinfo ); in; in.next() )
87 if ( in->find(
"cx8" ) == std::string::npos
88 || in->find(
"cmov" ) == std::string::npos )
90 architecture = Arch_i586;
91 WAR <<
"CPU lacks 'cx8' or 'cmov': architecture downgraded to '" << architecture <<
"'" << endl;
99 ERR <<
"Cant open " <<
PathInfo(
"/proc/cpuinfo") << endl;
102 else if ( architecture == Arch_sparc || architecture == Arch_sparc64 )
105 std::ifstream cpuinfo(
"/proc/cpuinfo" );
108 for( iostr::EachLine in( cpuinfo ); in; in.next() )
112 if ( in->find(
"sun4v" ) != std::string::npos )
114 architecture = ( architecture == Arch_sparc64 ? Arch_sparc64v : Arch_sparcv9v );
115 WAR <<
"CPU has 'sun4v': architecture upgraded to '" << architecture <<
"'" << endl;
117 else if ( in->find(
"sun4u" ) != std::string::npos )
119 architecture = ( architecture == Arch_sparc64 ? Arch_sparc64 : Arch_sparcv9 );
120 WAR <<
"CPU has 'sun4u': architecture upgraded to '" << architecture <<
"'" << endl;
122 else if ( in->find(
"sun4m" ) != std::string::npos )
124 architecture = Arch_sparcv8;
125 WAR <<
"CPU has 'sun4m': architecture upgraded to '" << architecture <<
"'" << endl;
133 ERR <<
"Cant open " <<
PathInfo(
"/proc/cpuinfo") << endl;
136 else if ( architecture == Arch_armv7l || architecture == Arch_armv6l )
138 std::ifstream platform(
"/etc/rpm/platform" );
141 for( iostr::EachLine in( platform ); in; in.next() )
145 architecture = Arch_armv7hl;
146 WAR <<
"/etc/rpm/platform contains armv7hl-: architecture upgraded to '" << architecture <<
"'" << endl;
151 architecture = Arch_armv6hl;
152 WAR <<
"/etc/rpm/platform contains armv6hl-: architecture upgraded to '" << architecture <<
"'" << endl;
158 #if __GLIBC_PREREQ (2,16)
159 else if ( architecture == Arch_ppc64 )
161 const char * platform = (
const char *)getauxval( AT_PLATFORM );
163 if ( platform && sscanf( platform,
"power%d", &powerlvl ) == 1 && powerlvl > 6 )
164 architecture = Arch_ppc64p7;
187 Locale _autodetectTextLocale()
189 Locale ret( Locale::enCode );
190 const char * envlist[] = {
"LC_ALL",
"LC_MESSAGES",
"LANG", NULL };
191 for (
const char ** envvar = envlist; *envvar; ++envvar )
193 const char * envlang = getenv( *envvar );
196 std::string envstr( envlang );
197 if ( envstr !=
"POSIX" && envstr !=
"C" )
199 Locale lang( envstr );
202 MIL <<
"Found " << *envvar <<
"=" << envstr << endl;
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 );
216 inline Pathname _autodetectSystemRoot()
218 Target_Ptr target( getZYpp()->getTarget() );
219 return target ? target->root() :
Pathname();
222 inline Pathname _autodetectZyppConfPath()
224 const char *env_confpath = getenv(
"ZYPP_CONF" );
225 return env_confpath ? env_confpath :
"/etc/zypp/zypp.conf";
271 :
Option<Tp>( initial_r ), _default( initial_r )
276 { this->set( _default.get() ); }
280 { setDefault( newval_r ); restoreToDefault(); }
284 {
return _default.get(); }
288 { _default.set( newval_r ); }
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 )
327 , repoGpgCheck ( indeterminate )
328 , pkgGpgCheck ( indeterminate )
329 , solver_onlyRequires ( false )
330 , solver_allowVendorChange ( false )
331 , solver_dupAllowDowngrade ( true )
332 , solver_dupAllowNameChange ( true )
333 , solver_dupAllowArchChange ( true )
334 , solver_dupAllowVendorChange ( true )
335 , solver_cleandepsOnRemove ( false )
336 , solver_upgradeTestcasesToKeep ( 2 )
337 , solverUpgradeRemoveDroppedPackages( true )
338 , apply_locks_file ( true )
339 , pluginsPath (
"/usr/lib/zypp/plugins" )
341 MIL <<
"libzypp: " << VERSION << endl;
344 if ( _parsedZyppConf.empty() )
346 _parsedZyppConf = _autodetectZyppConfPath();
352 INT <<
"Reconfigure to " << _parsedZyppConf << endl;
353 ZConfig::instance()._pimpl.reset(
this );
355 if (
PathInfo(_parsedZyppConf).isExist() )
362 string section(*sit);
368 string entry(it->first);
369 string value(it->second);
371 if ( section ==
"main" )
373 if ( entry ==
"arch" )
376 if ( carch != cfg_arch )
378 WAR <<
"Overriding system architecture (" << cfg_arch <<
"): " << carch << endl;
382 else if ( entry ==
"cachedir" )
386 else if ( entry ==
"metadatadir" )
388 cfg_metadata_path =
Pathname(value);
390 else if ( entry ==
"solvfilesdir" )
392 cfg_solvfiles_path =
Pathname(value);
394 else if ( entry ==
"packagesdir" )
396 cfg_packages_path =
Pathname(value);
398 else if ( entry ==
"configdir" )
402 else if ( entry ==
"reposdir" )
404 cfg_known_repos_path =
Pathname(value);
406 else if ( entry ==
"servicesdir" )
408 cfg_known_services_path =
Pathname(value);
410 else if ( entry ==
"varsdir" )
414 else if ( entry ==
"repo.add.probe" )
418 else if ( entry ==
"repo.refresh.delay" )
422 else if ( entry ==
"repo.refresh.locales" )
424 std::vector<std::string> tmp;
425 str::split( value, back_inserter( tmp ),
", \t" );
427 boost::function<
Locale(
const std::string &)> transform(
428 [](
const std::string & str_r)->
Locale{
return Locale(str_r); }
430 repoRefreshLocales.insert( make_transform_iterator( tmp.begin(), transform ),
431 make_transform_iterator( tmp.end(), transform ) );
433 else if ( entry ==
"download.use_deltarpm" )
435 download_use_deltarpm =
str::strToBool( value, download_use_deltarpm );
437 else if ( entry ==
"download.use_deltarpm.always" )
439 download_use_deltarpm_always =
str::strToBool( value, download_use_deltarpm_always );
441 else if ( entry ==
"download.media_preference" )
443 download_media_prefer_download.restoreToDefault(
str::compareCI( value,
"volatile" ) != 0 );
446 else if ( entry ==
"download.media_mountdir" )
448 download_mediaMountdir.restoreToDefault(
Pathname(value) );
451 else if ( entry ==
"download.max_concurrent_connections" )
455 else if ( entry ==
"download.min_download_speed" )
459 else if ( entry ==
"download.max_download_speed" )
463 else if ( entry ==
"download.max_silent_tries" )
467 else if ( entry ==
"download.transfer_timeout" )
470 if ( download_transfer_timeout < 0 ) download_transfer_timeout = 0;
471 else if ( download_transfer_timeout > 3600 ) download_transfer_timeout = 3600;
473 else if ( entry ==
"commit.downloadMode" )
475 commit_downloadMode.set( deserializeDownloadMode( value ) );
477 else if ( entry ==
"gpgcheck" )
481 else if ( entry ==
"repo_gpgcheck" )
485 else if ( entry ==
"pkg_gpgcheck" )
489 else if ( entry ==
"vendordir" )
493 else if ( entry ==
"multiversiondir" )
495 cfg_multiversion_path =
Pathname(value);
497 else if ( entry ==
"solver.onlyRequires" )
499 solver_onlyRequires.set(
str::strToBool( value, solver_onlyRequires ) );
501 else if ( entry ==
"solver.allowVendorChange" )
503 solver_allowVendorChange.set(
str::strToBool( value, solver_allowVendorChange ) );
505 else if ( entry ==
"solver.dupAllowDowngrade" )
507 solver_dupAllowDowngrade.set(
str::strToBool( value, solver_dupAllowDowngrade ) );
509 else if ( entry ==
"solver.dupAllowNameChange" )
511 solver_dupAllowNameChange.set(
str::strToBool( value, solver_dupAllowNameChange ) );
513 else if ( entry ==
"solver.dupAllowArchChange" )
515 solver_dupAllowArchChange.set(
str::strToBool( value, solver_dupAllowArchChange ) );
517 else if ( entry ==
"solver.dupAllowVendorChange" )
519 solver_dupAllowVendorChange.set(
str::strToBool( value, solver_dupAllowVendorChange ) );
521 else if ( entry ==
"solver.cleandepsOnRemove" )
523 solver_cleandepsOnRemove.set(
str::strToBool( value, solver_cleandepsOnRemove ) );
525 else if ( entry ==
"solver.upgradeTestcasesToKeep" )
527 solver_upgradeTestcasesToKeep.set( str::strtonum<unsigned>( value ) );
529 else if ( entry ==
"solver.upgradeRemoveDroppedPackages" )
531 solverUpgradeRemoveDroppedPackages.restoreToDefault(
str::strToBool( value, solverUpgradeRemoveDroppedPackages.getDefault() ) );
533 else if ( entry ==
"solver.checkSystemFile" )
535 solver_checkSystemFile =
Pathname(value);
537 else if ( entry ==
"solver.checkSystemFileDir" )
539 solver_checkSystemFileDir =
Pathname(value);
541 else if ( entry ==
"multiversion" )
546 else if ( entry ==
"locksfile.path" )
550 else if ( entry ==
"locksfile.apply" )
554 else if ( entry ==
"update.datadir" )
558 else if ( entry ==
"update.scriptsdir" )
560 update_scripts_path =
Pathname(value);
562 else if ( entry ==
"update.messagessdir" )
564 update_messages_path =
Pathname(value);
566 else if ( entry ==
"update.messages.notify" )
568 updateMessagesNotify.set( value );
570 else if ( entry ==
"rpm.install.excludedocs" )
575 else if ( entry ==
"history.logfile" )
579 else if ( entry ==
"credentials.global.dir" )
581 credentials_global_dir_path =
Pathname(value);
583 else if ( entry ==
"credentials.global.file" )
585 credentials_global_file_path =
Pathname(value);
595 MIL << _parsedZyppConf <<
" not found, using defaults instead." << endl;
596 _parsedZyppConf = _parsedZyppConf.extend(
" (NOT FOUND)" );
600 if ( getenv(
"ZYPP_TESTSUITE_FAKE_ARCH" ) )
602 Arch carch( getenv(
"ZYPP_TESTSUITE_FAKE_ARCH" ) );
603 if ( carch != cfg_arch )
605 WAR <<
"ZYPP_TESTSUITE_FAKE_ARCH: Overriding system architecture (" << cfg_arch <<
"): " << carch << endl;
609 MIL <<
"ZConfig singleton created." << endl;
699 typedef std::map<Pathname,MultiversionSpec>
SpecMap;
707 if ( root_r.
empty() )
709 bool cacheHit = _specMap.count( root_r );
717 scanConfAt( root_r, ret, zConfImpl_r );
718 scanDirAt( root_r, ret, zConfImpl_r );
719 using zypp::operator<<;
720 MIL <<
"MultiversionSpec '" << root_r <<
"' = " << ret << endl;
731 static const str::regex rx(
"^multiversion *= *(.*)" );
734 [&](
int num_r, std::string line_r )->
bool
749 if ( multiversionDir.
empty() )
755 [&spec_r](
const Pathname & dir_r,
const char *
const & name_r )->
bool
757 MIL <<
"Parsing " << dir_r/name_r << endl;
759 [&spec_r](
int num_r, std::string line_r )->
bool
761 DBG <<
" found " << line_r << endl;
762 spec_r.insert( std::move(line_r) );
774 {
return _multiversionMap.getSpec( _autodetectSystemRoot(), *
this ); }
793 ZConfig & ZConfig::instance()
795 static ZConfig _instance;
819 {
return _autodetectSystemRoot(); }
829 static Arch _val( _autodetectSystemArchitecture() );
834 {
return _pimpl->cfg_arch; }
838 if ( arch_r !=
_pimpl->cfg_arch )
840 WAR <<
"Overriding system architecture (" <<
_pimpl->cfg_arch <<
"): " << arch_r << endl;
841 _pimpl->cfg_arch = arch_r;
853 static Locale _val( _autodetectTextLocale() );
858 {
return _pimpl->cfg_textLocale; }
862 if ( locale_r !=
_pimpl->cfg_textLocale )
864 WAR <<
"Overriding text locale (" <<
_pimpl->cfg_textLocale <<
"): " << locale_r << endl;
865 _pimpl->cfg_textLocale = locale_r;
866 #warning prefer signal
876 {
return !
_pimpl->userData.empty(); }
879 {
return _pimpl->userData; }
883 for_( ch, str_r.begin(), str_r.end() )
885 if ( *ch <
' ' && *ch !=
'\t' )
887 ERR <<
"New user data string rejectded: char " << (int)*ch <<
" at position " << (ch - str_r.begin()) << endl;
891 MIL <<
"Set user data string to '" << str_r <<
"'" << endl;
900 return (
_pimpl->cfg_cache_path.empty()
906 return (
_pimpl->cfg_metadata_path.empty()
912 return (
_pimpl->cfg_solvfiles_path.empty()
918 return (
_pimpl->cfg_packages_path.empty()
926 return (
_pimpl->cfg_config_path.empty()
932 return (
_pimpl->cfg_known_repos_path.empty()
938 return (
_pimpl->cfg_known_services_path.empty()
944 return (
_pimpl->cfg_vars_path.empty()
950 return (
_pimpl->cfg_vendor_path.empty()
956 return (
_pimpl->locks_file.empty()
963 {
return _pimpl->repo_add_probe; }
966 {
return _pimpl->repo_refresh_delay; }
972 {
return _pimpl->repoLabelIsAlias; }
975 {
_pimpl->repoLabelIsAlias = yesno_r; }
978 {
return _pimpl->download_use_deltarpm; }
984 {
return _pimpl->download_media_prefer_download; }
987 {
_pimpl->download_media_prefer_download.set( yesno_r ); }
990 {
_pimpl->download_media_prefer_download.restoreToDefault(); }
993 {
return _pimpl->download_max_concurrent_connections; }
996 {
return _pimpl->download_min_download_speed; }
999 {
return _pimpl->download_max_download_speed; }
1002 {
return _pimpl->download_max_silent_tries; }
1005 {
return _pimpl->download_transfer_timeout; }
1012 {
return _pimpl->commit_downloadMode; }
1029 {
return _pimpl->solver_onlyRequires; }
1032 {
return _pimpl->solver_allowVendorChange; }
1040 {
return _pimpl->solver_cleandepsOnRemove; }
1043 {
return (
_pimpl->solver_checkSystemFile.empty()
1047 {
return (
_pimpl->solver_checkSystemFileDir.empty()
1051 {
return _pimpl->solver_upgradeTestcasesToKeep; }
1059 inline void sigMultiversionSpecChanged()
1072 {
return _pimpl->apply_locks_file; }
1076 return (
_pimpl->update_data_path.empty()
1082 return (
_pimpl->update_messages_path.empty()
1088 return (
_pimpl->update_scripts_path.empty()
1093 {
return _pimpl->updateMessagesNotify; }
1096 {
_pimpl->updateMessagesNotify.set( val_r ); }
1099 {
_pimpl->updateMessagesNotify.restoreToDefault(); }
1104 {
return _pimpl->rpmInstallFlags; }
1109 return (
_pimpl->history_log_path.empty() ?
1115 return (
_pimpl->credentials_global_dir_path.empty() ?
1116 Pathname(
"/etc/zypp/credentials.d") :
_pimpl->credentials_global_dir_path );
1121 return (
_pimpl->credentials_global_file_path.empty() ?
1122 Pathname(
"/etc/zypp/credentials.cat") :
_pimpl->credentials_global_file_path );
1128 {
return "redhat-release"; }
1133 {
return _pimpl->pluginsPath.get(); }
1139 str <<
"libzypp: " << VERSION << endl;
1141 str <<
"libsolv: " << solv_version;
1142 if ( ::strcmp( solv_version, LIBSOLV_VERSION_STRING ) )
1143 str <<
" (built against " << LIBSOLV_VERSION_STRING <<
")";
1146 str <<
"zypp.conf: '" <<
_pimpl->_parsedZyppConf <<
"'" << endl;
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
'Language[_Country]' codes.
LocaleSet requestedLocales() const
Languages to be supported by the system.
Pathname cfg_multiversion_path
DefaultOption< Pathname > download_mediaMountdir
int download_max_silent_tries
std::set< std::string > MultiversionSpec
Pathname cfg_known_repos_path
Pathname cfg_known_services_path
Pathname credentials_global_file_path
Option< bool > solver_allowVendorChange
int download_min_download_speed
int download_max_download_speed
bool download_use_deltarpm_always
Pathname _parsedZyppConf
Remember any parsed zypp.conf.
Pathname solver_checkSystemFile
MultiversionMap _multiversionMap
Option< bool > solver_dupAllowNameChange
Pathname update_data_path
Pathname history_log_path
Option< unsigned > solver_upgradeTestcasesToKeep
LocaleSet repoRefreshLocales
Impl(const Pathname &override_r=Pathname())
Pathname cfg_metadata_path
Option< bool > solver_dupAllowArchChange
Pathname update_scripts_path
Option< Pathname > pluginsPath
Pathname credentials_global_dir_path
DefaultOption< TriBool > repoGpgCheck
Option< bool > solver_dupAllowVendorChange
unsigned repo_refresh_delay
Option< DownloadMode > commit_downloadMode
Option< bool > solver_dupAllowDowngrade
MultiversionSpec & getMultiversion() const
DefaultOption< bool > download_media_prefer_download
bool download_use_deltarpm
Pathname solver_checkSystemFileDir
Pathname cfg_solvfiles_path
target::rpm::RpmInstFlags rpmInstallFlags
Pathname update_messages_path
DefaultOption< bool > solverUpgradeRemoveDroppedPackages
int download_transfer_timeout
const MultiversionSpec & multiversion() const
DefaultOption< TriBool > pkgGpgCheck
MultiversionSpec & multiversion()
DefaultOption< std::string > updateMessagesNotify
Pathname cfg_packages_path
Option< bool > solver_cleandepsOnRemove
int download_max_concurrent_connections
Option< bool > solver_onlyRequires
DefaultOption< bool > gpgCheck
bool hasUserData() const
Whether a (non empty) user data sting is defined.
bool solver_cleandepsOnRemove() const
Whether removing a package should also remove no longer needed requirements.
std::string userData() const
User defined string value to be passed to log, history, plugins...
Pathname knownServicesPath() const
Path where the known services .service files are kept (configPath()/services.d).
void removeMultiversionSpec(const std::string &name_r)
Pathname repoPackagesPath() const
Path where the repo packages are downloaded and kept (repoCachePath()/packages).
unsigned repo_refresh_delay() const
Amount of time in minutes that must pass before another refresh.
Arch systemArchitecture() const
The system architecture zypp uses.
Locale textLocale() const
The locale for translated texts zypp uses.
Pathname update_dataPath() const
Path where the update items are kept (/var/adm)
Pathname update_messagesPath() const
Path where the repo solv files are created and kept (update_dataPath()/solv).
Pathname pluginsPath() const
Defaults to /usr/lib/zypp/plugins.
void resetRepoGpgCheck()
Reset to the zconfig default.
bool gpgCheck() const
Turn signature checking on/off (on)
Pathname knownReposPath() const
Path where the known repositories .repo files are kept (configPath()/repos.d).
Pathname update_scriptsPath() const
Path where the repo metadata is downloaded and kept (update_dataPath()/).
long download_transfer_timeout() const
Maximum time in seconds that you allow a transfer operation to take.
bool solver_dupAllowArchChange() const
DUP tune: Whether to allow package arch changes upon DUP.
void setTextLocale(const Locale &locale_r)
Set the prefered locale for translated texts.
bool solverUpgradeRemoveDroppedPackages() const
Whether dist upgrade should remove a products dropped packages (true).
static Locale defaultTextLocale()
The autodetected prefered locale for translated texts.
Pathname download_mediaMountdir() const
Path where media are preferably mounted or downloaded.
void resetSolverUpgradeRemoveDroppedPackages()
Reset solverUpgradeRemoveDroppedPackages to the zypp.conf default.
bool apply_locks_file() const
Whether locks file should be read and applied after start (true)
bool solver_allowVendorChange() const
Whether vendor check is by default enabled.
void set_default_download_mediaMountdir()
Reset to zypp.cong default.
Pathname repoCachePath() const
Path where the caches are kept (/var/cache/zypp)
void setPkgGpgCheck(TriBool val_r)
Change the value.
bool setUserData(const std::string &str_r)
Set a new userData string.
Pathname systemRoot() const
The target root directory.
long download_max_silent_tries() const
Maximum silent tries.
bool repo_add_probe() const
Whether repository urls should be probed.
target::rpm::RpmInstFlags rpmInstallFlags() const
The default target::rpm::RpmInstFlags for ZYppCommitPolicy.
void setUpdateMessagesNotify(const std::string &val_r)
Set a new command definition (see update.messages.notify in zypp.conf).
unsigned solver_upgradeTestcasesToKeep() const
When committing a dist upgrade (e.g.
Pathname repoMetadataPath() const
Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
Pathname vendorPath() const
Directory for equivalent vendor definitions (configPath()/vendors.d)
long download_min_download_speed() const
Minimum download speed (bytes per second) until the connection is dropped.
DownloadMode commit_downloadMode() const
Commit download policy to use as default.
void setGpgCheck(bool val_r)
Change the value.
bool solver_dupAllowVendorChange() const
DUP tune: Whether to allow package vendor changes upon DUP.
Pathname locksFile() const
Path where zypp can find or create lock file (configPath()/locks)
RW_pointer< Impl, rw_pointer::Scoped< Impl > > _pimpl
Pointer to implementation.
Pathname repoSolvfilesPath() const
Path where the repo solv files are created and kept (repoCachePath()/solv).
Pathname historyLogFile() const
Path where ZYpp install history is logged.
void setSystemArchitecture(const Arch &arch_r)
Override the zypp system architecture.
TriBool pkgGpgCheck() const
Check rpm package signatures (indeterminate - according to gpgcheck)
void resetUpdateMessagesNotify()
Reset to the zypp.conf default.
std::ostream & about(std::ostream &str) const
Print some detail about the current libzypp version.
const std::set< std::string > & multiversionSpec() const
void set_download_mediaMountdir(Pathname newval_r)
Set alternate value.
bool download_use_deltarpm() const
Whether to consider using a deltarpm when downloading a package.
TriBool repoGpgCheck() const
Check repo matadata signatures (indeterminate - according to gpgcheck)
void set_download_media_prefer_download(bool yesno_r)
Set download_media_prefer_download to a specific value.
std::string updateMessagesNotify() const
Command definition for sending update messages.
void addMultiversionSpec(const std::string &name_r)
Pathname solver_checkSystemFile() const
File in which dependencies described which has to be fulfilled for a running system.
void set_default_download_media_prefer_download()
Set download_media_prefer_download to the configfiles default.
Pathname solver_checkSystemFileDir() const
Directory, which may or may not contain files in which dependencies described which has to be fulfill...
void resetGpgCheck()
Reset to the zconfig default.
void setSolverUpgradeRemoveDroppedPackages(bool val_r)
Set solverUpgradeRemoveDroppedPackages to val_r.
Pathname configPath() const
Path where the configfiles are kept (/etc/zypp).
static Arch defaultSystemArchitecture()
The autodetected system architecture.
long download_max_concurrent_connections() const
Maximum number of concurrent connections for a single transfer.
void resetPkgGpgCheck()
Reset to the zconfig default.
bool solver_onlyRequires() const
Solver regards required packages,patterns,...
Pathname varsPath() const
Path containing custom repo variable definitions (configPath()/vars.d).
bool solver_dupAllowNameChange() const
DUP tune: Whether to follow package renames upon DUP.
bool repoLabelIsAlias() const
Whether to use repository alias or name in user messages (progress, exceptions, .....
void clearMultiversionSpec()
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
long download_max_download_speed() const
Maximum download speed (bytes per second)
bool solver_dupAllowDowngrade() const
DUP tune: Whether to allow version downgrades upon DUP.
std::string distroverpkg() const
Package telling the "product version" on systems not using /etc/product.d/baseproduct.
bool download_use_deltarpm_always() const
Whether to consider using a deltarpm even when rpm is local.
void setRepoGpgCheck(TriBool val_r)
Change the value.
Pathname credentialsGlobalDir() const
Defaults to /etc/zypp/credentials.d.
bool download_media_prefer_download() const
Hint which media to prefer when installing packages (download vs.
Pathname credentialsGlobalFile() const
Defaults to /etc/zypp/credentials.cat.
Wrapper class for ::stat/::lstat.
bool empty() const
Test for an empty path.
Parses a INI file and offers its structure as a dictionary.
section_const_iterator sectionsEnd() const
EntrySet::const_iterator entry_const_iterator
MapKVIteratorTraits< SectionSet >::Key_const_iterator section_const_iterator
entry_const_iterator entriesBegin(const std::string §ion) const
section_const_iterator sectionsBegin() const
entry_const_iterator entriesEnd(const std::string §ion) const
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
static Pool instance()
Singleton ctor.
void multiversionSpecChanged()
Regular expression match result.
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
String related utilities and Regular expression matching.
Types and functions for filesystem operations.
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.
int simpleParseFile(std::istream &str_r, ParseFlags flags_r, function< bool(int, std::string)> consume_r)
Simple lineparser optionally trimming and skipping comments.
unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t")
Split line_r into words.
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
TriBool strToTriBool(const C_Str &str)
Parse str into a bool if it's a legal true or false string; else indterminate.
bool regex_match(const std::string &s, smatch &matches, const regex ®ex)
\relates regex \ingroup ZYPP_STR_REGEX \relates regex \ingroup ZYPP_STR_REGEX
bool strToBool(const C_Str &str, bool default_r)
Parse str into a bool depending on the default value.
TInt strtonum(const C_Str &str)
Parsing numbers from string.
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.
int compareCI(const C_Str &lhs, const C_Str &rhs)
Easy-to use interface to the ZYPP dependency resolver.
std::unordered_set< Locale > LocaleSet
void reconfigureZConfig(const Pathname &override_r)
DownloadMode
Supported commit download policies.
@ DownloadDefault
libzypp will decide what to do.
Mutable option with initial value also remembering a config value.
DefaultOption(const value_type &initial_r)
void setDefault(const value_type &newval_r)
Set a new default value.
const value_type & getDefault() const
Get the current default value.
void restoreToDefault(const value_type &newval_r)
Reset value to a new default.
void restoreToDefault()
Reset value to the current default.
value_type & ref()
Non-const reference to set a new value.
Option(const value_type &initial_r)
No default ctor, explicit initialisation!
const value_type & get() const
Get the value.
void set(const value_type &newval_r)
Set a new value.
MultiversionSpec & getDefaultSpec()
void scanDirAt(const Pathname root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
std::map< Pathname, MultiversionSpec > SpecMap
MultiversionSpec & getSpec(Pathname root_r, const Impl &zConfImpl_r)
void scanConfAt(const Pathname root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
static PoolImpl & myPool()