1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/zypp_detail/ZYppImpl.cc
14 #include "zypp/TmpPath.h"
15 #include "zypp/base/Logger.h"
16 #include "zypp/base/String.h"
18 #include "zypp/zypp_detail/ZYppImpl.h"
19 #include "zypp/solver/detail/Helper.h"
20 #include "zypp/target/TargetImpl.h"
21 #include "zypp/ZYpp.h"
22 #include "zypp/NVRAD.h"
23 #include "zypp/DiskUsageCounter.h"
24 #include "zypp/NameKindProxy.h"
25 #include "zypp/Locks.h"
29 ///////////////////////////////////////////////////////////////////
31 { /////////////////////////////////////////////////////////////////
32 ///////////////////////////////////////////////////////////////////
34 { /////////////////////////////////////////////////////////////////
36 ///////////////////////////////////////////////////////////////////
38 // METHOD NAME : ZYppImpl::ZYppImpl
39 // METHOD TYPE : Constructor
43 , _resolver( new Resolver( ResPool::instance()) )
45 MIL << "Initializing keyring..." << std::endl;
46 //_keyring = new KeyRing(homePath() + Pathname("/keyring/all"), homePath() + Pathname("/keyring/trusted"));
47 _keyring = new KeyRing(tmpPath());
50 ///////////////////////////////////////////////////////////////////
52 // METHOD NAME : ZYppImpl::~ZYppImpl
53 // METHOD TYPE : Destructor
58 //------------------------------------------------------------------------
59 // add/remove resolvables
61 DiskUsageCounter::MountPointSet ZYppImpl::diskUsage()
65 setPartitions( DiskUsageCounter::detectMountPoints() );
67 return _disk_usage->disk_usage(pool());
70 void ZYppImpl::setPartitions(const DiskUsageCounter::MountPointSet &mp)
72 _disk_usage.reset(new DiskUsageCounter());
73 _disk_usage->setMountPoints(mp);
76 DiskUsageCounter::MountPointSet ZYppImpl::getPartitions() const
79 return _disk_usage->getMountPoints();
81 return DiskUsageCounter::detectMountPoints();
84 //------------------------------------------------------------------------
87 Target_Ptr ZYppImpl::target() const
90 ZYPP_THROW(Exception("Target not initialized."));
94 void ZYppImpl::initializeTarget(const Pathname & root)
96 MIL << "initTarget( " << root << endl;
98 if (_target->root() == root) {
99 MIL << "Repeated call to initializeTarget()" << endl;
106 _target = new Target( root );
107 _target->buildCache();
110 void ZYppImpl::finishTarget()
118 //------------------------------------------------------------------------
121 /** \todo Remove workflow from target, lot's of it could be done here,
122 * and target used for transact. */
123 ZYppCommitResult ZYppImpl::commit( const ZYppCommitPolicy & policy_r )
125 if ( getenv("ZYPP_TESTSUITE_FAKE_ARCH") )
127 ZYPP_THROW( Exception("ZYPP_TESTSUITE_FAKE_ARCH set. Commit not allowed and disabled.") );
130 MIL << "Attempt to commit (" << policy_r << ")" << endl;
132 ZYPP_THROW( Exception("Target not initialized.") );
134 ZYppCommitResult res = _target->_pimpl->commit( pool(), policy_r );
136 if (! policy_r.dryRun() ) {
138 DBG << "unloading " << sat::Pool::instance().systemRepoName() << " repo from pool" << endl;
142 if ( policy_r.syncPoolAfterCommit() )
144 // reload new status from target
145 DBG << "reloading " << sat::Pool::instance().systemRepoName() << " repo to pool" << endl;
150 MIL << "Commit (" << policy_r << ") returned: "
155 void ZYppImpl::installSrcPackage( const SrcPackage_constPtr & srcPackage_r )
158 ZYPP_THROW( Exception("Target not initialized.") );
159 _target->_pimpl->installSrcPackage( srcPackage_r );
162 //------------------------------------------------------------------------
165 Pathname ZYppImpl::homePath() const
166 { return _home_path.empty() ? Pathname("/var/lib/zypp") : _home_path; }
168 void ZYppImpl::setHomePath( const Pathname & path )
169 { _home_path = path; }
171 Pathname ZYppImpl::tmpPath() const
173 static TmpDir zypp_tmp_dir( TmpPath::defaultLocation(), "zypp." );
174 return zypp_tmp_dir.path();
177 int ZYppImpl::applyLocks()
179 #warning make the /etc/zypp/locks path an option zconfig.
180 Pathname locksrcPath( "/etc/zypp/locks" );
183 Target_Ptr trg( target() );
185 locksrcPath = trg->root() / locksrcPath;
189 // noop: Someone decided to let target() throw if the ptr is NULL ;(
193 PathInfo locksrc( locksrcPath );
194 if ( locksrc.isFile() )
196 MIL << "Reading locks from '" << locksrcPath << "'" << endl;
197 num = zypp::locks::readLocks( pool(), locksrcPath );
198 MIL << num << " items locked." << endl;
202 MIL << "No file '" << locksrcPath << "' to read locks from" << endl;
206 /******************************************************************
208 ** FUNCTION NAME : operator<<
209 ** FUNCTION TYPE : std::ostream &
211 std::ostream & operator<<( std::ostream & str, const ZYppImpl & obj )
213 return str << "ZYppImpl";
216 /////////////////////////////////////////////////////////////////
217 } // namespace zypp_detail
218 ///////////////////////////////////////////////////////////////////
219 /////////////////////////////////////////////////////////////////
221 ///////////////////////////////////////////////////////////////////