libzypp  17.25.1
TargetImpl.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_TARGET_TARGETIMPL_H
13 #define ZYPP_TARGET_TARGETIMPL_H
14 
15 #include <iosfwd>
16 #include <set>
17 
19 #include <zypp/base/NonCopyable.h>
20 #include <zypp/base/PtrTypes.h>
21 #include <zypp/PoolItem.h>
22 #include <zypp/ZYppCommit.h>
23 
24 #include <zypp/Pathname.h>
25 #include <zypp/media/MediaAccess.h>
26 #include <zypp/Target.h>
27 #include <zypp/target/rpm/RpmDb.h>
32 #include <zypp/ManagedFile.h>
33 #include <zypp/VendorAttr.h>
34 
36 namespace zypp
37 {
38  namespace target
40  {
41 
42  DEFINE_PTR_TYPE(TargetImpl);
43  class CommitPackageCache;
44 
46  //
47  // CLASS NAME : TargetImpl
48  //
55  {
56  friend std::ostream & operator<<( std::ostream & str, const TargetImpl & obj );
57 
58  public:
60  typedef std::list<PoolItem> PoolItemList;
61 
63  typedef std::set<PoolItem> PoolItemSet;
64 
65  public:
67  TargetImpl(const Pathname & root_r = "/", bool doRebuild_r = false );
69  virtual ~TargetImpl();
70 
75  void createAnonymousId() const;
76 
81 
88  private:
91 
95 
97  bool solvfilesPathIsTemp() const
98  { return ! _tmpSolvfilesPath.empty(); }
99 
101 
102  public:
103  void load( bool force = true );
104 
105  void unload();
106 
107  void reload();
108 
109  void clearCache();
110 
111  bool buildCache();
113 
114  public:
115 
117  Pathname root() const
118  { return _root; }
119 
121  Pathname home() const
122  { return home( _root ); }
123 
124  static Pathname home( const Pathname & root_r )
125  { return root_r / "/var/lib/zypp"; }
126 
128  ZYppCommitResult commit( ResPool pool_r, const ZYppCommitPolicy & policy_r );
129 
131  void installSrcPackage( const SrcPackage_constPtr & srcPackage_r );
132 
134  ManagedFile provideSrcPackage( const SrcPackage_constPtr & srcPackage_r );
135 
137  virtual std::ostream & dumpOn( std::ostream & str ) const
138  {
139  return str << "TargetImpl";
140  }
141 
143  rpm::RpmDb & rpm();
144 
147  bool providesFile (const std::string & path_str, const std::string & name_str) const;
148 
151  std::string whoOwnsFile (const std::string & path_str) const
152  { return _rpm.whoOwnsFile (path_str); }
153 
156 
159  { return _requestedLocalesFile.locales(); }
161  static LocaleSet requestedLocales( const Pathname & root_r );
162 
164  void updateAutoInstalled();
165 
167  std::string targetDistribution() const;
169  static std::string targetDistribution( const Pathname & root_r );
170 
172  std::string targetDistributionRelease() const;
174  static std::string targetDistributionRelease( const Pathname & root_r );
175 
177  std::string targetDistributionFlavor() const;
179  static std::string targetDistributionFlavor( const Pathname & root_r );
180 
184  static Target::DistributionLabel distributionLabel( const Pathname & root_r );
185 
187  std::string distributionVersion() const;
189  static std::string distributionVersion( const Pathname & root_r );
190 
192  std::string distributionFlavor() const;
194  static std::string distributionFlavor( const Pathname & root_r );
195 
197  std::string anonymousUniqueId() const;
199  static std::string anonymousUniqueId( const Pathname & root_r );
200 
202  const VendorAttr & vendorAttr() const
203  { return _vendorAttr; }
205  void vendorAttr( VendorAttr vendorAttr_r );
207 
208  public:
209  private:
211  void commit( const ZYppCommitPolicy & policy_r,
212  CommitPackageCache & packageCache_r,
213  ZYppCommitResult & result_r );
214 
216  void commitFindFileConflicts( const ZYppCommitPolicy & policy_r, ZYppCommitResult & result_r );
217  protected:
229  mutable std::string _distributionVersion;
232  };
234 
236  inline std::ostream & operator<<( std::ostream & str, const TargetImpl & obj )
237  {
238  return obj.dumpOn( str );
239  }
240 
242  } // namespace target
245 } // namespace zypp
247 #endif // ZYPP_TARGET_TARGETIMPL_H
zypp::target::TargetImpl::distributionFlavor
std::string distributionFlavor() const
This is flavor attribute of the installed base product but does not require the target to be loaded a...
Definition: TargetImpl.cc:1924
zypp::target::TargetImpl::buildCache
bool buildCache()
Definition: TargetImpl.cc:897
zypp::target::TargetImpl::dumpOn
virtual std::ostream & dumpOn(std::ostream &str) const
Overload to realize stream output.
Definition: TargetImpl.h:137
zypp::Target::DistributionLabel
Definition: Target.h:168
zypp::target::TargetImpl::rpm
rpm::RpmDb & rpm()
The RPM database.
Definition: TargetImpl.cc:1754
zypp::target::TargetImpl::commit
ZYppCommitResult commit(ResPool pool_r, const ZYppCommitPolicy &policy_r)
Commit changes in the pool.
Definition: TargetImpl.cc:1186
zypp::target::TargetImpl::home
Pathname home() const
The directory to store things.
Definition: TargetImpl.h:121
zypp::Product::constPtr
TraitsType::constPtrType constPtr
Definition: Product.h:38
zypp::target::TargetImpl::_rpm
rpm::RpmDb _rpm
RPM database.
Definition: TargetImpl.h:221
zypp::base::ReferenceCounted
Base class for reference counted objects.
Definition: ReferenceCounted.h:33
zypp::target::TargetImpl::anonymousUniqueId
std::string anonymousUniqueId() const
anonymous unique id
Definition: TargetImpl.cc:1950
zypp::target::TargetImpl::~TargetImpl
virtual ~TargetImpl()
Dtor.
Definition: TargetImpl.cc:873
zypp::target::DEFINE_PTR_TYPE
DEFINE_PTR_TYPE(TargetImpl)
zypp::target::TargetImpl::reload
void reload()
Definition: TargetImpl.cc:1040
PtrTypes.h
zypp::target::TargetImpl::_tmpSolvfilesPath
Pathname _tmpSolvfilesPath
Definition: TargetImpl.h:100
zypp::target::TargetImpl::solvfilesPath
Pathname solvfilesPath() const
The solv file location actually in use (default or temp).
Definition: TargetImpl.h:93
zypp::VendorAttr
Definition of vendor equivalence.
Definition: VendorAttr.h:60
zypp::target::TargetImpl::home
static Pathname home(const Pathname &root_r)
Definition: TargetImpl.h:124
Pathname.h
zypp::target::SolvIdentFile
Save and restore a list of solvable names (ident IdString)
Definition: SolvIdentFile.h:33
Target.h
zypp::target::TargetImpl::operator<<
std::ostream & operator<<(std::ostream &str, const TargetImpl &obj)
Definition: TargetImpl.h:236
zypp::target::TargetImpl::baseProduct
Product::constPtr baseProduct() const
returns the target base installed product, also known as the distribution or platform.
Definition: TargetImpl.cc:1817
zypp::target::TargetImpl::load
void load(bool force=true)
Definition: TargetImpl.cc:1052
zypp::target::TargetImpl::_distributionVersion
std::string _distributionVersion
Cache distributionVersion.
Definition: TargetImpl.h:229
zypp::target::TargetImpl::commitFindFileConflicts
void commitFindFileConflicts(const ZYppCommitPolicy &policy_r, ZYppCommitResult &result_r)
Commit helper checking for file conflicts after download.
Definition: TargetImpl.commitFindFileConflicts.cc:122
zypp::target::TargetImpl::PoolItemList
std::list< PoolItem > PoolItemList
list of pool items
Definition: TargetImpl.h:60
zypp::target::TargetImpl
Base class for concrete Target implementations.
Definition: TargetImpl.h:54
zypp::target::TargetImpl::createAnonymousId
void createAnonymousId() const
generates the unique anonymous id which is called when creating the target
Definition: TargetImpl.cc:815
zypp::target::TargetImpl::targetDistributionFlavor
std::string targetDistributionFlavor() const
This is register.flavor attribute of the installed base product.
Definition: TargetImpl.cc:1859
zypp::base::NonCopyable
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition: NonCopyable.h:26
TargetException.h
RequestedLocalesFile.h
zypp::target::TargetImpl::distributionLabel
Target::DistributionLabel distributionLabel() const
This is shortName and summary attribute of the installed base product.
Definition: TargetImpl.cc:1865
zypp::target::CommitPackageCache
Target::commit helper optimizing package provision.
Definition: CommitPackageCache.h:58
zypp::target::rpm::RpmDb
Interface to the rpm program.
Definition: RpmDb.h:47
zypp::target::TargetImpl::root
Pathname root() const
The root set for this target.
Definition: TargetImpl.h:117
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::target::TargetImpl::_vendorAttr
VendorAttr _vendorAttr
vendor equivalence settings.
Definition: TargetImpl.h:231
zypp::target::TargetImpl::requestedLocales
LocaleSet requestedLocales() const
Languages to be supported by the system.
Definition: TargetImpl.h:158
zypp::ZYppCommitResult
Result returned from ZYpp::commit.
Definition: ZYppCommitResult.h:62
zypp::target::TargetImpl::_autoInstalledFile
SolvIdentFile _autoInstalledFile
user/auto installed database
Definition: TargetImpl.h:225
zypp::target::TargetImpl::unload
void unload()
Definition: TargetImpl.cc:1045
zypp::target::TargetImpl::provideSrcPackage
ManagedFile provideSrcPackage(const SrcPackage_constPtr &srcPackage_r)
Provides a source package on the Target.
Definition: TargetImpl.cc:1980
zypp::target::TargetImpl::distributionVersion
std::string distributionVersion() const
This is version attribute of the installed base product.
Definition: TargetImpl.cc:1883
zypp::target::TargetImpl::clearCache
void clearCache()
Definition: TargetImpl.cc:891
MediaAccess.h
zypp::target::TargetImpl::updateAutoInstalled
void updateAutoInstalled()
Update the database of autoinstalled packages.
Definition: TargetImpl.cc:1838
zypp::target::HardLocksFile
Save and restore hardlocks.
Definition: HardLocksFile.h:36
zypp::target::TargetImpl::operator<<
friend std::ostream & operator<<(std::ostream &str, const TargetImpl &obj)
zypp::ResPool
Global ResObject pool.
Definition: ResPool.h:60
zypp::target::TargetImpl::PoolItemSet
std::set< PoolItem > PoolItemSet
set of pool items
Definition: TargetImpl.h:63
zypp::target::TargetImpl::providesFile
bool providesFile(const std::string &path_str, const std::string &name_str) const
If the package is installed and provides the file Needed to evaluate split provides during Resolver::...
Definition: TargetImpl.cc:1759
zypp::AutoDispose
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
Definition: AutoDispose.h:92
zypp::target::TargetImpl::_requestedLocalesFile
RequestedLocalesFile _requestedLocalesFile
Requested Locales database.
Definition: TargetImpl.h:223
ReferenceCounted.h
zypp::target::TargetImpl::defaultSolvfilesPath
Pathname defaultSolvfilesPath() const
The systems default solv file location.
Definition: TargetImpl.cc:886
SolvIdentFile.h
zypp::filesystem::Pathname::empty
bool empty() const
Test for an empty path.
Definition: Pathname.h:114
zypp::LocaleSet
std::unordered_set< Locale > LocaleSet
Definition: Locale.h:27
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:44
zypp::target::TargetImpl::targetDistributionRelease
std::string targetDistributionRelease() const
This is register.release attribute of the installed base product.
Definition: TargetImpl.cc:1853
PoolItem.h
VendorAttr.h
zypp::target::TargetImpl::solvfilesPathIsTemp
bool solvfilesPathIsTemp() const
Whether we're using a temp.
Definition: TargetImpl.h:97
zypp::target::TargetImpl::vendorAttr
const VendorAttr & vendorAttr() const
The targets current vendor equivalence settings.
Definition: TargetImpl.h:202
zypp::target::RequestedLocalesFile::locales
const LocaleSet & locales() const
Return the loacale set.
Definition: RequestedLocalesFile.h:53
zypp::target::TargetImpl::createLastDistributionFlavorCache
void createLastDistributionFlavorCache() const
generates a cache of the last product flavor
Definition: TargetImpl.cc:837
zypp::target::TargetImpl::whoOwnsFile
std::string whoOwnsFile(const std::string &path_str) const
Return name of package owning path_str or empty string if no installed package owns path_str.
Definition: TargetImpl.h:151
str
String related utilities and Regular expression matching.
ManagedFile.h
zypp::ZYppCommitPolicy
Options and policies for ZYpp::commit.
Definition: ZYppCommitPolicy.h:33
zypp::target::TargetImpl::_root
Pathname _root
Path to the target.
Definition: TargetImpl.h:219
zypp::target::TargetImpl::_hardLocksFile
HardLocksFile _hardLocksFile
Hard-Locks database.
Definition: TargetImpl.h:227
HardLocksFile.h
zypp::target::TargetImpl::TargetImpl
TargetImpl(const Pathname &root_r="/", bool doRebuild_r=false)
Ctor.
Definition: TargetImpl.cc:745
zypp::target::TargetImpl::targetDistribution
std::string targetDistribution() const
This is register.target attribute of the installed base product.
Definition: TargetImpl.cc:1847
zypp::target::TargetImpl::installSrcPackage
void installSrcPackage(const SrcPackage_constPtr &srcPackage_r)
Install a source package on the Target.
Definition: TargetImpl.cc:1969
RpmDb.h
zypp::target::rpm::RpmDb::whoOwnsFile
std::string whoOwnsFile(const std::string &file_r) const
Return name of package owning file or empty string if no installed package owns file.
Definition: RpmDb.cc:995
NonCopyable.h
zypp::target::RequestedLocalesFile
Save and restore locale set from file.
Definition: RequestedLocalesFile.h:35
ZYppCommit.h