libzypp 17.25.7
ZConfig.cc
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12extern "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>
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
38using std::endl;
39using namespace zypp::filesystem;
40using namespace zypp::parser;
41
42#undef ZYPP_BASE_LOGGER_LOGGROUP
43#define ZYPP_BASE_LOGGER_LOGGROUP "zconfig"
44
46namespace zypp
47{
58 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 )
312 , updateMessagesNotify ( "" )
313 , repo_add_probe ( false )
314 , repo_refresh_delay ( 10 )
315 , repoLabelIsAlias ( false )
316 , download_use_deltarpm ( true )
319 , download_mediaMountdir ( "/var/adm/mount" )
326 , gpgCheck ( true )
327 , repoGpgCheck ( indeterminate )
328 , pkgGpgCheck ( indeterminate )
330 , solver_onlyRequires ( false )
331 , solver_allowVendorChange ( false )
332 , solver_dupAllowDowngrade ( true )
336 , solver_cleandepsOnRemove ( false )
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.
353 // ma: override_r might not be needed anymore since the
354 // Vendor_test is now able to initialize VendorAttr directly.
355 INT << "Reconfigure to " << _parsedZyppConf << endl;
356 ZConfig::instance()._pimpl.reset( this );
357 }
358 if ( PathInfo(_parsedZyppConf).isExist() )
359 {
362 sit != dict.sectionsEnd();
363 ++sit )
364 {
365 std::string section(*sit);
366 //MIL << section << endl;
367 for ( IniDict::entry_const_iterator it = dict.entriesBegin(*sit);
368 it != dict.entriesEnd(*sit);
369 ++it )
370 {
371 std::string entry(it->first);
372 std::string value(it->second);
373 //DBG << (*it).first << "=" << (*it).second << endl;
374 if ( section == "main" )
375 {
376 if ( entry == "arch" )
377 {
378 Arch carch( value );
379 if ( carch != cfg_arch )
380 {
381 WAR << "Overriding system architecture (" << cfg_arch << "): " << carch << endl;
382 cfg_arch = carch;
383 }
384 }
385 else if ( entry == "cachedir" )
386 {
387 cfg_cache_path = Pathname(value);
388 }
389 else if ( entry == "metadatadir" )
390 {
392 }
393 else if ( entry == "solvfilesdir" )
394 {
396 }
397 else if ( entry == "packagesdir" )
398 {
400 }
401 else if ( entry == "configdir" )
402 {
403 cfg_config_path = Pathname(value);
404 }
405 else if ( entry == "reposdir" )
406 {
408 }
409 else if ( entry == "servicesdir" )
410 {
412 }
413 else if ( entry == "varsdir" )
414 {
415 cfg_vars_path = Pathname(value);
416 }
417 else if ( entry == "repo.add.probe" )
418 {
420 }
421 else if ( entry == "repo.refresh.delay" )
422 {
424 }
425 else if ( entry == "repo.refresh.locales" )
426 {
427 std::vector<std::string> tmp;
428 str::split( value, back_inserter( tmp ), ", \t" );
429
430 boost::function<Locale(const std::string &)> transform(
431 [](const std::string & str_r)->Locale{ return Locale(str_r); }
432 );
433 repoRefreshLocales.insert( make_transform_iterator( tmp.begin(), transform ),
434 make_transform_iterator( tmp.end(), transform ) );
435 }
436 else if ( entry == "download.use_deltarpm" )
437 {
439 }
440 else if ( entry == "download.use_deltarpm.always" )
441 {
443 }
444 else if ( entry == "download.media_preference" )
445 {
447 }
448
449 else if ( entry == "download.media_mountdir" )
450 {
451 download_mediaMountdir.restoreToDefault( Pathname(value) );
452 }
453
454 else if ( entry == "download.max_concurrent_connections" )
455 {
457 }
458 else if ( entry == "download.min_download_speed" )
459 {
461 }
462 else if ( entry == "download.max_download_speed" )
463 {
465 }
466 else if ( entry == "download.max_silent_tries" )
467 {
469 }
470 else if ( entry == "download.transfer_timeout" )
471 {
475 }
476 else if ( entry == "commit.downloadMode" )
477 {
478 commit_downloadMode.set( deserializeDownloadMode( value ) );
479 }
480 else if ( entry == "gpgcheck" )
481 {
483 }
484 else if ( entry == "repo_gpgcheck" )
485 {
487 }
488 else if ( entry == "pkg_gpgcheck" )
489 {
491 }
492 else if ( entry == "vendordir" )
493 {
494 cfg_vendor_path = Pathname(value);
495 }
496 else if ( entry == "multiversiondir" )
497 {
499 }
500 else if ( entry == "multiversion.kernels" )
501 {
502 cfg_kernel_keep_spec = value;
503 }
504 else if ( entry == "solver.focus" )
505 {
506 fromString( value, solver_focus );
507 }
508 else if ( entry == "solver.onlyRequires" )
509 {
511 }
512 else if ( entry == "solver.allowVendorChange" )
513 {
515 }
516 else if ( entry == "solver.dupAllowDowngrade" )
517 {
519 }
520 else if ( entry == "solver.dupAllowNameChange" )
521 {
523 }
524 else if ( entry == "solver.dupAllowArchChange" )
525 {
527 }
528 else if ( entry == "solver.dupAllowVendorChange" )
529 {
531 }
532 else if ( entry == "solver.cleandepsOnRemove" )
533 {
535 }
536 else if ( entry == "solver.upgradeTestcasesToKeep" )
537 {
538 solver_upgradeTestcasesToKeep.set( str::strtonum<unsigned>( value ) );
539 }
540 else if ( entry == "solver.upgradeRemoveDroppedPackages" )
541 {
543 }
544 else if ( entry == "solver.checkSystemFile" )
545 {
547 }
548 else if ( entry == "solver.checkSystemFileDir" )
549 {
551 }
552 else if ( entry == "multiversion" )
553 {
555 str::splitEscaped( value, std::inserter( defSpec, defSpec.end() ), ", \t" );
556 }
557 else if ( entry == "locksfile.path" )
558 {
559 locks_file = Pathname(value);
560 }
561 else if ( entry == "locksfile.apply" )
562 {
564 }
565 else if ( entry == "update.datadir" )
566 {
567 update_data_path = Pathname(value);
568 }
569 else if ( entry == "update.scriptsdir" )
570 {
572 }
573 else if ( entry == "update.messagessdir" )
574 {
576 }
577 else if ( entry == "update.messages.notify" )
578 {
579 updateMessagesNotify.set( value );
580 }
581 else if ( entry == "rpm.install.excludedocs" )
582 {
584 str::strToBool( value, false ) );
585 }
586 else if ( entry == "history.logfile" )
587 {
588 history_log_path = Pathname(value);
589 }
590 else if ( entry == "credentials.global.dir" )
591 {
593 }
594 else if ( entry == "credentials.global.file" )
595 {
597 }
598 }
599 }
600 }
601 //
602
603 }
604 else
605 {
606 MIL << _parsedZyppConf << " not found, using defaults instead." << endl;
607 _parsedZyppConf = _parsedZyppConf.extend( " (NOT FOUND)" );
608 }
609
610 // legacy:
611 if ( getenv( "ZYPP_TESTSUITE_FAKE_ARCH" ) )
612 {
613 Arch carch( getenv( "ZYPP_TESTSUITE_FAKE_ARCH" ) );
614 if ( carch != cfg_arch )
615 {
616 WAR << "ZYPP_TESTSUITE_FAKE_ARCH: Overriding system architecture (" << cfg_arch << "): " << carch << endl;
617 cfg_arch = carch;
618 }
619 }
620 MIL << "ZConfig singleton created." << endl;
621 }
622
624 {}
625
626 public:
629
632
637
643
648
653
658
663
669
671
675
686
689
691 const MultiversionSpec & multiversion() const { return getMultiversion(); }
692
694
695 target::rpm::RpmInstFlags rpmInstallFlags;
696
700
701 std::string userData;
702
704
705 private:
706 // HACK for bnc#906096: let pool re-evaluate multiversion spec
707 // if target root changes. ZConfig returns data sensitive to
708 // current target root.
709 // TODO Actually we'd need to scan the target systems zypp.conf and
710 // overlay all system specific values.
712 {
713 typedef std::map<Pathname,MultiversionSpec> SpecMap;
714
715 MultiversionSpec & getSpec( Pathname root_r, const Impl & zConfImpl_r ) // from system at root
716 {
717 // _specMap[] - the plain zypp.conf value
718 // _specMap[/] - combine [] and multiversion.d scan
719 // _specMap[root] - scan root/zypp.conf and root/multiversion.d
720
721 if ( root_r.empty() )
722 root_r = "/";
723 bool cacheHit = _specMap.count( root_r );
724 MultiversionSpec & ret( _specMap[root_r] ); // creates new entry on the fly
725
726 if ( ! cacheHit )
727 {
728 if ( root_r == "/" )
729 ret.swap( _specMap[Pathname()] ); // original zypp.conf
730 else
731 scanConfAt( root_r, ret, zConfImpl_r ); // scan zypp.conf at root_r
732 scanDirAt( root_r, ret, zConfImpl_r ); // add multiversion.d at root_r
733 using zypp::operator<<;
734 MIL << "MultiversionSpec '" << root_r << "' = " << ret << endl;
735 }
736 return ret;
737 }
738
739 MultiversionSpec & getDefaultSpec() // Spec from zypp.conf parsing; called before any getSpec
740 { return _specMap[Pathname()]; }
741
742 private:
743 void scanConfAt( const Pathname root_r, MultiversionSpec & spec_r, const Impl & zConfImpl_r )
744 {
745 static const str::regex rx( "^multiversion *= *(.*)" );
746 str::smatch what;
747 iostr::simpleParseFile( InputStream( Pathname::assertprefix( root_r, _autodetectZyppConfPath() ) ),
748 [&]( int num_r, std::string line_r )->bool
749 {
750 if ( line_r[0] == 'm' && str::regex_match( line_r, what, rx ) )
751 {
752 str::splitEscaped( what[1], std::inserter( spec_r, spec_r.end() ), ", \t" );
753 return false; // stop after match
754 }
755 return true;
756 } );
757 }
758
759 void scanDirAt( const Pathname root_r, MultiversionSpec & spec_r, const Impl & zConfImpl_r )
760 {
761 // NOTE: Actually we'd need to scan and use the root_r! zypp.conf values.
762 Pathname multiversionDir( zConfImpl_r.cfg_multiversion_path );
763 if ( multiversionDir.empty() )
764 multiversionDir = ( zConfImpl_r.cfg_config_path.empty()
765 ? Pathname("/etc/zypp")
766 : zConfImpl_r.cfg_config_path ) / "multiversion.d";
767
768 filesystem::dirForEach( Pathname::assertprefix( root_r, multiversionDir ),
769 [&spec_r]( const Pathname & dir_r, const char *const & name_r )->bool
770 {
771 MIL << "Parsing " << dir_r/name_r << endl;
772 iostr::simpleParseFile( InputStream( dir_r/name_r ),
773 [&spec_r]( int num_r, std::string line_r )->bool
774 {
775 DBG << " found " << line_r << endl;
776 spec_r.insert( std::move(line_r) );
777 return true;
778 } );
779 return true;
780 } );
781 }
782
783 private:
785 };
786
788 { return _multiversionMap.getSpec( _autodetectSystemRoot(), *this ); }
789
791 };
793
795 //
796 // METHOD NAME : ZConfig::instance
797 // METHOD TYPE : ZConfig &
798 //
800 {
801 static ZConfig _instance; // The singleton
802 return _instance;
803 }
804
806 //
807 // METHOD NAME : ZConfig::ZConfig
808 // METHOD TYPE : Ctor
809 //
811 : _pimpl( new Impl )
812 {
813 about( MIL );
814 }
815
817 //
818 // METHOD NAME : ZConfig::~ZConfig
819 // METHOD TYPE : Dtor
820 //
822 {}
823
825 { return _autodetectSystemRoot(); }
826
827
829 {
830 return ( _pimpl->cfg_repo_mgr_root_path.empty()
831 ? systemRoot() : _pimpl->cfg_repo_mgr_root_path );
832 }
833
835 { _pimpl->cfg_repo_mgr_root_path = root; }
836
838 //
839 // system architecture
840 //
842
844 {
845 static Arch _val( _autodetectSystemArchitecture() );
846 return _val;
847 }
848
850 { return _pimpl->cfg_arch; }
851
853 {
854 if ( arch_r != _pimpl->cfg_arch )
855 {
856 WAR << "Overriding system architecture (" << _pimpl->cfg_arch << "): " << arch_r << endl;
857 _pimpl->cfg_arch = arch_r;
858 }
859 }
860
862 //
863 // text locale
864 //
866
868 {
869 static Locale _val( _autodetectTextLocale() );
870 return _val;
871 }
872
874 { return _pimpl->cfg_textLocale; }
875
876 void ZConfig::setTextLocale( const Locale & locale_r )
877 {
878 if ( locale_r != _pimpl->cfg_textLocale )
879 {
880 WAR << "Overriding text locale (" << _pimpl->cfg_textLocale << "): " << locale_r << endl;
881 _pimpl->cfg_textLocale = locale_r;
882 // Propagate changes
884 }
885 }
886
888 // user data
890
892 { return !_pimpl->userData.empty(); }
893
894 std::string ZConfig::userData() const
895 { return _pimpl->userData; }
896
897 bool ZConfig::setUserData( const std::string & str_r )
898 {
899 for_( ch, str_r.begin(), str_r.end() )
900 {
901 if ( *ch < ' ' && *ch != '\t' )
902 {
903 ERR << "New user data string rejectded: char " << (int)*ch << " at position " << (ch - str_r.begin()) << endl;
904 return false;
905 }
906 }
907 MIL << "Set user data string to '" << str_r << "'" << endl;
908 _pimpl->userData = str_r;
909 return true;
910 }
911
913
915 {
916 return ( _pimpl->cfg_cache_path.empty()
917 ? Pathname("/var/cache/zypp") : _pimpl->cfg_cache_path );
918 }
919
921 {
922 return ( _pimpl->cfg_cache_path.empty()
923 ? Pathname("/var/cache/zypp/pubkeys") : _pimpl->cfg_cache_path/"pubkeys" );
924 }
925
927 {
928 _pimpl->cfg_cache_path = path_r;
929 }
930
932 {
933 return ( _pimpl->cfg_metadata_path.empty()
934 ? (repoCachePath()/"raw") : _pimpl->cfg_metadata_path );
935 }
936
938 {
939 _pimpl->cfg_metadata_path = path_r;
940 }
941
943 {
944 return ( _pimpl->cfg_solvfiles_path.empty()
945 ? (repoCachePath()/"solv") : _pimpl->cfg_solvfiles_path );
946 }
947
949 {
950 _pimpl->cfg_solvfiles_path = path_r;
951 }
952
954 {
955 return ( _pimpl->cfg_packages_path.empty()
956 ? (repoCachePath()/"packages") : _pimpl->cfg_packages_path );
957 }
958
960 {
961 _pimpl->cfg_packages_path = path_r;
962 }
963
965
967 {
968 return ( _pimpl->cfg_config_path.empty()
969 ? Pathname("/etc/zypp") : _pimpl->cfg_config_path );
970 }
971
973 {
974 return ( _pimpl->cfg_known_repos_path.empty()
975 ? (configPath()/"repos.d") : _pimpl->cfg_known_repos_path );
976 }
977
979 {
980 return ( _pimpl->cfg_known_services_path.empty()
981 ? (configPath()/"services.d") : _pimpl->cfg_known_services_path );
982 }
983
985 { return configPath()/"needreboot"; }
986
988 { return configPath()/"needreboot.d"; }
989
991 {
992 return ( _pimpl->cfg_vars_path.empty()
993 ? (configPath()/"vars.d") : _pimpl->cfg_vars_path );
994 }
995
997 {
998 return ( _pimpl->cfg_vendor_path.empty()
999 ? (configPath()/"vendors.d") : _pimpl->cfg_vendor_path );
1000 }
1001
1003 {
1004 return ( _pimpl->locks_file.empty()
1005 ? (configPath()/"locks") : _pimpl->locks_file );
1006 }
1007
1009
1011 { return _pimpl->repo_add_probe; }
1012
1014 { return _pimpl->repo_refresh_delay; }
1015
1017 { return _pimpl->repoRefreshLocales.empty() ? Target::requestedLocales("") :_pimpl->repoRefreshLocales; }
1018
1020 { return _pimpl->repoLabelIsAlias; }
1021
1022 void ZConfig::repoLabelIsAlias( bool yesno_r )
1023 { _pimpl->repoLabelIsAlias = yesno_r; }
1024
1026 { return _pimpl->download_use_deltarpm; }
1027
1029 { return download_use_deltarpm() && _pimpl->download_use_deltarpm_always; }
1030
1032 { return _pimpl->download_media_prefer_download; }
1033
1035 { _pimpl->download_media_prefer_download.set( yesno_r ); }
1036
1038 { _pimpl->download_media_prefer_download.restoreToDefault(); }
1039
1041 { return _pimpl->download_max_concurrent_connections; }
1042
1044 { return _pimpl->download_min_download_speed; }
1045
1047 { return _pimpl->download_max_download_speed; }
1048
1050 { return _pimpl->download_max_silent_tries; }
1051
1053 { return _pimpl->download_transfer_timeout; }
1054
1055 Pathname ZConfig::download_mediaMountdir() const { return _pimpl->download_mediaMountdir; }
1056 void ZConfig::set_download_mediaMountdir( Pathname newval_r ) { _pimpl->download_mediaMountdir.set( std::move(newval_r) ); }
1057 void ZConfig::set_default_download_mediaMountdir() { _pimpl->download_mediaMountdir.restoreToDefault(); }
1058
1060 { return _pimpl->commit_downloadMode; }
1061
1062
1063 bool ZConfig::gpgCheck() const { return _pimpl->gpgCheck; }
1064 TriBool ZConfig::repoGpgCheck() const { return _pimpl->repoGpgCheck; }
1065 TriBool ZConfig::pkgGpgCheck() const { return _pimpl->pkgGpgCheck; }
1066
1067 void ZConfig::setGpgCheck( bool val_r ) { _pimpl->gpgCheck.set( val_r ); }
1068 void ZConfig::setRepoGpgCheck( TriBool val_r ) { _pimpl->repoGpgCheck.set( val_r ); }
1069 void ZConfig::setPkgGpgCheck( TriBool val_r ) { _pimpl->pkgGpgCheck.set( val_r ); }
1070
1071 void ZConfig::resetGpgCheck() { _pimpl->gpgCheck.restoreToDefault(); }
1072 void ZConfig::resetRepoGpgCheck() { _pimpl->repoGpgCheck.restoreToDefault(); }
1073 void ZConfig::resetPkgGpgCheck() { _pimpl->pkgGpgCheck.restoreToDefault(); }
1074
1075 ResolverFocus ZConfig::solver_focus() const { return _pimpl->solver_focus; }
1076
1078 { return _pimpl->solver_onlyRequires; }
1079
1081 { return _pimpl->solver_allowVendorChange; }
1082
1083 bool ZConfig::solver_dupAllowDowngrade() const { return _pimpl->solver_dupAllowDowngrade; }
1084 bool ZConfig::solver_dupAllowNameChange() const { return _pimpl->solver_dupAllowNameChange; }
1085 bool ZConfig::solver_dupAllowArchChange() const { return _pimpl->solver_dupAllowArchChange; }
1086 bool ZConfig::solver_dupAllowVendorChange() const { return _pimpl->solver_dupAllowVendorChange; }
1087
1089 { return _pimpl->solver_cleandepsOnRemove; }
1090
1092 { return ( _pimpl->solver_checkSystemFile.empty()
1093 ? (configPath()/"systemCheck") : _pimpl->solver_checkSystemFile ); }
1094
1096 { return ( _pimpl->solver_checkSystemFileDir.empty()
1097 ? (configPath()/"systemCheck.d") : _pimpl->solver_checkSystemFileDir ); }
1098
1100 { return _pimpl->solver_upgradeTestcasesToKeep; }
1101
1102 bool ZConfig::solverUpgradeRemoveDroppedPackages() const { return _pimpl->solverUpgradeRemoveDroppedPackages; }
1103 void ZConfig::setSolverUpgradeRemoveDroppedPackages( bool val_r ) { _pimpl->solverUpgradeRemoveDroppedPackages.set( val_r ); }
1104 void ZConfig::resetSolverUpgradeRemoveDroppedPackages() { _pimpl->solverUpgradeRemoveDroppedPackages.restoreToDefault(); }
1105
1106 namespace
1107 {
1108 inline void sigMultiversionSpecChanged()
1109 {
1111 }
1112 }
1113
1114 const std::set<std::string> & ZConfig::multiversionSpec() const { return _pimpl->multiversion(); }
1115 void ZConfig::multiversionSpec( std::set<std::string> new_r ) { _pimpl->multiversion().swap( new_r ); sigMultiversionSpecChanged(); }
1116 void ZConfig::clearMultiversionSpec() { _pimpl->multiversion().clear(); sigMultiversionSpecChanged(); }
1117 void ZConfig::addMultiversionSpec( const std::string & name_r ) { _pimpl->multiversion().insert( name_r ); sigMultiversionSpecChanged(); }
1118 void ZConfig::removeMultiversionSpec( const std::string & name_r ) { _pimpl->multiversion().erase( name_r ); sigMultiversionSpecChanged(); }
1119
1121 { return _pimpl->apply_locks_file; }
1122
1124 {
1125 return ( _pimpl->update_data_path.empty()
1126 ? Pathname("/var/adm") : _pimpl->update_data_path );
1127 }
1128
1130 {
1131 return ( _pimpl->update_messages_path.empty()
1132 ? Pathname(update_dataPath()/"update-messages") : _pimpl->update_messages_path );
1133 }
1134
1136 {
1137 return ( _pimpl->update_scripts_path.empty()
1138 ? Pathname(update_dataPath()/"update-scripts") : _pimpl->update_scripts_path );
1139 }
1140
1142 { return _pimpl->updateMessagesNotify; }
1143
1144 void ZConfig::setUpdateMessagesNotify( const std::string & val_r )
1145 { _pimpl->updateMessagesNotify.set( val_r ); }
1146
1148 { _pimpl->updateMessagesNotify.restoreToDefault(); }
1149
1151
1152 target::rpm::RpmInstFlags ZConfig::rpmInstallFlags() const
1153 { return _pimpl->rpmInstallFlags; }
1154
1155
1157 {
1158 return ( _pimpl->history_log_path.empty() ?
1159 Pathname("/var/log/zypp/history") : _pimpl->history_log_path );
1160 }
1161
1163 {
1164 return ( _pimpl->credentials_global_dir_path.empty() ?
1165 Pathname("/etc/zypp/credentials.d") : _pimpl->credentials_global_dir_path );
1166 }
1167
1169 {
1170 return ( _pimpl->credentials_global_file_path.empty() ?
1171 Pathname("/etc/zypp/credentials.cat") : _pimpl->credentials_global_file_path );
1172 }
1173
1175
1176 std::string ZConfig::distroverpkg() const
1177 { return "system-release"; }
1178
1180
1182 { return _pimpl->pluginsPath.get(); }
1183
1185 {
1186 return _pimpl->cfg_kernel_keep_spec;
1187 }
1188
1190
1191 std::ostream & ZConfig::about( std::ostream & str ) const
1192 {
1193 str << "libzypp: " LIBZYPP_VERSION_STRING << endl;
1194
1195 str << "libsolv: " << solv_version;
1196 if ( ::strcmp( solv_version, LIBSOLV_VERSION_STRING ) )
1197 str << " (built against " << LIBSOLV_VERSION_STRING << ")";
1198 str << endl;
1199
1200 str << "zypp.conf: '" << _pimpl->_parsedZyppConf << "'" << endl;
1201 str << "TextLocale: '" << textLocale() << "' (" << defaultTextLocale() << ")" << endl;
1202 str << "SystemArchitecture: '" << systemArchitecture() << "' (" << defaultSystemArchitecture() << ")" << endl;
1203 return str;
1204 }
1205
1207} // namespace zypp
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:28
#define DBG
Definition: Logger.h:78
#define MIL
Definition: Logger.h:79
#define ERR
Definition: Logger.h:81
#define WAR
Definition: Logger.h:80
#define INT
Definition: Logger.h:83
Architecture.
Definition: Arch.h:37
Helper to create and pass std::istream.
Definition: InputStream.h:57
'Language[_Country]' codes.
Definition: Locale.h:50
static const Locale enCode
Last resort "en".
Definition: Locale.h:77
LocaleSet requestedLocales() const
Languages to be supported by the system.
Definition: Target.cc:94
ZConfig implementation.
Definition: ZConfig.cc:304
Pathname cfg_multiversion_path
Definition: ZConfig.cc:645
DefaultOption< Pathname > download_mediaMountdir
Definition: ZConfig.cc:662
int download_max_silent_tries
Definition: ZConfig.cc:667
std::set< std::string > MultiversionSpec
Definition: ZConfig.cc:305
Pathname cfg_known_repos_path
Definition: ZConfig.cc:639
Pathname cfg_known_services_path
Definition: ZConfig.cc:640
Pathname cfg_vars_path
Definition: ZConfig.cc:641
Pathname credentials_global_file_path
Definition: ZConfig.cc:699
Option< bool > solver_allowVendorChange
Definition: ZConfig.cc:678
int download_min_download_speed
Definition: ZConfig.cc:665
int download_max_download_speed
Definition: ZConfig.cc:666
bool download_use_deltarpm_always
Definition: ZConfig.cc:660
Pathname _parsedZyppConf
Remember any parsed zypp.conf.
Definition: ZConfig.cc:628
Pathname solver_checkSystemFile
Definition: ZConfig.cc:687
MultiversionMap _multiversionMap
Definition: ZConfig.cc:790
Option< bool > solver_dupAllowNameChange
Definition: ZConfig.cc:680
Pathname update_data_path
Definition: ZConfig.cc:649
Pathname history_log_path
Definition: ZConfig.cc:697
Pathname locks_file
Definition: ZConfig.cc:647
Option< unsigned > solver_upgradeTestcasesToKeep
Definition: ZConfig.cc:684
MultiversionSpec & getMultiversion() const
Definition: ZConfig.cc:787
LocaleSet repoRefreshLocales
Definition: ZConfig.cc:656
Impl(const Pathname &override_r=Pathname())
Definition: ZConfig.cc:308
Pathname cfg_metadata_path
Definition: ZConfig.cc:634
Option< bool > solver_dupAllowArchChange
Definition: ZConfig.cc:681
ResolverFocus solver_focus
Definition: ZConfig.cc:676
Pathname update_scripts_path
Definition: ZConfig.cc:650
Option< Pathname > pluginsPath
Definition: ZConfig.cc:703
Pathname cfg_cache_path
Definition: ZConfig.cc:633
std::string userData
Definition: ZConfig.cc:701
Pathname credentials_global_dir_path
Definition: ZConfig.cc:698
std::string cfg_kernel_keep_spec
Definition: ZConfig.cc:646
DefaultOption< TriBool > repoGpgCheck
Definition: ZConfig.cc:673
Option< bool > solver_dupAllowVendorChange
Definition: ZConfig.cc:682
unsigned repo_refresh_delay
Definition: ZConfig.cc:655
Option< DownloadMode > commit_downloadMode
Definition: ZConfig.cc:670
MultiversionSpec & multiversion()
Definition: ZConfig.cc:690
Option< bool > solver_dupAllowDowngrade
Definition: ZConfig.cc:679
Locale cfg_textLocale
Definition: ZConfig.cc:631
DefaultOption< bool > download_media_prefer_download
Definition: ZConfig.cc:661
bool download_use_deltarpm
Definition: ZConfig.cc:659
Pathname solver_checkSystemFileDir
Definition: ZConfig.cc:688
Pathname cfg_solvfiles_path
Definition: ZConfig.cc:635
Pathname cfg_config_path
Definition: ZConfig.cc:638
target::rpm::RpmInstFlags rpmInstallFlags
Definition: ZConfig.cc:695
Pathname update_messages_path
Definition: ZConfig.cc:651
const MultiversionSpec & multiversion() const
Definition: ZConfig.cc:691
DefaultOption< bool > solverUpgradeRemoveDroppedPackages
Definition: ZConfig.cc:685
int download_transfer_timeout
Definition: ZConfig.cc:668
Pathname cfg_repo_mgr_root_path
Definition: ZConfig.cc:642
DefaultOption< TriBool > pkgGpgCheck
Definition: ZConfig.cc:674
DefaultOption< std::string > updateMessagesNotify
Definition: ZConfig.cc:652
Pathname cfg_packages_path
Definition: ZConfig.cc:636
Pathname cfg_vendor_path
Definition: ZConfig.cc:644
Option< bool > solver_cleandepsOnRemove
Definition: ZConfig.cc:683
int download_max_concurrent_connections
Definition: ZConfig.cc:664
Option< bool > solver_onlyRequires
Definition: ZConfig.cc:677
DefaultOption< bool > gpgCheck
Definition: ZConfig.cc:672
Interim helper class to collect global options and settings.
Definition: ZConfig.h:60
bool hasUserData() const
Whether a (non empty) user data sting is defined.
Definition: ZConfig.cc:891
bool solver_cleandepsOnRemove() const
Whether removing a package should also remove no longer needed requirements.
Definition: ZConfig.cc:1088
std::string userData() const
User defined string value to be passed to log, history, plugins...
Definition: ZConfig.cc:894
Pathname knownServicesPath() const
Path where the known services .service files are kept (configPath()/services.d).
Definition: ZConfig.cc:978
void removeMultiversionSpec(const std::string &name_r)
Definition: ZConfig.cc:1118
Pathname repoPackagesPath() const
Path where the repo packages are downloaded and kept (repoCachePath()/packages).
Definition: ZConfig.cc:953
unsigned repo_refresh_delay() const
Amount of time in minutes that must pass before another refresh.
Definition: ZConfig.cc:1013
Arch systemArchitecture() const
The system architecture zypp uses.
Definition: ZConfig.cc:849
Locale textLocale() const
The locale for translated texts zypp uses.
Definition: ZConfig.cc:873
Pathname update_dataPath() const
Path where the update items are kept (/var/adm)
Definition: ZConfig.cc:1123
ResolverFocus solver_focus() const
The resolvers general attitude when resolving jobs.
Definition: ZConfig.cc:1075
Pathname update_messagesPath() const
Path where the repo solv files are created and kept (update_dataPath()/solv).
Definition: ZConfig.cc:1129
Pathname pluginsPath() const
Defaults to /usr/lib/zypp/plugins.
Definition: ZConfig.cc:1181
Pathname repoManagerRoot() const
The RepoManager root directory.
Definition: ZConfig.cc:828
void resetRepoGpgCheck()
Reset to the zconfig default.
Definition: ZConfig.cc:1072
bool gpgCheck() const
Turn signature checking on/off (on)
Definition: ZConfig.cc:1063
Pathname knownReposPath() const
Path where the known repositories .repo files are kept (configPath()/repos.d).
Definition: ZConfig.cc:972
Pathname update_scriptsPath() const
Path where the repo metadata is downloaded and kept (update_dataPath()/).
Definition: ZConfig.cc:1135
long download_transfer_timeout() const
Maximum time in seconds that you allow a transfer operation to take.
Definition: ZConfig.cc:1052
void setRepoManagerRoot(const Pathname &root)
Sets the RepoManager root directory.
Definition: ZConfig.cc:834
bool solver_dupAllowArchChange() const
DUP tune: Whether to allow package arch changes upon DUP.
Definition: ZConfig.cc:1085
void setTextLocale(const Locale &locale_r)
Set the preferred locale for translated texts.
Definition: ZConfig.cc:876
bool solverUpgradeRemoveDroppedPackages() const
Whether dist upgrade should remove a products dropped packages (true).
Definition: ZConfig.cc:1102
static Locale defaultTextLocale()
The autodetected preferred locale for translated texts.
Definition: ZConfig.cc:867
Pathname download_mediaMountdir() const
Path where media are preferably mounted or downloaded.
Definition: ZConfig.cc:1055
void resetSolverUpgradeRemoveDroppedPackages()
Reset solverUpgradeRemoveDroppedPackages to the zypp.conf default.
Definition: ZConfig.cc:1104
bool apply_locks_file() const
Whether locks file should be read and applied after start (true)
Definition: ZConfig.cc:1120
bool solver_allowVendorChange() const
Whether vendor check is by default enabled.
Definition: ZConfig.cc:1080
void set_default_download_mediaMountdir()
Reset to zypp.cong default.
Definition: ZConfig.cc:1057
Pathname repoCachePath() const
Path where the caches are kept (/var/cache/zypp)
Definition: ZConfig.cc:914
void setPkgGpgCheck(TriBool val_r)
Change the value.
Definition: ZConfig.cc:1069
Pathname needrebootPath() const
Path where the custom needreboot config files are kept (configPath()/needreboot.d).
Definition: ZConfig.cc:987
bool setUserData(const std::string &str_r)
Set a new userData string.
Definition: ZConfig.cc:897
Pathname systemRoot() const
The target root directory.
Definition: ZConfig.cc:824
long download_max_silent_tries() const
Maximum silent tries.
Definition: ZConfig.cc:1049
bool repo_add_probe() const
Whether repository urls should be probed.
Definition: ZConfig.cc:1010
target::rpm::RpmInstFlags rpmInstallFlags() const
The default target::rpm::RpmInstFlags for ZYppCommitPolicy.
Definition: ZConfig.cc:1152
void setUpdateMessagesNotify(const std::string &val_r)
Set a new command definition (see update.messages.notify in zypp.conf).
Definition: ZConfig.cc:1144
unsigned solver_upgradeTestcasesToKeep() const
When committing a dist upgrade (e.g.
Definition: ZConfig.cc:1099
Pathname repoMetadataPath() const
Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
Definition: ZConfig.cc:931
Pathname vendorPath() const
Directory for equivalent vendor definitions (configPath()/vendors.d)
Definition: ZConfig.cc:996
long download_min_download_speed() const
Minimum download speed (bytes per second) until the connection is dropped.
Definition: ZConfig.cc:1043
DownloadMode commit_downloadMode() const
Commit download policy to use as default.
Definition: ZConfig.cc:1059
Pathname needrebootFile() const
Path of the default needreboot config file (configPath()/needreboot).
Definition: ZConfig.cc:984
void setGpgCheck(bool val_r)
Change the value.
Definition: ZConfig.cc:1067
bool solver_dupAllowVendorChange() const
DUP tune: Whether to allow package vendor changes upon DUP.
Definition: ZConfig.cc:1086
~ZConfig()
Dtor.
Definition: ZConfig.cc:821
Pathname locksFile() const
Path where zypp can find or create lock file (configPath()/locks)
Definition: ZConfig.cc:1002
RW_pointer< Impl, rw_pointer::Scoped< Impl > > _pimpl
Pointer to implementation.
Definition: ZConfig.h:552
Pathname repoSolvfilesPath() const
Path where the repo solv files are created and kept (repoCachePath()/solv).
Definition: ZConfig.cc:942
Pathname historyLogFile() const
Path where ZYpp install history is logged.
Definition: ZConfig.cc:1156
void setSystemArchitecture(const Arch &arch_r)
Override the zypp system architecture.
Definition: ZConfig.cc:852
TriBool pkgGpgCheck() const
Check rpm package signatures (indeterminate - according to gpgcheck)
Definition: ZConfig.cc:1065
static ZConfig & instance()
Singleton ctor.
Definition: Resolver.cc:126
void setRepoPackagesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:959
void setRepoSolvfilesPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:948
void resetUpdateMessagesNotify()
Reset to the zypp.conf default.
Definition: ZConfig.cc:1147
std::ostream & about(std::ostream &str) const
Print some detail about the current libzypp version.
Definition: ZConfig.cc:1191
const std::set< std::string > & multiversionSpec() const
Definition: ZConfig.cc:1114
void set_download_mediaMountdir(Pathname newval_r)
Set alternate value.
Definition: ZConfig.cc:1056
bool download_use_deltarpm() const
Whether to consider using a deltarpm when downloading a package.
Definition: ZConfig.cc:1025
TriBool repoGpgCheck() const
Check repo matadata signatures (indeterminate - according to gpgcheck)
Definition: ZConfig.cc:1064
void set_download_media_prefer_download(bool yesno_r)
Set download_media_prefer_download to a specific value.
Definition: ZConfig.cc:1034
std::string updateMessagesNotify() const
Command definition for sending update messages.
Definition: ZConfig.cc:1141
void addMultiversionSpec(const std::string &name_r)
Definition: ZConfig.cc:1117
Pathname solver_checkSystemFile() const
File in which dependencies described which has to be fulfilled for a running system.
Definition: ZConfig.cc:1091
void set_default_download_media_prefer_download()
Set download_media_prefer_download to the configfiles default.
Definition: ZConfig.cc:1037
Pathname solver_checkSystemFileDir() const
Directory, which may or may not contain files in which dependencies described which has to be fulfill...
Definition: ZConfig.cc:1095
void resetGpgCheck()
Reset to the zconfig default.
Definition: ZConfig.cc:1071
void setSolverUpgradeRemoveDroppedPackages(bool val_r)
Set solverUpgradeRemoveDroppedPackages to val_r.
Definition: ZConfig.cc:1103
Pathname configPath() const
Path where the configfiles are kept (/etc/zypp).
Definition: ZConfig.cc:966
static Arch defaultSystemArchitecture()
The autodetected system architecture.
Definition: ZConfig.cc:843
ZConfig()
Default ctor.
Definition: ZConfig.cc:810
Pathname pubkeyCachePath() const
Path where the pubkey caches.
Definition: ZConfig.cc:920
long download_max_concurrent_connections() const
Maximum number of concurrent connections for a single transfer.
Definition: ZConfig.cc:1040
void resetPkgGpgCheck()
Reset to the zconfig default.
Definition: ZConfig.cc:1073
bool solver_onlyRequires() const
Solver regards required packages,patterns,... only.
Definition: ZConfig.cc:1077
Pathname varsPath() const
Path containing custom repo variable definitions (configPath()/vars.d).
Definition: ZConfig.cc:990
bool solver_dupAllowNameChange() const
DUP tune: Whether to follow package renames upon DUP.
Definition: ZConfig.cc:1084
bool repoLabelIsAlias() const
Whether to use repository alias or name in user messages (progress, exceptions, .....
Definition: ZConfig.cc:1019
void clearMultiversionSpec()
Definition: ZConfig.cc:1116
LocaleSet repoRefreshLocales() const
List of locales for which translated package descriptions should be downloaded.
Definition: ZConfig.cc:1016
long download_max_download_speed() const
Maximum download speed (bytes per second)
Definition: ZConfig.cc:1046
void setRepoMetadataPath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:937
bool solver_dupAllowDowngrade() const
DUP tune: Whether to allow version downgrades upon DUP.
Definition: ZConfig.cc:1083
std::string multiversionKernels() const
Definition: ZConfig.cc:1184
std::string distroverpkg() const
Package telling the "product version" on systems not using /etc/product.d/baseproduct.
Definition: ZConfig.cc:1176
bool download_use_deltarpm_always() const
Whether to consider using a deltarpm even when rpm is local.
Definition: ZConfig.cc:1028
void setRepoCachePath(const Pathname &path_r)
Set a new path as the default repo cache path.
Definition: ZConfig.cc:926
void setRepoGpgCheck(TriBool val_r)
Change the value.
Definition: ZConfig.cc:1068
Pathname credentialsGlobalDir() const
Defaults to /etc/zypp/credentials.d.
Definition: ZConfig.cc:1162
bool download_media_prefer_download() const
Hint which media to prefer when installing packages (download vs.
Definition: ZConfig.cc:1031
Pathname credentialsGlobalFile() const
Defaults to /etc/zypp/credentials.cat.
Definition: ZConfig.cc:1168
Wrapper class for ::stat/::lstat.
Definition: PathInfo.h:221
Pathname extend(const std::string &r) const
Append string r to the last component of the path.
Definition: Pathname.h:170
bool empty() const
Test for an empty path.
Definition: Pathname.h:114
static Pathname assertprefix(const Pathname &root_r, const Pathname &path_r)
Return path_r prefixed with root_r, unless it is already prefixed.
Definition: Pathname.cc:235
Simple lineparser: Traverse each line in a file.
Definition: IOStream.h:112
bool next()
Advance to next line.
Definition: IOStream.cc:72
Parses a INI file and offers its structure as a dictionary.
Definition: IniDict.h:42
section_const_iterator sectionsEnd() const
Definition: IniDict.cc:110
EntrySet::const_iterator entry_const_iterator
Definition: IniDict.h:48
MapKVIteratorTraits< SectionSet >::Key_const_iterator section_const_iterator
Definition: IniDict.h:47
entry_const_iterator entriesBegin(const std::string &section) const
Definition: IniDict.cc:72
section_const_iterator sectionsBegin() const
Definition: IniDict.cc:105
entry_const_iterator entriesEnd(const std::string &section) const
Definition: IniDict.cc:83
void setTextLocale(const Locale &locale_r)
Set the default language for retrieving translated texts.
Definition: Pool.cc:233
static Pool instance()
Singleton ctor.
Definition: Pool.h:55
Regular expression.
Definition: Regex.h:95
Regular expression match result.
Definition: Regex.h:163
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
Definition: String.h:30
String related utilities and Regular expression matching.
Types and functions for filesystem operations.
Definition: Glob.cc:24
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:551
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:124
bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)
Return whether str_r has prefix prefix_r.
Definition: String.h:1023
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:93
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
bool strToBool(const C_Str &str, bool default_r)
Parse str into a bool depending on the default value.
Definition: String.h:426
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
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.
Definition: String.h:591
int compareCI(const C_Str &lhs, const C_Str &rhs)
Definition: String.h:980
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
bool fromString(const std::string &val_r, ResolverFocus &ret_r)
ResolverFocus
The resolvers general attitude.
Definition: ResolverFocus.h:22
@ Default
Request the standard behavior (as defined in zypp.conf or 'Job')
std::unordered_set< Locale > LocaleSet
Definition: Locale.h:28
DownloadMode
Supported commit download policies.
Definition: DownloadMode.h:23
@ DownloadDefault
libzypp will decide what to do.
Definition: DownloadMode.h:24
Mutable option with initial value also remembering a config value.
Definition: ZConfig.cc:266
option_type _default
Definition: ZConfig.cc:291
DefaultOption(const value_type &initial_r)
Definition: ZConfig.cc:270
void setDefault(const value_type &newval_r)
Set a new default value.
Definition: ZConfig.cc:287
void restoreToDefault(const value_type &newval_r)
Reset value to a new default.
Definition: ZConfig.cc:279
Option< Tp > option_type
Definition: ZConfig.cc:268
void restoreToDefault()
Reset value to the current default.
Definition: ZConfig.cc:275
const value_type & getDefault() const
Get the current default value.
Definition: ZConfig.cc:283
Mutable option.
Definition: ZConfig.cc:235
const value_type & get() const
Get the value.
Definition: ZConfig.cc:244
value_type & ref()
Non-const reference to set a new value.
Definition: ZConfig.cc:256
Option(const value_type &initial_r)
No default ctor, explicit initialisation!
Definition: ZConfig.cc:239
value_type _val
Definition: ZConfig.cc:260
void set(const value_type &newval_r)
Set a new value.
Definition: ZConfig.cc:252
MultiversionSpec & getSpec(Pathname root_r, const Impl &zConfImpl_r)
Definition: ZConfig.cc:715
void scanDirAt(const Pathname root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
Definition: ZConfig.cc:759
MultiversionSpec & getDefaultSpec()
Definition: ZConfig.cc:739
std::map< Pathname, MultiversionSpec > SpecMap
Definition: ZConfig.cc:713
void scanConfAt(const Pathname root_r, MultiversionSpec &spec_r, const Impl &zConfImpl_r)
Definition: ZConfig.cc:743
static PoolImpl & myPool()
Definition: PoolImpl.cc:178