Author: lslezak Date: Tue Apr 5 13:33:32 2011 New Revision: 63716 URL: http://svn.opensuse.org/viewcvs/yast?rev=63716&view=rev Log: - do not refresh empty repositories, remember loaded status (bnc#665488) Modified: trunk/pkg-bindings/package/yast2-pkg-bindings.changes trunk/pkg-bindings/src/PkgFunctions.h trunk/pkg-bindings/src/Source_Create.cc trunk/pkg-bindings/src/Source_Load.cc trunk/pkg-bindings/src/Source_Resolvables.cc trunk/pkg-bindings/src/Source_Save.cc trunk/pkg-bindings/src/Source_Set.cc trunk/pkg-bindings/src/YRepo.cc trunk/pkg-bindings/src/YRepo.h Modified: trunk/pkg-bindings/package/yast2-pkg-bindings.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/package/yast2-pkg-bindings.changes?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/package/yast2-pkg-bindings.changes (original) +++ trunk/pkg-bindings/package/yast2-pkg-bindings.changes Tue Apr 5 13:33:32 2011 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Tue Apr 5 11:12:10 UTC 2011 - lslezak@localhost + +- do not refresh empty repositories, remember loaded status + (bnc#665488) + +------------------------------------------------------------------- Tue Nov 2 14:30:38 UTC 2010 - lslezak@suse.cz - updated StartPackage callback - added the package name to the Modified: trunk/pkg-bindings/src/PkgFunctions.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/PkgFunctions.h?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/PkgFunctions.h (original) +++ trunk/pkg-bindings/src/PkgFunctions.h Tue Apr 5 13:33:32 2011 @@ -134,9 +134,8 @@ // helper - copy a file or directory bool CopyToDir(const std::string &source, const std::string &target, bool backup = false, bool recursive = true); - void RemoveResolvablesFrom(const std::string &alias); - bool AnyResolvableFrom(const std::string &alias); - bool LoadResolvablesFrom(const zypp::RepoInfo &repoinfo, const zypp::ProgressData::ReceiverFnc & progressrcv = zypp::ProgressData::ReceiverFnc(), bool network_check = false); + void RemoveResolvablesFrom(YRepo_Ptr repo); + bool LoadResolvablesFrom(YRepo_Ptr repo, const zypp::ProgressData::ReceiverFnc & progressrcv = zypp::ProgressData::ReceiverFnc(), bool network_check = false); std::string UniqueAlias(const std::string &alias); YCPValue GetPkgLocation(const YCPString& p, bool full_path); Modified: trunk/pkg-bindings/src/Source_Create.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/Source_Create.cc?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/Source_Create.cc (original) +++ trunk/pkg-bindings/src/Source_Create.cc Tue Apr 5 13:33:32 2011 @@ -684,7 +684,7 @@ YRepo_Ptr repo = logFindRepository(*it); // no detailed progress needed, refresh has been done in createManagedSource() - LoadResolvablesFrom(repo->repoInfo(), subprogrcv2); + LoadResolvablesFrom(repo, subprogrcv2); // search for a base product if it hasn't been set if (base && !base_product) @@ -720,7 +720,7 @@ YRepo_Ptr repo = logFindRepository(new_id); // load the resolvables - LoadResolvablesFrom(repo->repoInfo(), subprogrcv_load); + LoadResolvablesFrom(repo, subprogrcv_load); if (base && !base_product) { Modified: trunk/pkg-bindings/src/Source_Load.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/Source_Load.cc?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/Source_Load.cc (original) +++ trunk/pkg-bindings/src/Source_Load.cc Tue Apr 5 13:33:32 2011 @@ -267,7 +267,7 @@ prog.sendTo(refresh_subprogress); y2debug("Progress status: %lld", prog_total.val()); - if (AnyResolvableFrom((*it)->repoInfo().alias())) + if ((*it)->isLoaded()) { y2milestone("Resolvables from '%s' are already present, not loading", (*it)->repoInfo().alias().c_str()); } @@ -362,7 +362,7 @@ prog.sendTo(rebuild_subprogress); y2debug("Progress status: %lld", prog_total.val()); - if (AnyResolvableFrom((*it)->repoInfo().alias())) + if ((*it)->isLoaded()) { y2milestone("Resolvables from '%s' are already present, not rebuilding the cache", (*it)->repoInfo().alias().c_str()); } @@ -447,14 +447,14 @@ // subtask zypp::CombinedProgressData load_subprogress(prog_total, 100); - if (AnyResolvableFrom((*it)->repoInfo().alias())) + if ((*it)->isLoaded()) { y2milestone("Resolvables from '%s' are already present, not loading", (*it)->repoInfo().alias().c_str()); } else { // load objects, do network status check - success = LoadResolvablesFrom((*it)->repoInfo(), load_subprogress, true) && success; + success = LoadResolvablesFrom(*it, load_subprogress, true) && success; } } y2debug("Progress status: %lld", prog_total.val()); Modified: trunk/pkg-bindings/src/Source_Resolvables.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/Source_Resolvables.cc?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/Source_Resolvables.cc (original) +++ trunk/pkg-bindings/src/Source_Resolvables.cc Tue Apr 5 13:33:32 2011 @@ -40,32 +40,28 @@ /* * A helper function - remove all resolvables from the repository from the pool */ -void PkgFunctions::RemoveResolvablesFrom(const std::string &alias) +void PkgFunctions::RemoveResolvablesFrom(YRepo_Ptr repo) { + const std::string &alias = repo->repoInfo().alias(); y2milestone("Removing resolvables from '%s'", alias.c_str()); // remove the resolvables if they have been loaded zypp::sat::Pool::instance().reposErase(alias); + + repo->resetLoaded(); } /* - * A helper function - is there any resolvable from the repository in the pool? + * A helper function - load resolvable from the repository into the pool */ -bool PkgFunctions::AnyResolvableFrom(const std::string &alias) +bool PkgFunctions::LoadResolvablesFrom(YRepo_Ptr repo, const zypp::ProgressData::ReceiverFnc &progressrcv, bool network_check) { - zypp::Repository r = zypp::sat::Pool::instance().reposFind(alias); - if ( r != zypp::Repository::noRepository ) + if (repo->isLoaded()) { - return ( r.solvablesSize() > 0 ); + y2milestone("Repository is already loaded"); + return true; } - return false; -} -/* - * A helper function - load resolvable from the repository into the pool - * Warning: Use AnyResolvableFrom() method for checing if the resolvables might be already loaded - */ -bool PkgFunctions::LoadResolvablesFrom(const zypp::RepoInfo &repoinfo, const zypp::ProgressData::ReceiverFnc &progressrcv, bool network_check) -{ + const zypp::RepoInfo &repoinfo = repo->repoInfo(); bool success = true; unsigned int size_start = zypp_ptr()->pool().size(); y2milestone("Loading resolvables from '%s', pool size at start: %d", repoinfo.alias().c_str(), size_start); @@ -119,6 +115,7 @@ } repomanager.loadFromCache(repoinfo); + repo->setLoaded(); //y2milestone("Loaded %zd resolvables", store.size()); } catch(const zypp::repo::RepoNotCachedException &excpt ) Modified: trunk/pkg-bindings/src/Source_Save.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/Source_Save.cc?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/Source_Save.cc (original) +++ trunk/pkg-bindings/src/Source_Save.cc Tue Apr 5 13:33:32 2011 @@ -258,7 +258,7 @@ for (RepoCont::iterator it = repos.begin(); it != repos.end(); ++it) { - RemoveResolvablesFrom((*it)->repoInfo().alias()); + RemoveResolvablesFrom(*it); } // release all repositories Modified: trunk/pkg-bindings/src/Source_Set.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/Source_Set.cc?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/Source_Set.cc (original) +++ trunk/pkg-bindings/src/Source_Set.cc Tue Apr 5 13:33:32 2011 @@ -69,8 +69,8 @@ // add/remove resolvables if (enable) { - // load resolvables only when they are missing - if (!AnyResolvableFrom(repo->repoInfo().alias())) + // load resolvables only when they haven't been loaded yet + if (!repo->isLoaded()) { std::liststd::string stages; stages.push_back(_("Load Data")); @@ -82,13 +82,13 @@ pkgprogress.Start(_("Loading the Package Manager..."), stages, _(HelpTexts::load_resolvables)); - success = LoadResolvablesFrom(repo->repoInfo(), load_subprogress); + success = LoadResolvablesFrom(repo, load_subprogress); } } else { // the source has been disabled, remove resolvables from the pool - RemoveResolvablesFrom(repo->repoInfo().alias()); + RemoveResolvablesFrom(repo); } PkgFreshen(); @@ -399,7 +399,7 @@ { // the resolvables cannot be used anymore, remove them - RemoveResolvablesFrom(repo_alias); + RemoveResolvablesFrom(repo); // update 'repos' repo->setDeleted(); Modified: trunk/pkg-bindings/src/YRepo.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/YRepo.cc?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/YRepo.cc (original) +++ trunk/pkg-bindings/src/YRepo.cc Tue Apr 5 13:33:32 2011 @@ -32,7 +32,7 @@ IMPL_PTR_TYPE(YRepo); YRepo::YRepo(zypp::RepoInfo & repo) - : _repo(repo), _deleted(false) + : _repo(repo), _deleted(false), _loaded(false) {} YRepo::~YRepo() Modified: trunk/pkg-bindings/src/YRepo.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/YRepo.h?rev=63716&r1=63715&r2=63716&view=diff ============================================================================== --- trunk/pkg-bindings/src/YRepo.h (original) +++ trunk/pkg-bindings/src/YRepo.h Tue Apr 5 13:33:32 2011 @@ -39,6 +39,7 @@ zypp::RepoInfo _repo; zypp::MediaSetAccess_Ptr _maccess; bool _deleted; + bool _loaded; YRepo() {} @@ -53,6 +54,10 @@ bool isDeleted() {return _deleted;} void setDeleted() {_deleted = true;} + bool isLoaded() {return _loaded;} + void setLoaded() {_loaded = true;} + void resetLoaded() {_loaded = false;} + public: static const YRepo NOREPO; }; -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org