From 27c439d7ff8e31e647f4458b90bc534f1aa882bd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Matthias=20Grie=C3=9Fmeier?= Date: Fri, 5 Apr 2013 10:26:49 +0200 Subject: [PATCH] added new fuction zypp::ZYpp::provideSrcPackage --- zypp/ZYpp.cc | 3 +++ zypp/ZYpp.h | 6 ++++++ zypp/target/TargetImpl.cc | 13 +++++++++---- zypp/target/TargetImpl.h | 4 ++++ zypp/zypp_detail/ZYppImpl.cc | 7 +++++++ zypp/zypp_detail/ZYppImpl.h | 4 ++++ 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/zypp/ZYpp.cc b/zypp/ZYpp.cc index 08900fb..6cb0a83 100644 --- a/zypp/ZYpp.cc +++ b/zypp/ZYpp.cc @@ -15,6 +15,7 @@ #include "zypp/ZYpp.h" #include "zypp/zypp_detail/ZYppImpl.h" #include "zypp/sat/Pool.h" +#include "zypp/ManagedFile.h" using std::endl; @@ -100,6 +101,8 @@ namespace zypp void ZYpp::installSrcPackage( const SrcPackage_constPtr & srcPackage_r ) { _pimpl->installSrcPackage( srcPackage_r ); } + ManagedFile ZYpp::provideSrcPackage( const SrcPackage_constPtr & srcPackage_r ) + {return _pimpl->provideSrcPackage( srcPackage_r ); } /////////////////////////////////////////////////////////////////// void ZYpp::setRequestedLocales( const LocaleSet & locales_r ) diff --git a/zypp/ZYpp.h b/zypp/ZYpp.h index a5f6e09..3fed0d0 100644 --- a/zypp/ZYpp.h +++ b/zypp/ZYpp.h @@ -20,6 +20,7 @@ #include "zypp/APIConfig.h" #include "zypp/ZConfig.h" +#include "zypp/ManagedFile.h" #include "zypp/ZYppCommit.h" #include "zypp/ResTraits.h" @@ -118,6 +119,11 @@ namespace zypp */ void installSrcPackage( const SrcPackage_constPtr & srcPackage_r ); + /** Provides a source package on the Target. + * \throws Exception + */ + ManagedFile provideSrcPackage( const SrcPackage_constPtr & srcPackage_r ); + public: /** */ Resolver_Ptr resolver() const; diff --git a/zypp/target/TargetImpl.cc b/zypp/target/TargetImpl.cc index 2d087f1..0581417 100644 --- a/zypp/target/TargetImpl.cc +++ b/zypp/target/TargetImpl.cc @@ -1812,14 +1812,19 @@ namespace zypp void TargetImpl::installSrcPackage( const SrcPackage_constPtr & srcPackage_r ) { // provide on local disk - repo::RepoMediaAccess access_r; - repo::SrcPackageProvider prov( access_r ); - ManagedFile localfile = prov.provideSrcPackage( srcPackage_r ); + ManagedFile localfile = provideSrcPackage(srcPackage_r); // install it rpm().installPackage ( localfile ); } - ///////////////////////////////////////////////////////////////// + ManagedFile TargetImpl::provideSrcPackage( const SrcPackage_constPtr & srcPackage_r ) + { + // provide on local disk + repo::RepoMediaAccess access_r; + repo::SrcPackageProvider prov( access_r ); + return prov.provideSrcPackage( srcPackage_r ); + } + //////////////////////////////////////////////////////////////// } // namespace target /////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// diff --git a/zypp/target/TargetImpl.h b/zypp/target/TargetImpl.h index 371b8a4..3390118 100644 --- a/zypp/target/TargetImpl.h +++ b/zypp/target/TargetImpl.h @@ -29,6 +29,7 @@ #include "zypp/target/RequestedLocalesFile.h" #include "zypp/target/SoftLocksFile.h" #include "zypp/target/HardLocksFile.h" +#include "zypp/ManagedFile.h" /////////////////////////////////////////////////////////////////// namespace zypp @@ -131,6 +132,9 @@ namespace zypp /** Install a source package on the Target. */ void installSrcPackage( const SrcPackage_constPtr & srcPackage_r ); + /** Provides a source package on the Target. */ + ManagedFile provideSrcPackage( const SrcPackage_constPtr & srcPackage_r ); + /** Overload to realize stream output. */ virtual std::ostream & dumpOn( std::ostream & str ) const { diff --git a/zypp/zypp_detail/ZYppImpl.cc b/zypp/zypp_detail/ZYppImpl.cc index 7c6589f..79cd1a5 100644 --- a/zypp/zypp_detail/ZYppImpl.cc +++ b/zypp/zypp_detail/ZYppImpl.cc @@ -162,6 +162,13 @@ namespace zypp _target->_pimpl->installSrcPackage( srcPackage_r ); } + ManagedFile ZYppImpl::provideSrcPackage( const SrcPackage_constPtr & srcPackage_r ) + { + if (! _target) + ZYPP_THROW( Exception("Target not initialized.") ); + return _target->_pimpl->provideSrcPackage( srcPackage_r ); + } + //------------------------------------------------------------------------ // target store path diff --git a/zypp/zypp_detail/ZYppImpl.h b/zypp/zypp_detail/ZYppImpl.h index 2294d8c..fc70cfa 100644 --- a/zypp/zypp_detail/ZYppImpl.h +++ b/zypp/zypp_detail/ZYppImpl.h @@ -21,6 +21,7 @@ #include "zypp/ZYppCommit.h" #include "zypp/ResTraits.h" #include "zypp/DiskUsageCounter.h" +#include "zypp/ManagedFile.h" using namespace zypp::filesystem; @@ -92,6 +93,9 @@ namespace zypp /** Install a source package on the Target. */ void installSrcPackage( const SrcPackage_constPtr & srcPackage_r ); + /** Install a source package on the Target. */ + ManagedFile provideSrcPackage( const SrcPackage_constPtr & srcPackage_r ); + public: /** Get the path where zypp related plugins store persistent data and caches */ Pathname homePath() const; -- 2.7.4