Imported Upstream version 16.3.2
[platform/upstream/libzypp.git] / zypp / ZConfig.h
index 2d6345b..cbda6fb 100644 (file)
@@ -16,7 +16,7 @@
 #include <set>
 #include <string>
 
-#include "zypp/base/Deprecated.h"
+#include "zypp/APIConfig.h"
 #include "zypp/base/NonCopyable.h"
 #include "zypp/base/PtrTypes.h"
 
@@ -24,6 +24,7 @@
 #include "zypp/Locale.h"
 #include "zypp/Pathname.h"
 #include "zypp/IdString.h"
+#include "zypp/TriBool.h"
 
 #include "zypp/DownloadMode.h"
 #include "zypp/target/rpm/RpmFlags.h"
@@ -52,6 +53,7 @@ namespace zypp
    *
    * namespace_settingName()
    *
+   * \ingroup ZyppConfig
    * \ingroup Singleton
   */
   class ZConfig : private base::NonCopyable
@@ -108,6 +110,24 @@ namespace zypp
       { setTextLocale( defaultTextLocale() ); }
 
     public:
+      /** \name Maintain user data
+       * \see \ref zypp-userdata
+       */
+      //@{
+      /** Whether a (non empty) user data sting is defined. */
+      bool hasUserData() const;
+
+      /** User defined string value to be passed to log, history, plugins... */
+      std::string userData() const;
+
+      /** Set a new \ref userData string.
+       * \returns \c TRUE if the string was accepted; \c FALSE if the
+       * string was rejected due to nonprintable characters or newlines.
+       */
+      bool setUserData( const std::string & str_r );
+      //@}
+
+    public:
       /**
        * Path where the caches are kept (/var/cache/zypp)
        * \ingroup g_ZC_REPOCACHE
@@ -163,6 +183,11 @@ namespace zypp
       unsigned repo_refresh_delay() const;
 
       /**
+       * List of locales for which translated package descriptions should be downloaded.
+       */
+      LocaleSet repoRefreshLocales() const;
+
+      /**
        * Whether to use repository alias or name in user messages (progress,
        * exceptions, ...).
        * True: use alias, false: use name.
@@ -199,6 +224,11 @@ namespace zypp
        */
       long download_max_silent_tries() const;
 
+      /**
+       * Maximum time in seconds that you allow a transfer operation to take.
+       */
+      long download_transfer_timeout() const;
+
 
       /** Whether to consider using a deltarpm when downloading a package.
        * Config option <tt>download.use_deltarpm (true)</tt>
@@ -228,11 +258,39 @@ namespace zypp
        */
       void set_default_download_media_prefer_download();
 
+      /** Path where media are preferably mounted or downloaded.
+       * Config option <tt>download.media_mountdir (/var/adm/mount)</tt>
+       * Needs to be a (writable) directory, otherwise /var/tmp is fallback.
+       */
+      Pathname download_mediaMountdir() const;
+      /** Set alternate value. */
+      void set_download_mediaMountdir( Pathname newval_r );
+      /** Reset to zypp.cong default. */
+      void set_default_download_mediaMountdir();
+
       /**
        * Commit download policy to use as default.
        */
       DownloadMode commit_downloadMode() const;
 
+      /** \name Signature checking (repodata and packages)
+       * If \ref gpgcheck is \c on (the default) we will either check the signature
+       * of repo metadata (packages are secured via checksum in the metadata), or the
+       * signature of an rpm package to install if it's repo metadata are not signed
+       * or not checked. If \ref gpgcheck is \c off, no checks are performed.
+       *
+       * The default behavior can be altered by explicitly setting \ref repo_gpgcheck and/or
+       * \ref pkg_gpgcheck to perform those checks always (\c on) or never (\c off).
+       *
+       * Explicitly setting \c gpgcheck, \c repo_gpgcheck or \c pkg_gpgcheck in a
+       * repositories \a .repo file will overwrite the defaults here.
+       */
+      //@{
+      bool gpgCheck() const;           ///< Turn signature checking on/off (on)
+      TriBool repoGpgCheck() const;    ///< Check repo matadata signatures (indeterminate - according to gpgcheck)
+      TriBool pkgGpgCheck() const;     ///< Check rpm package signatures (indeterminate - according to gpgcheck)
+      //@}
+      //
       /**
        * Directory for equivalent vendor definitions  (configPath()/vendors.d)
        * \ingroup g_ZC_CONFIGFILES
@@ -251,10 +309,29 @@ namespace zypp
       Pathname solver_checkSystemFile() const;
 
       /**
+       * Directory, which may or may not contain files in which
+       * dependencies described which has to be fulfilled for a
+       * running system.
+       */
+      Pathname solver_checkSystemFileDir() const;
+
+      /**
        * Whether vendor check is by default enabled.
        */
       bool solver_allowVendorChange() const;
 
+      /** DUP tune: Whether to allow version downgrades upon DUP. */
+      bool solver_dupAllowDowngrade() const;
+
+      /** DUP tune: Whether to follow package renames upon DUP. */
+      bool solver_dupAllowNameChange() const;
+
+      /** DUP tune: Whether to allow package arch changes upon DUP. */
+      bool solver_dupAllowArchChange() const;
+
+      /** DUP tune: Whether to allow package vendor changes upon DUP. */
+      bool solver_dupAllowVendorChange() const;
+
       /**
        * Whether removing a package should also remove no longer needed requirements.
        */
@@ -289,12 +366,18 @@ namespace zypp
       void resetSolverUpgradeRemoveDroppedPackages();
 
       /** \name Packages which can be installed in different versions at the same time.
-       * This returns the config file values (\c names or \c provides:...). For the corresponding
-       * packages use e.g \ref sat::Pool::multiversionBegin, or \ref sat::Solbale::multiversionInstall
-       * (\ref ui::Selectable::multiversionInstall).
+       *
+       * This returns the config file values (\c names or \c provides:...). The
+       * corresponding packages have the \c multiversionInstall property set. Those
+       * packages will be installed using 'rpm -i', so they will not implicitly obsolete
+       * other installed versions.
+       *
+       * \see \ref sat::SolvableType
        */
       //@{
       const std::set<std::string> & multiversionSpec() const;
+      void multiversionSpec( std::set<std::string> new_r );
+      void clearMultiversionSpec();
       void addMultiversionSpec( const std::string & name_r );
       void removeMultiversionSpec( const std::string & name_r );
       //@}