Author: lslezak Date: Thu Dec 4 16:29:45 2008 New Revision: 53881 URL: http://svn.opensuse.org/viewcvs/yast?rev=53881&view=rev Log: - Pkg::Solve() replaced by Pkg::GetSolverFlags() and Pkg::SetSolverFlags() (bnc#450528) Modified: trunk/pkg-bindings/package/yast2-pkg-bindings.changes trunk/pkg-bindings/src/Package.cc trunk/pkg-bindings/src/PkgFunctions.h Modified: trunk/pkg-bindings/package/yast2-pkg-bindings.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/package/yast2-pkg-bi... ============================================================================== --- trunk/pkg-bindings/package/yast2-pkg-bindings.changes (original) +++ trunk/pkg-bindings/package/yast2-pkg-bindings.changes Thu Dec 4 16:29:45 2008 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Thu Dec 4 16:25:15 CET 2008 - lslezak@suse.cz + +- Pkg::Solve() replaced by Pkg::GetSolverFlags() and + Pkg::SetSolverFlags() (bnc#450528) + +------------------------------------------------------------------- Wed Dec 3 10:18:16 CET 2008 - lslezak@suse.cz - added Pkg::Solve() function which allows to set Modified: trunk/pkg-bindings/src/Package.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/Package.cc?rev=5... ============================================================================== --- trunk/pkg-bindings/src/Package.cc (original) +++ trunk/pkg-bindings/src/Package.cc Thu Dec 4 16:29:45 2008 @@ -1897,76 +1897,65 @@ } } - -/** - @builtin PkgSolve - @short Solve current package dependencies - @optarg boolean filter unused, only for backward compatibility - (installed packages will be preferred) - @return boolean - -*/ -YCPBoolean -PkgFunctions::PkgSolve (const YCPBoolean& filter) -{ - return Solve(YCPMap()); -} - /** - @builtin Solve - @short Solve current package dependencies - @param map params solver options, currently accepted $[ + @builtin SetSolverFlags + @short Set solver flags (options) + @param map params solver options, currently accepted options are: "ignoreAlreadyRecommended" : boolean, (do not select recommended packages for already installed packages) "onlyRequires" : boolean, (do not select recommended packages, recommended language packages, modalias packages...) - ] If no option is provided the function behaves like Pkg::PkgSolve() function. - @return boolean true on success, on an failure the dependency problems are saved to /var/log/YaST2/badlist file + @return boolean true on success (currently it always succeeds) */ -YCPBoolean -PkgFunctions::Solve (const YCPMap& params) +YCPValue PkgFunctions::SetSolverFlags(const YCPMap& params) { - bool result = false; - - // the original value - bool ignoreAlreadyRecommended = false; - // changed flag - bool ignoreAlreadyRecommended_set = false; YCPString ignore_key("ignoreAlreadyRecommended"); - if (!params.isNull() && !params->value(ignore_key).isNull() && params->value(ignore_key)->isBoolean()) { - ignoreAlreadyRecommended = zypp_ptr()->resolver()->ignoreAlreadyRecommended(); - bool ignoreAlreadyRecommended_new = params->value(ignore_key)->asBoolean()->value(); - - if (ignoreAlreadyRecommended != ignoreAlreadyRecommended_new) - { - y2milestone("Setting solver flag ignoreAlreadyRecommended: %d", ignoreAlreadyRecommended_new); - // set the new value - zypp_ptr()->resolver()->setIgnoreAlreadyRecommended(ignoreAlreadyRecommended_new); - ignoreAlreadyRecommended_set = true; - } + bool ignoreAlreadyRecommended = zypp_ptr()->resolver()->ignoreAlreadyRecommended(); + y2milestone("Setting solver flag ignoreAlreadyRecommended: %d", ignoreAlreadyRecommended); + zypp_ptr()->resolver()->setIgnoreAlreadyRecommended(ignoreAlreadyRecommended); } - // the original value - bool onlyRequires = false; - // changed flag - bool onlyRequires_set = false; YCPString requires_key("onlyRequires"); - if (!params.isNull() && !params->value(requires_key).isNull() && params->value(requires_key)->isBoolean()) { - onlyRequires = zypp_ptr()->resolver()->onlyRequires(); - bool onlyRequires_new = params->value(requires_key)->asBoolean()->value(); - - if (onlyRequires != onlyRequires_new) - { - y2milestone("Setting solver flag onlyRequires: %d", onlyRequires_new); - // set the new value - zypp_ptr()->resolver()->setOnlyRequires(onlyRequires_new); - onlyRequires_set = true; - } + bool onlyRequires = params->value(requires_key)->asBoolean()->value(); + y2milestone("Setting solver flag onlyRequires: %d", onlyRequires); + zypp_ptr()->resolver()->setOnlyRequires(onlyRequires); } + return YCPBoolean(true); +} + +/** + @builtin GetSolverFlags + @short Get the current solver flags (options) + @return map<string,any> current options see @see SetSolverFlags +*/ +YCPValue PkgFunctions::GetSolverFlags() +{ + YCPMap ret; + + ret->add(YCPString("onlyRequires"), YCPBoolean(zypp_ptr()->resolver()->onlyRequires())); + ret->add(YCPString("ignoreAlreadyRecommended"), YCPBoolean(zypp_ptr()->resolver()->ignoreAlreadyRecommended())); + + return ret; +} + + +/** + @builtin PkgSolve + @short Solve current package dependencies + @optarg boolean filter unused, only for backward compatibility + (installed packages will be preferred) + @return boolean + +*/ +YCPBoolean +PkgFunctions::PkgSolve (const YCPBoolean& filter) +{ + bool result = false; + try { result = zypp_ptr()->resolver()->resolvePool(); @@ -1985,20 +1974,6 @@ SaveProblemList(problems, "/var/log/YaST2/badlist"); } - // set the original flags back if they were changed - if (onlyRequires_set) - { - y2milestone("Restoring solver flag onlyRequires: %d", onlyRequires); - zypp_ptr()->resolver()->setOnlyRequires(onlyRequires); - } - - if (ignoreAlreadyRecommended_set) - { - y2milestone("Restoring solver flag ignoreAlreadyRecommended: %d", ignoreAlreadyRecommended); - zypp_ptr()->resolver()->setIgnoreAlreadyRecommended(ignoreAlreadyRecommended); - } - - return YCPBoolean(result); } Modified: trunk/pkg-bindings/src/PkgFunctions.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/pkg-bindings/src/PkgFunctions.h?r... ============================================================================== --- trunk/pkg-bindings/src/PkgFunctions.h (original) +++ trunk/pkg-bindings/src/PkgFunctions.h Thu Dec 4 16:29:45 2008 @@ -683,10 +683,12 @@ YCPValue PkgReset (); /* TYPEINFO: boolean()*/ YCPValue PkgApplReset (); + /* TYPEINFO: map<string,any>()*/ + YCPValue GetSolverFlags(); + /* TYPEINFO: boolean(map<string,any>)*/ + YCPValue SetSolverFlags(const YCPMap& params); /* TYPEINFO: boolean(boolean)*/ YCPBoolean PkgSolve (const YCPBoolean& filter); - /* TYPEINFO: boolean(map<string,any>)*/ - YCPBoolean Solve(const YCPMap& params); /* TYPEINFO: boolean(string)*/ YCPValue CreateSolverTestCase(const YCPString &dir); /* TYPEINFO: boolean()*/ -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org