Deprecate MediaAccess::downloads (accidentally deleted)
[platform/upstream/libzypp.git] / zypp / ZConfig.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ZConfig.h
10  *
11 */
12 #ifndef ZYPP_ZCONFIG_H
13 #define ZYPP_ZCONFIG_H
14
15 #include <iosfwd>
16 #include <set>
17 #include <string>
18
19 #include "zypp/base/Deprecated.h"
20 #include "zypp/base/NonCopyable.h"
21 #include "zypp/base/PtrTypes.h"
22
23 #include "zypp/Arch.h"
24 #include "zypp/Locale.h"
25 #include "zypp/Pathname.h"
26 #include "zypp/IdString.h"
27
28 #include "zypp/target/rpm/RpmFlags.h"
29
30 ///////////////////////////////////////////////////////////////////
31 namespace zypp
32 { /////////////////////////////////////////////////////////////////
33
34   ///////////////////////////////////////////////////////////////////
35   //
36   //    CLASS NAME : ZConfig
37   //
38   /** Interim helper class to collect global options and settings.
39    * Use it to avoid hardcoded values and calls to getZYpp() just
40    * to retrieve some value like architecture, languages or tmppath.
41    *
42    * It reads /etc/zypp/zypp.conf, the filename can be overridden by
43    * setting the ZYPP_CONF environment variable to a different file.
44    *
45    * Note, if you add settings to this file, please follow the following
46    * convention:
47    *
48    * namespace.settingname
49    *
50    * should become
51    *
52    * namespace_settingName()
53    *
54    * \ingroup Singleton
55   */
56   class ZConfig : private base::NonCopyable
57   {
58     public:
59
60       /** Singleton ctor */
61       static ZConfig & instance();
62
63       /** Print some detail about the current libzypp version.*/
64       std::ostream & about( std::ostream & str ) const;
65
66     public:
67
68       /** The target root directory. */
69       Pathname systemRoot() const;
70
71     public:
72
73       /** The autodetected system architecture. */
74       static Arch defaultSystemArchitecture();
75
76       /** The system architecture zypp uses. */
77       Arch systemArchitecture() const;
78
79       /** Override the zypp system architecture.
80        * This is useful for test scenarious. <b>But be warned</b>, zypp does
81        * not expect the system architecture to change at runtime. So
82        * set it at the verry beginning before you acess any other
83        * zypp component.
84       */
85       void setSystemArchitecture( const Arch & arch_r );
86
87       /** Reset the zypp system architecture to the default. */
88       void resetSystemArchitecture()
89       { setSystemArchitecture( defaultSystemArchitecture() ); }
90
91     public:
92       /** The autodetected prefered locale for translated texts.
93        */
94       static Locale defaultTextLocale();
95
96       /** The locale for translated texts zypp uses.
97        */
98       Locale textLocale() const;
99
100       /** Set the prefered locale for translated texts. */
101       void setTextLocale( const Locale & locale_r );
102
103       /** Reset the locale for translated texts to the default. */
104       void resetTextLocale()
105       { setTextLocale( defaultTextLocale() ); }
106
107     public:
108       /**
109        * Path where the caches are kept (/var/cache/zypp)
110        * \ingroup g_ZC_REPOCACHE
111        */
112       Pathname repoCachePath() const;
113
114      /**
115        * Path where the repo metadata is downloaded and kept (repoCachePath()/raw).
116         * \ingroup g_ZC_REPOCACHE
117       */
118       Pathname repoMetadataPath() const;
119
120      /**
121        * Path where the repo solv files are created and kept (repoCachePath()/solv).
122         * \ingroup g_ZC_REPOCACHE
123       */
124       Pathname repoSolvfilesPath() const;
125
126       /**
127        * Path where the repo packages are downloaded and kept (repoCachePath()/packages).
128         * \ingroup g_ZC_REPOCACHE
129       */
130       Pathname repoPackagesPath() const;
131
132       /**
133        * Path where the configfiles are kept (/etc/zypp).
134        * \ingroup g_ZC_CONFIGFILES
135        */
136       Pathname configPath() const;
137
138       /**
139        * Path where the known repositories .repo files are kept (configPath()/repos.d).
140        * \ingroup g_ZC_CONFIGFILES
141        */
142       Pathname knownReposPath() const;
143
144       /**
145        * Path where the known services .service files are kept (configPath()/services.d).
146        * \ingroup g_ZC_CONFIGFILES
147        */
148       Pathname knownServicesPath() const;
149
150       /**
151        * Whether repository urls should be probed.
152        / config option
153        * repo.add.probe
154        */
155       bool repo_add_probe() const;
156
157       /**
158        * Amount of time in minutes that must pass before another refresh.
159        */
160       unsigned repo_refresh_delay() const;
161
162       /**
163        * Maximum number of concurrent connections for a single transfer
164        */
165       long download_max_concurrent_connections() const;
166
167       /**
168        * Minimum download speed (bytes per second)
169        * until the connection is dropped
170        */
171       long download_min_download_speed() const;
172
173       /**
174        * Maximum download speed (bytes per second)
175        */
176       long download_max_download_speed() const;
177
178       /**
179        * Maximum silent tries
180        */
181       long download_max_silent_tries() const;
182
183
184       /** Whether to consider using a deltarpm when downloading a package.
185        * Config option <tt>download.use_deltarpm (true)</tt>
186        */
187       bool download_use_deltarpm() const;
188
189       /** Whether to consider using a deltarpm even when rpm is local.
190        * This requires \ref download_use_deltarpm being \c true.
191        * Config option <tt>download.use_deltarpm.always (false)</tt>
192        */
193       bool download_use_deltarpm_always() const;
194
195       /**
196        * Hint which media to prefer when installing packages (download vs. CD).
197        * \see class \ref media::MediaPriority
198        */
199       bool download_media_prefer_download() const;
200       /** \overload */
201       bool download_media_prefer_volatile() const
202       { return ! download_media_prefer_download(); }
203       /**
204        * Set \ref download_media_prefer_download to a specific value.
205        */
206       void set_download_media_prefer_download( bool yesno_r );
207       /**
208        * Set \ref download_media_prefer_download to the configfiles default.
209        */
210       void set_default_download_media_prefer_download();
211
212       /**
213        * Directory for equivalent vendor definitions  (configPath()/vendors.d)
214        * \ingroup g_ZC_CONFIGFILES
215        */
216       Pathname vendorPath() const;
217
218       /**
219        * Solver regards required packages,patterns,... only
220        */
221       bool solver_onlyRequires() const;
222
223       /**
224        * File in which dependencies described which has to be
225        * fulfilled for a running system.
226        */
227       Pathname solver_checkSystemFile() const;
228
229       /**
230        * Whether vendor check is by default enabled.
231        */
232       bool solver_allowVendorChange() const;
233
234       /**
235        * When committing a dist upgrade (e.g. <tt>zypper dup</tt>)
236        * a solver testcase is written. It is needed in bugreports,
237        * in case something went wrong. This returns the number of
238        * testcases to keep on the system. Old cases will be deleted,
239        * as new ones are created. Use \c 0 to write no testcase at all.
240        */
241       unsigned solver_upgradeTestcasesToKeep() const;
242
243       /**
244        * Packages which can be installed parallel with different versions
245        * Returning a set of package names (IdString)
246        */
247       std::set<IdString> multiversion() const;
248       void addMultiversion(std::string &name);
249       bool removeMultiversion(std::string &name);
250
251       /**
252        * Path where zypp can find or create lock file (configPath()/locks)
253        * \ingroup g_ZC_CONFIGFILES
254        */
255       Pathname locksFile() const;
256
257       /**
258        * Whether locks file should be read and applied after start (true)
259        */
260       bool apply_locks_file() const;
261
262       /**
263        * Path where the update items are kept (/var/adm)
264        */
265       Pathname update_dataPath() const;
266
267      /**
268       * Path where the repo metadata is downloaded and kept (update_dataPath()/).
269       * \ingroup g_ZC_REPOCACHE
270       */
271       Pathname update_scriptsPath() const;
272
273      /**
274       * Path where the repo solv files are created and kept (update_dataPath()/solv).
275       * \ingroup g_ZC_REPOCACHE
276       */
277       Pathname update_messagesPath() const;
278
279       /** \name Options for package installation */
280       //@{
281       /** The default \ref target::rpm::RpmInstFlags for \ref ZYppCommitPolicy.
282        * Or-combination of \ref target::rpm::RpmInstFlag.
283        * \code
284        * ZConfig.instance().rpmInstallFlags().testFlag( target::rpm::RPMINST_EXCLUDEDOCS );
285        * \endcode
286        */
287       target::rpm::RpmInstFlags rpmInstallFlags() const;
288       //@}
289
290       /**
291        * Path where ZYpp install history is logged. Defaults to
292        * /var/log/zypp/history.
293        *
294        * \see http://en.opensuse.org/Libzypp/Package_History
295        */
296       Pathname historyLogFile() const;
297
298       /**
299        * Defaults to /etc/zypp/credentials.d
300        */
301       Pathname credentialsGlobalDir() const;
302
303       /**
304        * Defaults to /etc/zypp/credentials.cat
305        */
306       Pathname credentialsGlobalFile() const;
307
308
309       /** Package telling the "product version" on systems not using /etc/product.d/baseproduct.
310        *
311        * On RHEL, Fedora and others the "product version" is determined by the first package
312        * providing 'redhat-release'. This value is not hardcoded in YUM and can be configured
313        * with the $distroverpkg variable.
314        *
315        * Defaults to 'redhat-release'.
316        */
317       std::string distroverpkg() const;
318
319     public:
320       class Impl;
321       /** Dtor */
322       ~ZConfig();
323     private:
324       friend class Impl;
325       /** Default ctor. */
326       ZConfig();
327       /** Pointer to implementation */
328       RW_pointer<Impl, rw_pointer::Scoped<Impl> > _pimpl;
329   };
330   ///////////////////////////////////////////////////////////////////
331
332   /////////////////////////////////////////////////////////////////
333 } // namespace zypp
334 ///////////////////////////////////////////////////////////////////
335 #endif // ZYPP_ZCONFIG_H