libzypp 17.38.7
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
21#include <zypp/PoolItem.h>
22#include <zypp/ZYppCommit.h>
23
24#include <zypp-core/Pathname.h>
25#include <zypp-core/fs/WatchFile>
26#include <zypp/Target.h>
32#include <zypp/ManagedFile.h>
33#include <zypp/VendorAttr.h>
34
36namespace zypp
37{
39 namespace target
40 {
41
44
46 //
47 // CLASS NAME : TargetImpl
48 //
55 {
56 friend std::ostream & operator<<( std::ostream & str, const TargetImpl & obj );
57
58 public:
60 using PoolItemList = std::list<PoolItem>;
61
63 using PoolItemSet = std::set<PoolItem>;
64
65 public:
67 TargetImpl(const Pathname & root_r = "/", bool doRebuild_r = false );
69 ~TargetImpl() override;
70
75 void createAnonymousId() const;
76
81
88 private:
91
95
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
118 { return _root; }
119
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 std::ostream & dumpOn( std::ostream & str ) const override
138 { return str << "Target(" << root() << ")"; }
139
141 rpm::RpmDb & rpm();
142
145 bool providesFile (const std::string & path_str, const std::string & name_str) const;
146
149 std::string whoOwnsFile (const std::string & path_str) const
150 { return _rpm.whoOwnsFile (path_str); }
151
154
157 { return _requestedLocalesFile.locales(); }
158
159 static LocaleSet requestedLocales( const Pathname & root_r );
160
162 void updateAutoInstalled();
163
165 std::string targetDistribution() const;
167 static std::string targetDistribution( const Pathname & root_r );
168
170 std::string targetDistributionRelease() const;
172 static std::string targetDistributionRelease( const Pathname & root_r );
173
175 std::string targetDistributionFlavor() const;
177 static std::string targetDistributionFlavor( const Pathname & root_r );
178
183
185 std::string distributionVersion() const;
187 static std::string distributionVersion( const Pathname & root_r );
188
190 std::string distributionFlavor() const;
192 static std::string distributionFlavor( const Pathname & root_r );
193
195 std::string anonymousUniqueId() const;
197 static std::string anonymousUniqueId( const Pathname & root_r );
198
200 const VendorAttr & vendorAttr() const
201 { return _vendorAttr; }
202
203 void vendorAttr( VendorAttr vendorAttr_r );
205
206 public:
207 private:
209 void commit( const ZYppCommitPolicy & policy_r,
210 CommitPackageCache & packageCache_r,
211 ZYppCommitResult & result_r );
212
214 void commitInSingleTransaction( const ZYppCommitPolicy & policy_r,
215 CommitPackageCache & packageCache_r,
216 ZYppCommitResult & result_r );
217
218
220 void commitFindFileConflicts( const ZYppCommitPolicy & policy_r, ZYppCommitResult & result_r );
221 protected:
234 mutable std::string _distributionVersion;
237 };
238
239
241 inline std::ostream & operator<<( std::ostream & str, const TargetImpl & obj )
242 {
243 return obj.dumpOn( str );
244 }
245
247 } // namespace target
250} // namespace zypp
252#endif // ZYPP_TARGET_TARGETIMPL_H
#define DEFINE_PTR_TYPE(NAME)
Forward declaration of Ptr types.
Definition PtrTypes.h:639
TraitsType::constPtrType constPtr
Definition Product.h:39
Global ResObject pool.
Definition ResPool.h:62
Definition of vendor equivalence.
Definition VendorAttr.h:61
Remember a files attributes to detect content changes.
Definition watchfile.h:50
Options and policies for ZYpp::commit.
Result returned from ZYpp::commit.
Base class for reference counted objects.
Target::commit helper optimizing package provision.
Save and restore hardlocks.
Save and restore locale set from file.
Save and restore a list of solvable names (ident IdString)
Base class for concrete Target implementations.
Definition TargetImpl.h:55
std::string targetDistributionRelease() const
This is register.release attribute of the installed base product.
const VendorAttr & vendorAttr() const
The targets current vendor equivalence settings.
Definition TargetImpl.h:200
std::string targetDistribution() const
This is register.target attribute of the installed base product.
std::set< PoolItem > PoolItemSet
set of pool items
Definition TargetImpl.h:63
std::list< PoolItem > PoolItemList
list of pool items
Definition TargetImpl.h:60
LocaleSet requestedLocales() const
Languages to be supported by the system.
Definition TargetImpl.h:156
friend std::ostream & operator<<(std::ostream &str, const TargetImpl &obj)
relates: TargetImpl Stream output
Definition TargetImpl.h:241
void updateAutoInstalled()
Update the database of autoinstalled packages.
ManagedFile provideSrcPackage(const SrcPackage_constPtr &srcPackage_r)
Provides a source package on the Target.
Pathname _root
Path to the target.
Definition TargetImpl.h:223
RequestedLocalesFile _requestedLocalesFile
Requested Locales database.
Definition TargetImpl.h:227
void createLastDistributionFlavorCache() const
generates a cache of the last product flavor
WatchFile _baseproductWatcher
Cache distributionVersion.
Definition TargetImpl.h:233
std::string _distributionVersion
Definition TargetImpl.h:234
rpm::RpmDb _rpm
RPM database.
Definition TargetImpl.h:225
~TargetImpl() override
Dtor.
rpm::RpmDb & rpm()
The RPM database.
Pathname solvfilesPath() const
The solv file location actually in use (default or temp).
Definition TargetImpl.h:93
std::string distributionVersion() const
This is version attribute of the installed base product.
void createAnonymousId() const
generates the unique anonymous id which is called when creating the target
static Pathname home(const Pathname &root_r)
Definition TargetImpl.h:124
SolvIdentFile _autoInstalledFile
user/auto installed database
Definition TargetImpl.h:229
std::ostream & dumpOn(std::ostream &str) const override
Overload to realize stream output.
Definition TargetImpl.h:137
Product::constPtr baseProduct() const
returns the target base installed product, also known as the distribution or platform.
Target::DistributionLabel distributionLabel() const
This is shortName and summary attribute of the installed base product.
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::...
HardLocksFile _hardLocksFile
Hard-Locks database.
Definition TargetImpl.h:231
Pathname root() const
The root set for this target.
Definition TargetImpl.h:117
void load(bool force=true)
std::string distributionFlavor() const
This is flavor attribute of the installed base product but does not require the target to be loaded a...
void commitInSingleTransaction(const ZYppCommitPolicy &policy_r, CommitPackageCache &packageCache_r, ZYppCommitResult &result_r)
Commit ordered changes (internal helper)
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:149
void installSrcPackage(const SrcPackage_constPtr &srcPackage_r)
Install a source package on the Target.
ZYppCommitResult commit(ResPool pool_r, const ZYppCommitPolicy &policy_r)
Commit changes in the pool.
VendorAttr _vendorAttr
vendor equivalence settings.
Definition TargetImpl.h:236
Pathname home() const
The directory to store things.
Definition TargetImpl.h:121
void commitFindFileConflicts(const ZYppCommitPolicy &policy_r, ZYppCommitResult &result_r)
Commit helper checking for file conflicts after download.
Pathname defaultSolvfilesPath() const
The systems default solv file location.
std::string anonymousUniqueId() const
anonymous unique id
TargetImpl(const Pathname &root_r="/", bool doRebuild_r=false)
Ctor.
bool solvfilesPathIsTemp() const
Whether we're using a temp.
Definition TargetImpl.h:97
std::string targetDistributionFlavor() const
This is register.flavor attribute of the installed base product.
Interface to the rpm program.
Definition RpmDb.h:51
String related utilities and Regular expression matching.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition NonCopyable.h:26
std::ostream & operator<<(std::ostream &str, const CommitPackageCache &obj)
relates: CommitPackageCache Stream output
Easy-to use interface to the ZYPP dependency resolver.
std::unordered_set< Locale > LocaleSet
Definition Locale.h:29
AutoDispose< const Pathname > ManagedFile
A Pathname plus associated cleanup code to be executed when path is no longer needed.
Definition ManagedFile.h:27