Author: schubi2
Date: Tue Feb 12 15:29:46 2008
New Revision: 8630
URL: http://svn.opensuse.org/viewcvs/zypp?rev=8630&view=rev
Log:
- Using helix parser of the SAT library
- cleanup deptestomatic
Added:
branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/XmlNode.cc
- copied unchanged from r8614, branches/tmp/ma/jump_sat/libzypp-testsuite/src/helix/XmlNode.cc
branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/XmlNode.h
- copied unchanged from r8614, branches/tmp/ma/jump_sat/libzypp-testsuite/src/helix/XmlNode.h
Removed:
branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/helixparse.cc
branches/tmp/ma/jump_sat/libzypp-testsuite/src/helix/
Modified:
branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/Makefile.am
branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/deptestomatic.cc
branches/tmp/ma/jump_sat/libzypp-testsuite/src/Makefile.am
Modified: branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/Makefile.am
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/Makefile.am?rev=8630&r1=8629&r2=8630&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/Makefile.am (original)
+++ branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/Makefile.am Tue Feb 12 15:29:46 2008
@@ -3,24 +3,19 @@
#
INCLUDES = -I/usr/include/libxml2 \
- -Ihelix \
- -I/usr/lib/qt3/include \
-DZYPP_BASE_LOGGER_LOGGROUP=\"testsuite\"
-LDADD = $(libdir)/libzypp.so $(top_srcdir)/src/helix/lib@PACKAGE@_helix.la -L$(QTLIBDIR) -lqt-mt -lqdialogsolver
+LDADD = $(libdir)/libzypp.so $(libdir)/libsatsolver.a $(libdir)/libexpat.so
# We're not ready for this yet.
#check_PROGRAMS = deptestomatic.multi
-noinst_PROGRAMS = deptestomatic.multi \
- helixparse
+noinst_PROGRAMS = deptestomatic.multi
testsuitesolversrcbindir = ${testsuitebindir}
-testsuitesolversrcbin_DATA = deptestomatic.multi \
- helixparse
-
+testsuitesolversrcbin_DATA = deptestomatic.multi
deptestomatic_multi_SOURCES = \
- deptestomatic.cc KeyRingCallbacks.h
-
-helixparse_SOURCES = \
- helixparse.cc
+ deptestomatic.cc \
+ KeyRingCallbacks.h \
+ XmlNode.cc \
+ XmlNode.h
Modified: branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/deptestomatic.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/deptestomatic.cc?rev=8630&r1=8629&r2=8630&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/deptestomatic.cc (original)
+++ branches/tmp/ma/jump_sat/libzypp-testsuite/solver/src/deptestomatic.cc Tue Feb 12 15:29:46 2008
@@ -28,12 +28,14 @@
#include <iostream>
#include <map>
#include <set>
+#if 0
#include
#include
#include
#include
#include
-
+#endif
+#include
#include <cstdlib>
#include <cstring>
#include
@@ -41,60 +43,51 @@
#include
#include
#include
-#include "src/helix/XmlNode.h"
-#include "zypp/Resolvable.h"
+#include "zypp/ZYpp.h"
+#include "zypp/ZYppFactory.h"
+#include "zypp/ResObjects.h"
#include "zypp/ResTraits.h"
#include "zypp/ResPool.h"
#include "zypp/PoolItem.h"
#include "zypp/Capability.h"
-#include "zypp/CapSet.h"
-#include "zypp/CapFactory.h"
+#include "zypp/Capabilities.h"
#include "zypp/ResolverProblem.h"
#include "zypp/ProblemSolution.h"
-
-
#include "zypp/Repository.h"
#include "zypp/RepoManager.h"
+#include "zypp/ResPool.h"
+#include "zypp/ResFilters.h"
+#include "zypp/CapFilters.h"
+#include "zypp/ResolverProblem.h"
#include "zypp/base/String.h"
#include "zypp/base/Logger.h"
#include "zypp/base/LogControl.h"
#include "zypp/base/Exception.h"
-
#include "zypp/base/Algorithm.h"
-#include "zypp/ResPool.h"
-#include "zypp/ResFilters.h"
-#include "zypp/CapFilters.h"
#include "zypp/media/MediaManager.h"
-#include "src/helix/HelixSourceImpl.h"
+#include "zypp/pool/GetResolvablesToInsDel.h"
-#include "zypp/ZYpp.h"
-#include "zypp/ZYppFactory.h"
+#include "zypp/sat/Repo.h"
-#include "zypp/pool/GetResolvablesToInsDel.h"
#include "zypp/solver/detail/Resolver.h"
-#include "zypp/solver/detail/ResolverContext.h"
-#include "zypp/solver/detail/ResolverQueue.h"
-#include "zypp/solver/detail/ResolverInfo.h"
-#include "zypp/ResolverProblem.h"
#include "zypp/solver/detail/InstallOrder.h"
#include "zypp/solver/detail/Testcase.h"
+
#include "KeyRingCallbacks.h"
-#include "zypp/QZyppSolverDialog.h"
+#include "XmlNode.h"
+#include "satsolver/repo_helix.h"
using namespace std;
using namespace zypp;
-using zypp::solver::detail::XmlNode;
-using zypp::solver::detail::XmlNode_Ptr;
-using zypp::solver::detail::ResolverContext_Ptr;
-using zypp::solver::detail::ResolverQueueList;
-using zypp::solver::detail::ResolverQueue_Ptr;
using zypp::solver::detail::InstallOrder;
using zypp::solver::detail::Testcase;
using zypp::ResolverProblemList;
+using zypp::solver::detail::XmlNode;
+using zypp::solver::detail::XmlNode_Ptr;
//-----------------------------------------------------------------------------
@@ -105,12 +98,11 @@
static ZYpp::Ptr God;
static RepoManager manager;
static bool forceResolve;
-static int maxSolverPasses = 0;
static int sys_res_install = 0;
typedef list<unsigned int> ChecksumList;
-typedef set PoolItemSet;
+typedef set<PoolItem> PoolItemSet;
enum DepKind { PROVIDE, CONFLICT, REQUIRE };
@@ -184,9 +176,6 @@
else if (str == "pattern") {
kind = ResTraitszypp::Pattern::kind;
}
- else if (str == "selection") {
- kind = ResTraitszypp::Selection::kind;
- }
else if (str == "script") {
kind = ResTraitszypp::Script::kind;
}
@@ -196,9 +185,6 @@
else if (str == "product") {
kind = ResTraitszypp::Product::kind;
}
- else if (str == "language") {
- kind = ResTraitszypp::Language::kind;
- }
else {
cerr << "get_poolItem unknown kind '" << str << "'" << endl;
}
@@ -218,12 +204,8 @@
typedef list<string> StringList;
static void
-assemble_install_cb (PoolItem_Ref poolItem, const ResStatus & status, void *data)
+assemble_install_cb (PoolItem poolItem, const ResStatus & status, void *data)
{
- if (isKind<SystemResObject>( poolItem.resolvable() )) {
- sys_res_install = 1;
- return;
- }
StringList *slist = (StringList *)data;
ostringstream s;
s << str::form ("%-7s ", poolItem.status().staysInstalled() ? "|flag" : "install");
@@ -234,7 +216,7 @@
static void
-assemble_uninstall_cb (PoolItem_Ref poolItem, const ResStatus & status, void *data)
+assemble_uninstall_cb (PoolItem poolItem, const ResStatus & status, void *data)
{
StringList *slist = (StringList *)data;
ostringstream s;
@@ -247,7 +229,7 @@
static void
-assemble_impossible_cb (PoolItem_Ref poolItem, const ResStatus & status, void *data)
+assemble_impossible_cb (PoolItem poolItem, const ResStatus & status, void *data)
{
StringList *slist = (StringList *)data;
ostringstream s;
@@ -260,7 +242,7 @@
static void
-assemble_upgrade_cb (PoolItem_Ref res1, const ResStatus & status, PoolItem_Ref res2, const ResStatus & status2, void *data)
+assemble_upgrade_cb (PoolItem res1, const ResStatus & status, PoolItem res2, const ResStatus & status2, void *data)
{
StringList *slist = (StringList *)data;
ostringstream s;
@@ -276,7 +258,7 @@
static void
-assemble_incomplete_cb (PoolItem_Ref poolItem, const ResStatus & status,void *data)
+assemble_incomplete_cb (PoolItem poolItem, const ResStatus & status,void *data)
{
StringList *slist = (StringList *)data;
ostringstream s;
@@ -288,7 +270,7 @@
static void
-assemble_satisfy_cb (PoolItem_Ref poolItem, const ResStatus & status, void *data)
+assemble_satisfy_cb (PoolItem poolItem, const ResStatus & status, void *data)
{
StringList *slist = (StringList *)data;
ostringstream s;
@@ -320,7 +302,7 @@
}
-/** Order on PoolItem_Ref.
+/** Order on PoolItem.
* \li kind
* \li name
* \li edition
@@ -328,14 +310,14 @@
* \li source::alias
* \li ResObject::constPtr as fallback.
*/
-struct KNEAOrder : public std::binary_function
+struct KNEAOrder : public std::binary_function
{
// NOTE: operator() provides LESS semantics to order the set.
// So LESS means 'prior in set'. We want 'better' archs and
// 'better' editions at the beginning of the set. So we return
// TRUE if (lhs > rhs)!
//
- bool operator()( const PoolItem_Ref lhs, const PoolItem_Ref rhs ) const
+ bool operator()( const PoolItem lhs, const PoolItem rhs ) const
{
int res = lhs->kind().compare( rhs->kind() );
if ( res )
@@ -359,11 +341,12 @@
}
};
-typedef std::set PoolItemOrderSet;
+typedef std::set PoolItemOrderSet;
static void
-print_solution (ResolverContext_Ptr context, int *count, ChecksumList & checksum_list, bool instorder, bool mediaorder)
+print_solution ( int *count, ChecksumList & checksum_list, bool instorder, bool mediaorder)
{
+#if 0 // FIXME
if (context->isValid ()) {
StringList items;
@@ -497,14 +480,14 @@
// cout << "Context Context:" << endl;
// cout << *context << endl;
-
+#endif
return;
}
//---------------------------------------------------------------------------------------------------------------------
struct FindPackage : public resfilter::ResObjectFilterFunctor
{
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
Resolvable::Kind kind;
bool edition_set;
Edition edition;
@@ -520,7 +503,7 @@
{
}
- bool operator()( PoolItem_Ref p)
+ bool operator()( PoolItem p)
{
if (arch_set && arch != p->arch()) { // if arch requested, force this arch
return true;
@@ -549,10 +532,10 @@
static bool set_licence = false;
-static PoolItem_Ref
+static PoolItem
get_poolItem (const string & source_alias, const string & package_name, const string & kind_name = "", const string & ver = "", const string & rel = "", const string & arch = "")
{
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
Resolvable::Kind kind = string2kind (kind_name);
try {
@@ -596,17 +579,17 @@
struct RequiringPoolItem
{
PoolItemSet itemset;
- PoolItem_Ref provider;
+ PoolItem provider;
Capability cap;
bool first;
- RequiringPoolItem (PoolItem_Ref p)
+ RequiringPoolItem (PoolItem p)
: provider (p)
{ }
bool operator()( const CapAndItem & cai )
{
- PoolItem_Ref requirer( cai.item );
+ PoolItem requirer( cai.item );
Capability cap( cai.cap );
if (itemset.insert (requirer).second) {
if (first) {
@@ -621,7 +604,7 @@
static PoolItemSet
-whatdependson (PoolItem_Ref poolItem)
+whatdependson (PoolItem poolItem)
{
cout << endl << endl << "What depends on '" << poolItem.resolvable() << "'" << endl;
@@ -629,8 +612,8 @@
// loop over all provides and call foreachRequiringResItem
- CapSet caps = poolItem->dep (Dep::PROVIDES);
- for (CapSet::const_iterator cap_iter = caps.begin(); cap_iter != caps.end(); ++cap_iter) {
+ Capabilities caps = poolItem->dep (Dep::PROVIDES);
+ for (Capabilities::const_iterator cap_iter = caps.begin(); cap_iter != caps.end(); ++cap_iter) {
info.cap = *cap_iter;
info.first = true;
@@ -671,8 +654,7 @@
PoolItemSet rs;
Resolvable::Kind kind = string2kind (kind_name);
- CapFactory factory;
- Capability cap = factory.parse (kind, prov_name);
+ Capability cap(prov_name, kind);
Dep dep( Dep::PROVIDES );
ProvidingPoolItem info;
@@ -692,7 +674,7 @@
//---------------------------------------------------------------------------------------------------------------------
// setup related functions
-typedef multimap ItemMap;
+typedef multimap ItemMap;
struct SortItem : public resfilter::PoolItemFilterFunctor
{
@@ -703,7 +685,7 @@
: _show_all( show_all )
{ }
- bool operator()( PoolItem_Ref poolItem )
+ bool operator()( PoolItem poolItem )
{
ostringstream ostr;
if (_show_all
@@ -738,6 +720,7 @@
cout << it->second;
}
cout << endl;
+#if 0 // not supported currently
if (verbose) {
zypp::solver::detail::ItemCapKindList selectedBy = resolver->isInstalledBy(it->second);
zypp::solver::detail::ItemCapKindList select = resolver->installs(it->second);
@@ -758,6 +741,7 @@
cout << " " << iter->item << " " << iter->cap << " " << iter->capKind << " " << iter->initialInstallation << endl;
}
}
+#endif
}
cout << "Pool End." << endl;
return;
@@ -806,7 +790,7 @@
manager.refreshMetadata( nrepo );
manager.buildCache( nrepo );
- repo = manager.createFromCache( nrepo );
+ manager.loadFromCache( nrepo );
}
catch ( Exception & excpt_r ) {
ZYPP_CAUGHT (excpt_r);
@@ -818,6 +802,7 @@
try {
cout << "Load from File '" << pathname << "'" << endl;
MIL << "Load from File '" << pathname << "'" << endl;
+ zypp::sat::Repo satRepo = zypp::sat::Pool::instance().reposInsert(alias);
RepoInfo nrepo;
nrepo
@@ -826,11 +811,17 @@
.setEnabled ( true )
.setAutorefresh( false )
.addBaseUrl ( pathname.asUrl() );
-
- zypp::repo::RepositoryImpl_Ptr impl( new HelixSourceImpl( pathname, nrepo ) );
-
- repo = Repository( impl );
- repo.resolvables();
+ satRepo.setInfo (nrepo);
+ _Repo *intSatRepo = satRepo.get();
+ FILE *fpHelix = fopen( filename.c_str(), "r" );
+ if (!fpHelix)
+ {
+ cout << "Couldn't load packages from XML file '" << filename << "'" << endl;
+ return -1;
+ }
+ repo_add_helix(intSatRepo, fpHelix);
+ cout << "Loaded " << satRepo.solvablesSize() << " resolvables from " << (filename.empty()?pathname.asString():filename) << "." << endl;
+ fclose( fpHelix );
}
catch ( Exception & excpt_r ) {
ZYPP_CAUGHT (excpt_r);
@@ -839,19 +830,6 @@
}
}
- try {
- count = repo.resolvables().size();
- cout << "Added repository '" << alias << "' with " << count << " resolvables" << endl;
- God->addResolvables( repo.resolvables(), (alias == "@system") );
-
- cout << "Loaded " << count << " resolvables from " << (filename.empty()?pathname.asString():filename) << "." << endl;
- }
- catch ( Exception & excpt_r ) {
- ZYPP_CAUGHT (excpt_r);
- cout << "Loaded NO package(s) from " << repo << endl;
- count = -1;
- }
-
if(set_licence)
set_licence_Pool();
@@ -907,9 +885,6 @@
if (node->equals ("forceResolve")) {
forceResolve = true;
- } else if (node->equals ("maxSolverPasses")) {
- maxSolverPasses = atoi ((node->getProp ("value")).c_str());
-
} else if (node->equals ("system")) {
string file = node->getProp ("file");
@@ -942,74 +917,22 @@
exit( 1 );
}
- } else if (node->equals ("undump")) {
-
- string file = node->getProp ("file");
- undump (file);
-
} else if (node->equals ("force-install")) {
string source_alias = node->getProp ("channel");
string package_name = node->getProp ("package");
string kind_name = node->getProp ("kind");
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
poolItem = get_poolItem (source_alias, package_name, kind_name);
if (poolItem) {
RESULT << "Force-installing " << package_name << " from channel " << source_alias << endl;;
poolItem.status().setStatus(ResStatus::installed);
-
-#if 0
- Source_Ref system_source = manager->findSource("@system");
-
- if (!system_source)
- cerr << "No system source available!" << endl;
- PoolItem_Ref r = boost::const_pointer_cast<PoolItem>(poolItem);
- r->setChannel (system_source);
-#endif
- } else {
- cerr << "Unknown package " << source_alias << "::" << package_name << endl;
- }
-
- } else if (node->equals ("force-uninstall")) {
-
- string package_name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
-
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem ("@system", package_name, kind_name);
-
- if (! poolItem) {
- cerr << "Can't force-uninstall installed package '" << package_name << "'" << endl;
- } else {
- RESULT << "Force-uninstalling " << package_name << endl;
- poolItem.status().setStatus(ResStatus::uninstalled);
-#if 0
- God->pool().remove (poolItem);
-#endif
- }
-
- } else if (node->equals ("lock")) {
-
- string source_alias = node->getProp ("channel");
- string package_name = node->getProp ("name");
- if (package_name.empty())
- package_name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
-
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem (source_alias, package_name, kind_name);
- if (poolItem) {
- RESULT << "Locking " << package_name << " from channel " << source_alias << endl;
- poolItem.status().setLock (true, ResStatus::USER);
} else {
cerr << "Unknown package " << source_alias << "::" << package_name << endl;
}
-
} else if (node->equals ("mediaid")) {
show_mediaid = true;
} else if (node->equals ("arch")) {
@@ -1047,6 +970,7 @@
static void
report_solutions ( solver::detail::Resolver_Ptr resolver, bool instorder, bool mediaorder)
{
+#if 0
int count = 1;
ChecksumList checksum_list;
@@ -1100,6 +1024,7 @@
cout << "(Not displaying more than 20 invalid solutions)" << endl;
}
fflush (stdout);
+#endif
}
//-----------------------------------------------------------------------------
@@ -1109,7 +1034,7 @@
{
PoolItemSet itemset;
- bool operator()( PoolItem_Ref poolItem )
+ bool operator()( PoolItem poolItem )
{
itemset.insert (poolItem);
return true;
@@ -1132,122 +1057,7 @@
}
-// keep upgrades in a map to achieve lexically sorted debug output
-
-typedef pair UpgradePair;
-typedef map UpgradeMap;
-
-struct DoUpgrades : public resfilter::PoolItemFilterFunctor
-{
- PoolItem_Ref installed;
- UpgradeMap upgrades;
-// PoolItemSet upgrades;
- solver::detail::Resolver_Ptr resolver;
- int count;
-
- DoUpgrades (solver::detail::Resolver_Ptr r)
- : resolver (r)
- , count (0)
- { }
-
- bool operator()( PoolItem_Ref poolItem )
- {
- if (installed->edition().compare (poolItem->edition()) < 0) {
-
- UpgradeMap::const_iterator pos = upgrades.find(poolItem->name());
- if (pos == upgrades.end()) {
- upgrades[poolItem->name()] = make_pair (installed, poolItem);
- ++count;
- return false;
- }
- }
-#if 0 // disabled in favor of lexical ordering
- if (upgrades.insert (poolItem).second) { // only consider first match
- resolver->addPoolItemToInstall (poolItem);
- RESULT << "Upgrading ";
- printRes (cout, installed);
- cout << " => ";
- printRes (cout, poolItem);
- cout << endl;
- ++count;
- }
-#endif
- return true;
- }
-};
-
-
-int
-foreach_system_upgrade (solver::detail::Resolver_Ptr resolver)
-{
- PoolItemSet installed = uniquelyInstalled();
- DoUpgrades info (resolver);
-
- // world->foreachSystemUpgrade (true, trial_upgrade_cb, (void *)&resolver);
-
- for (PoolItemSet::iterator iter = installed.begin(); iter != installed.end(); ++iter) {
- PoolItem_Ref p = *iter;
- if (!p.status().transacts()) continue;
- info.installed = p;
- invokeOnEach( God->pool().byNameBegin( p->name() ), God->pool().byNameEnd( p->name() ),
- functor::chain( resfilter::ByUninstalled(), resfilter::ByKind( p->kind() ) ),
-#if 0
- functor::chain( resfilter::ByUninstalled(),
- functor::chain( resfilter::ByKind( p->kind() ),
- resfilter::byEdition( p->edition() ) ) ),
-#endif
- functor::functorRef(info) );
-
- }
-
- // now output in alphabetical order
-
- for (UpgradeMap::const_iterator iter = info.upgrades.begin(); iter != info.upgrades.end(); ++iter) {
- UpgradePair i_and_u = iter->second;
- resolver->addPoolItemToInstall (i_and_u.second);
- RESULT << "Upgrading ";
- printRes (cout, i_and_u.first);
- cout << " => ";
- printRes (cout, i_and_u.second);
- cout << endl;
- }
-
- return info.count;
-}
-
-//-----------------------------------------------------------------------------
-// ResolverContext output
-
-static void
-print_marked_cb (PoolItem_Ref poolItem, const ResStatus & status, void *data)
-{
- if (data == NULL) {
- RESULT; printRes (cout, poolItem.resolvable()); cout << " " << status << endl;
- } else {
- StringList *slist = (StringList *)data;
- ostringstream s;
- printRes (s, poolItem.resolvable());
- s << " " << status;
- slist->push_back (s.str());
- }
-
- return;
-}
-
-
-static void
-freshen_marked_cb (PoolItem_Ref poolItem, const ResStatus & status, void *data)
-{
- solver::detail::Resolver_Ptr resolver = *((solver::detail::Resolver_Ptr *)data);
- if (status.isNeeded()) {
- poolItem.status().setToBeInstalled(ResStatus::USER);
-// resolver->addPoolItemToInstall (poolItem);
- }
-
- return;
-}
-
-
+//-------------
static void
parse_xml_trial (XmlNode_Ptr node, const ResPool & pool)
{
@@ -1283,10 +1093,8 @@
print_sep ();
solver::detail::Resolver_Ptr resolver = new solver::detail::Resolver( pool );
- resolver->setArchitecture( God->architecture() );
resolver->setTesting ( true ); // continue despite missing target
resolver->setForceResolve( forceResolve );
- resolver->setMaxSolverPasses( maxSolverPasses );
if (!locales.empty()) {
God->setRequestedLocales( locales );
@@ -1326,7 +1134,7 @@
string release = node->getProp ("rel");
string architecture = node->getProp ("arch");
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
poolItem = get_poolItem( source_alias, name, kind_name, version, release, architecture );
if (poolItem) {
@@ -1340,7 +1148,6 @@
poolItem.status().setToBeInstalled(ResStatus::USER);
if (!soft.empty())
poolItem.status().setSoftInstall(true);
-// resolver->addPoolItemToInstall (poolItem);
} else {
cerr << "Unknown item " << source_alias << "::" << name << endl;
exit( 1 );
@@ -1357,7 +1164,7 @@
string release = node->getProp ("rel");
string architecture = node->getProp ("arch");
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
poolItem = get_poolItem ("@system", name, kind_name, version, release, architecture );
if (poolItem) {
@@ -1369,31 +1176,11 @@
poolItem.status().setToBeUninstalled(ResStatus::USER);
if (!soft.empty())
poolItem.status().setSoftUninstall(true);
-#if 0 // replaced by 'transact'
- if ( kind_name== "selection"
- || kind_name == "pattern" ) {
- // -> do a 'single step' resolving either installing or removing
- // required and recommended PoolItems; this will be used by the YaST UI
- resolver->transactResObject ( poolItem, false);
- }
-#endif
-// resolver->addPoolItemToRemove (poolItem);
} else {
cerr << "Unknown system item " << name << endl;
exit( 1 );
}
-
- } else if (node->equals ("upgrade")) {
-
- RESULT << "Checking for upgrades..." << endl;
-
- int count = foreach_system_upgrade (resolver);
-
- if (count == 0)
- RESULT << "System is up-to-date, no upgrades required" << endl;
- else
- RESULT << "Upgrading " << count << " package" << (count > 1 ? "s" : "") << endl;
-
+
} else if (node->equals ("distupgrade")) {
distupgrade = true;
@@ -1412,42 +1199,6 @@
print_pool( resolver, MARKER );
- } else if (node->equals ("establish")) {
-
- string freshen = node->getProp ("freshen");
-
- RESULT << "Establishing state ..." << endl;
-
- if (!resolver->establishPool()) {
- RESULT << "Established NO context !" << endl;
- }
- else {
- RESULT << "Established context" << endl;
- StringList items;
-
- resolver->context()->foreachMarked (print_marked_cb, &items);
- print_items (items);
-// print_pool( MARKER, "false" );
- if (!freshen.empty()) {
- RESULT << "Freshening ..." << endl;
- resolver->context()->foreachMarked (freshen_marked_cb, &resolver);
- }
- }
-
- } else if (node->equals ("freshen")) {
-
- RESULT << "Freshening pool ..." << endl;
-
- if (!resolver->freshenPool()) {
- RESULT << "Freshened NO context !" << endl;
- }
- else {
- RESULT << "Freshened context" << endl;
- StringList items;
-
- resolver->context()->foreachMarked (print_marked_cb, &items);
- print_items (items);
- }
} else if (node->equals ("instorder")) {
@@ -1455,38 +1206,12 @@
instorder = true;
- } else if (node->equals ("maxSolverPasses")) {
- maxSolverPasses = atoi ((node->getProp ("value")).c_str());
-
} else if (node->equals ("mediaorder")) {
RESULT << "Calculating media installation order ..." << endl;
mediaorder = true;
- } else if (node->equals ("solvedeps")) {
-#if 0
- XmlNode_Ptr iter = node->children();
-
- while (iter != NULL) {
- Dependency_Ptr dep = new Dependency (iter);
-
- /* We just skip over anything that doesn't look like a dependency. */
-
- if (dep) {
- string conflict_str = iter->getProp ("conflict");
-
- RESULT << "Solvedeps " << (conflict_str.empty() ? "" : "conflict ") << dep->asString().c_str() << endl;
-
- resolver->addExtraDependency (dep);
-
- }
- iter = iter->next();
- }
-#else
-#warning solvedeps disabled
-#endif
-
} else if (node->equals ("whatprovides")) {
string kind_name = node->getProp ("kind");
@@ -1526,7 +1251,7 @@
poolItems = get_providing_poolItems (prov_name, kind_name);
}
else {
- PoolItem_Ref poolItem = get_poolItem (source_alias, package_name, kind_name);
+ PoolItem poolItem = get_poolItem (source_alias, package_name, kind_name);
if (poolItem) poolItems.insert (poolItem);
}
if (poolItems.empty()) {
@@ -1543,15 +1268,13 @@
vector<string> names;
str::split( node->getProp ("name"), back_inserter(names), "," );
for (unsigned i=0; i < names.size(); i++) {
- resolver->addExtraConflict(CapFactory().parse (string2kind (node->getProp ("kind")),
- names[i]));
+ resolver->addExtraConflict(Capability (names[i], string2kind (node->getProp ("kind"))));
}
} else if (node->equals ("addRequire")) {
vector<string> names;
str::split( node->getProp ("name"), back_inserter(names), "," );
for (unsigned i=0; i < names.size(); i++) {
- resolver->addExtraCapability(CapFactory().parse (string2kind (node->getProp ("kind")),
- names[i]));
+ resolver->addExtraRequire(Capability (names[i], string2kind (node->getProp ("kind"))));
}
} else if (node->equals ("reportproblems")) {
if (resolver->resolvePool() == true
@@ -1559,7 +1282,7 @@
RESULT << "No problems so far" << endl;
}
else {
- ResolverProblemList problems = resolver->problems (true);
+ ResolverProblemList problems = resolver->problems ();
problems.sort(compare_problems());
RESULT << problems.size() << " problems found:" << endl;
for (ResolverProblemList::iterator iter = problems.begin(); iter != problems.end(); ++iter) {
@@ -1639,6 +1362,7 @@
string get_licence = node->getProp ("getlicence");
string verbose = node->getProp ("verbose");
print_pool( resolver, prefix, !all.empty(), get_licence, !verbose.empty() );
+#if 0
} else if (node->equals ("graphic")) {
resolver->resolvePool();
QApplication app(0, NULL);
@@ -1647,7 +1371,8 @@
dialog->setCaption("Solvertree");
dialog->setMinimumSize ( 700, 700 );
dialog->show();
- app.exec();
+ app.exec();
+#endif
} else if (node->equals ("lock")) {
string source_alias = node->getProp ("channel");
string package_name = node->getProp ("name");
@@ -1655,7 +1380,7 @@
package_name = node->getProp ("package");
string kind_name = node->getProp ("kind");
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
poolItem = get_poolItem (source_alias, package_name, kind_name);
if (poolItem) {
@@ -1673,57 +1398,6 @@
}
std::cout << endl;
- } else if (node->equals ("transact")) {
-
- string name = node->getProp ("name");
- if (name.empty())
- name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
-
- string source_alias = node->getProp ("channel");
- if (source_alias.empty())
- source_alias = "@system";
-
- if (!name.empty()
- && !kind_name.empty())
- {
- cerr << "transact either takes 'name' or 'kind', but not both" << endl;
- return;
- }
-
- if (name.empty()
- && kind_name.empty())
- {
- cerr << "transact need either 'name' or 'kind' parameter" << endl;
- return;
- }
-
- if (name.empty()) { // assume kind
- RESULT << "Calling transactResKind( " << kind_name << " )" << endl;;
- resolver->transactResKind( string2kind( kind_name ) );
- }
- else {
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem( source_alias, name, kind_name );
-
- if (poolItem) {
- if (source_alias == "@system") {
- RESULT << "Removing " << name << " from channel " << source_alias << endl;;
- poolItem.status().setToBeUninstalled( ResStatus::USER );
- }
- else {
- RESULT << "Installing " << name << " from channel " << source_alias << endl;;
- poolItem.status().setToBeInstalled( ResStatus::USER );
- }
- resolver->transactResObject( poolItem, false );
- }
- else {
- cerr << "Unknown item " << source_alias << "::" << name << endl;
- }
-
- }
-
} else if (node->equals ("keep")) {
string kind_name = node->getProp ("kind");
string name = node->getProp ("name");
@@ -1740,7 +1414,7 @@
return;
}
- PoolItem_Ref poolItem;
+ PoolItem poolItem;
poolItem = get_poolItem( source_alias, name, kind_name );
@@ -1772,511 +1446,14 @@
node = node->next();
}
- if (getenv ("RC_DEPS_TIME")) {
- int timeout = atoi (getenv ("RC_DEPS_TIME"));
-
- resolver->setTimeout (timeout);
- }
-
if (verify)
resolver->verifySystem ();
-#if 0
- else if (distupgrade)
- resolver->resolvePool();
- else
- resolver->resolveDependencies (established);
-#else
else
resolver->resolvePool();
-#endif
-
report_solutions (resolver, instorder, mediaorder);
}
-static void
-parse_xml_transact (XmlNode_Ptr node, const ResPool & pool)
-{
- static bool first_transact = true;
-
- bool verify = false;
- bool instorder = false;
- bool mediaorder = false;
- bool distupgrade = false;
-
- if (!node->equals ("transact")) {
- ZYPP_THROW (Exception ("Node not 'transact' in parse_xml_transact()"));
- }
-
- DBG << "parse_xml_transact()" << endl;
-
- // reset pool on subsequent transacts.
-
- if (first_transact) {
- first_transact = false;
- }
- else {
- for (ResPool::const_iterator it = pool.begin(); it != pool.end(); ++it) {
- if (it->status().transacts()) it->status().resetTransact( ResStatus::USER );
- }
- }
-
- if (! done_setup) {
- cerr << "Any transacts must be preceeded by the setup!" << endl;
- exit (0);
- }
-
- print_sep ();
-
- solver::detail::Resolver_Ptr resolver = new solver::detail::Resolver( pool );
- resolver->setArchitecture( God->architecture() );
- resolver->setTesting ( true ); // continue despite missing target
- resolver->setForceResolve( forceResolve );
-
- if (!locales.empty()) {
- God->setRequestedLocales( locales );
- }
-
- node = node->children();
- while (node) {
- if (!node->isElement()) {
- node = node->next();
- continue;
- }
-
- if (node->equals("note")) {
-
- string note = node->getContent ();
- cout << "NOTE: " << note << endl;
-
- } else if (node->equals ("verify")) {
-
- verify = true;
-
- } else if (node->equals ("current")) {
- // unsupported
- string source_alias = node->getProp ("channel");
- } else if (node->equals ("subscribe")) {
- // unsupported
- string source_alias = node->getProp ("channel");
- } else if (node->equals ("install")) {
-
- string source_alias = node->getProp ("channel");
- string name = node->getProp ("name");
- if (name.empty())
- name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
- string soft = node->getProp ("soft");
-
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem (source_alias, name, kind_name);
- if (poolItem) {
- RESULT << "Installing " << ((poolItem->kind() != ResTraitszypp::Package::kind) ? (poolItem->kind().asString() + ":") : "") << name << " from channel " << source_alias << endl;;
- poolItem.status().setToBeInstalled(ResStatus::USER);
- if (!soft.empty())
- poolItem.status().setSoftInstall(true);
-// resolver->addPoolItemToInstall (poolItem);
- } else {
- cerr << "Unknown item " << source_alias << "::" << name << endl;
- exit( 1 );
- }
-
- } else if (node->equals ("uninstall")) {
-
- string name = node->getProp ("name");
- if (name.empty())
- name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
- string soft = node->getProp ("soft");
-
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem ("@system", name, kind_name);
- if (poolItem) {
- RESULT << "Uninstalling " << name << endl;
- poolItem.status().setToBeUninstalled(ResStatus::USER);
- if (!soft.empty())
- poolItem.status().setSoftUninstall(true);
-#if 0 // replaced by 'transact'
- if ( kind_name== "selection"
- || kind_name == "pattern" ) {
- // -> do a 'single step' resolving either installing or removing
- // required and recommended PoolItems; this will be used by the YaST UI
- resolver->transactResObject ( poolItem, false);
- }
-#endif
-// resolver->addPoolItemToRemove (poolItem);
- } else {
- cerr << "Unknown system item " << name << endl;
- exit( 1 );
- }
-
- } else if (node->equals ("upgrade")) {
-
- RESULT << "Checking for upgrades..." << endl;
-
- int count = foreach_system_upgrade (resolver);
-
- if (count == 0)
- RESULT << "System is up-to-date, no upgrades required" << endl;
- else
- RESULT << "Upgrading " << count << " package" << (count > 1 ? "s" : "") << endl;
-
- } else if (node->equals ("distupgrade")) {
-
- distupgrade = true;
-
- RESULT << "Doing distribution upgrade ..." << endl;
- UpgradeStatistics stats;
-
- string delete_unmaintained = node->getProp ("delete_unmaintained");
- if (delete_unmaintained == "false") {
- stats.delete_unmaintained = false;
- } else {
- stats.delete_unmaintained = true;
- }
-
- resolver->doUpgrade(stats);
-
- print_pool( resolver, MARKER );
-
- } else if (node->equals ("establish")) {
-
- string freshen = node->getProp ("freshen");
-
- RESULT << "Establishing state ..." << endl;
-
- if (!resolver->establishPool()) {
- RESULT << "Established NO context !" << endl;
- }
- else {
- RESULT << "Established context" << endl;
- StringList items;
-
- resolver->context()->foreachMarked (print_marked_cb, &items);
- print_items (items);
-// print_pool( MARKER, "false" );
- if (!freshen.empty()) {
- RESULT << "Freshening ..." << endl;
- resolver->context()->foreachMarked (freshen_marked_cb, &resolver);
- }
- }
-
- } else if (node->equals ("freshen")) {
-
- RESULT << "Freshening pool ..." << endl;
-
- if (!resolver->freshenPool()) {
- RESULT << "Freshened NO context !" << endl;
- }
- else {
- RESULT << "Freshened context" << endl;
- StringList items;
-
- resolver->context()->foreachMarked (print_marked_cb, &items);
- print_items (items);
- }
-
- } else if (node->equals ("instorder")) {
-
- RESULT << "Calculating installation order ..." << endl;
-
- instorder = true;
-
- } else if (node->equals ("mediaorder")) {
-
- RESULT << "Calculating media installation order ..." << endl;
-
- mediaorder = true;
-
- } else if (node->equals ("solvedeps")) {
-#if 0
- XmlNode_Ptr iter = node->children();
-
- while (iter != NULL) {
- Dependency_Ptr dep = new Dependency (iter);
-
- /* We just skip over anything that doesn't look like a dependency. */
-
- if (dep) {
- string conflict_str = iter->getProp ("conflict");
-
- RESULT << "Solvedeps " << (conflict_str.empty() ? "" : "conflict ") << dep->asString().c_str() << endl;
-
- resolver->addExtraDependency (dep);
-
- }
- iter = iter->next();
- }
-#else
-#warning solvedeps disabled
-#endif
-
- } else if (node->equals ("whatprovides")) {
-
- string kind_name = node->getProp ("kind");
- string prov_name = node->getProp ("provides");
-
- PoolItemSet poolItems;
-
- cout << "poolItems providing '" << prov_name << "'" << endl;
-
- poolItems = get_providing_poolItems (prov_name, kind_name);
-
- if (poolItems.empty()) {
- cerr << "None found" << endl;
- } else {
- for (PoolItemSet::const_iterator iter = poolItems.begin(); iter != poolItems.end(); ++iter) {
- cout << (*iter) << endl;
- }
- }
-
- } else if (node->equals ("whatdependson")) {
-
- string source_alias = node->getProp ("channel");
- string package_name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
- string prov_name = node->getProp ("provides");
-
- PoolItemSet poolItems;
-
- assert (!source_alias.empty());
- assert (!package_name.empty());
-
- if (!prov_name.empty()) {
- if (!package_name.empty()) {
- cerr << " can't have both package and provides." << endl;
- exit (1);
- }
- poolItems = get_providing_poolItems (prov_name, kind_name);
- }
- else {
- PoolItem_Ref poolItem = get_poolItem (source_alias, package_name, kind_name);
- if (poolItem) poolItems.insert (poolItem);
- }
- if (poolItems.empty()) {
- cerr << "Can't find matching package" << endl;
- } else {
- for (PoolItemSet::const_iterator iter = poolItems.begin(); iter != poolItems.end(); ++iter) {
- PoolItemSet dependants = whatdependson (*iter);
- for (PoolItemSet::const_iterator dep_iter = dependants.begin(); dep_iter != dependants.end(); ++dep_iter) {
- cout << (*dep_iter) << endl;
- }
- }
- }
-
- } else if (node->equals ("reportproblems")) {
- if (resolver->resolvePool() == true) {
- RESULT << "No problems so far" << endl;
- }
- else {
- ResolverProblemList problems = resolver->problems ();
- problems.sort(compare_problems());
- RESULT << problems.size() << " problems found:" << endl;
- for (ResolverProblemList::iterator iter = problems.begin(); iter != problems.end(); ++iter) {
- ResolverProblem problem = **iter;
- RESULT << "Problem:" << endl;
- RESULT << problem.description() << endl;
- RESULT << problem.details() << endl;
-
- ProblemSolutionList solutions = problem.solutions();
- for (ProblemSolutionList::const_iterator iter = solutions.begin();
- iter != solutions.end(); ++iter) {
- ProblemSolution solution = **iter;
- RESULT << " Solution:" << endl;
- RESULT << " " << solution.description() << endl;
- RESULT << " " << solution.details() << endl;
- }
- }
- }
- } else if (node->equals ("takesolution")) {
- string problemNrStr = node->getProp ("problem");
- string solutionNrStr = node->getProp ("solution");
- assert (!problemNrStr.empty());
- assert (!solutionNrStr.empty());
- int problemNr = atoi (problemNrStr.c_str());
- int solutionNr = atoi (solutionNrStr.c_str());
- RESULT << "Taking solution: " << solutionNr << endl;
- RESULT << "For problem: " << problemNr << endl;
- ResolverProblemList problems = resolver->problems ();
-
- int problemCounter = -1;
- int solutionCounter = -1;
- // find problem
- for (ResolverProblemList::iterator probIter = problems.begin();
- probIter != problems.end(); ++probIter) {
- problemCounter++;
- if (problemCounter == problemNr) {
- ResolverProblem problem = **probIter;
- ProblemSolutionList solutionList = problem.solutions();
- //find solution
- for (ProblemSolutionList::iterator solIter = solutionList.begin();
- solIter != solutionList.end(); ++solIter) {
- solutionCounter++;
- if (solutionCounter == solutionNr) {
- ProblemSolution_Ptr solution = *solIter;
- cout << "Taking solution: " << endl << *solution << endl;
- cout << "For problem: " << endl << problem << endl;
- ProblemSolutionList doList;
- doList.push_back (solution);
- resolver->applySolutions (doList);
- break;
- }
- }
- break;
- }
- }
-
- if (problemCounter != problemNr) {
- RESULT << "Wrong problem number (0-" << problemCounter << ")" << endl;
- } else if (solutionCounter != solutionNr) {
- RESULT << "Wrong solution number (0-" << solutionCounter << ")" <resolvePool() == true) {
- RESULT << "No problems so far" << endl;
- }
- else {
- ResolverProblemList problems = resolver->problems ();
- RESULT << problems.size() << " problems found:" << endl;
- for (ResolverProblemList::iterator iter = problems.begin(); iter != problems.end(); ++iter) {
- cout << **iter << endl;
- }
- }
- }
- } else if (node->equals ("showpool")) {
- string prefix = node->getProp ("prefix");
- string all = node->getProp ("all");
- string get_licence = node->getProp ("getlicence");
- string verbose = node->getProp ("verbose");
- print_pool( resolver, prefix, !all.empty(), get_licence, !verbose.empty() );
- } else if (node->equals ("graphic")) {
- resolver->resolvePool();
- QApplication app(0, NULL);
- QZyppSolverDialog *dialog = new QZyppSolverDialog(resolver);
- app.setMainWidget( dialog );
- dialog->setCaption("Solvertree");
- dialog->setMinimumSize ( 700, 700 );
- dialog->show();
- app.exec();
- } else if (node->equals ("lock")) {
- string source_alias = node->getProp ("channel");
- string package_name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
-
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem (source_alias, package_name, kind_name);
- if (poolItem) {
- RESULT << "Locking " << package_name << " from channel " << source_alias << endl;
- poolItem.status().setLock (true, ResStatus::USER);
- } else {
- cerr << "Unknown package " << source_alias << "::" << package_name << endl;
- }
- } else if (node->equals ("availablelocales")) {
- RESULT << "Available locales: ";
- ZYpp::LocaleSet locales = God->getAvailableLocales();
- for (ZYpp::LocaleSet::const_iterator it = locales.begin(); it != locales.end(); ++it) {
- if (it != locales.begin()) std::cout << ", ";
- std::cout << it->code();
- }
- std::cout << endl;
-
- } else if (node->equals ("transact")) {
-
- string name = node->getProp ("name");
- if (name.empty())
- name = node->getProp ("package");
- string kind_name = node->getProp ("kind");
-
- string source_alias = node->getProp ("channel");
- if (source_alias.empty())
- source_alias = "@system";
-
- if (!name.empty()
- && !kind_name.empty())
- {
- cerr << "transact either takes 'name' or 'kind', but not both" << endl;
- return;
- }
-
- if (name.empty()
- && kind_name.empty())
- {
- cerr << "transact need either 'name' or 'kind' parameter" << endl;
- return;
- }
-
- if (name.empty()) { // assume kind
- resolver->transactResKind( string2kind( kind_name ) );
- }
- else {
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem( source_alias, name, kind_name );
-
- if (poolItem) {
- if (source_alias == "@system") {
- RESULT << "Removing " << name << " from channel " << source_alias << endl;;
- poolItem.status().setToBeUninstalled( ResStatus::USER );
- }
- else {
- RESULT << "Installing " << name << " from channel " << source_alias << endl;;
- poolItem.status().setToBeInstalled( ResStatus::USER );
- }
- resolver->transactResObject( poolItem, false );
- }
- else {
- cerr << "Unknown item " << source_alias << "::" << name << endl;
- }
- }
- } else if (node->equals ("keep")) {
-
- string name = node->getProp ("name");
- if (name.empty())
- name = node->getProp ("package");
-
- string source_alias = node->getProp ("channel");
- if (source_alias.empty())
- source_alias = "@system";
-
- if (name.empty())
- {
- cerr << "transact need 'name' parameter" << endl;
- return;
- }
-
- PoolItem_Ref poolItem;
-
- poolItem = get_poolItem( source_alias, name, "" );
-
- if (poolItem) {
- // first: set anything
- if (source_alias == "@system") {
- poolItem.status().setToBeUninstalled( ResStatus::USER );
- }
- else {
- poolItem.status().setToBeInstalled( ResStatus::USER );
- }
- // second: keep old state
- poolItem.status().setTransact( false, ResStatus::USER );
- resolver->transactResObject( poolItem, false );
- }
- else {
- cerr << "Unknown item " << source_alias << "::" << name << endl;
- }
-
- } else {
- cerr << "Unknown tag '" << node->name() << "' in transact" << endl;
- }
-
- node = node->next();
- }
-
-print_pool( resolver, MARKER );
- report_solutions (resolver, instorder, mediaorder);
-}
//---------------------------------------------------------------------------------------------------------------------
@@ -2295,8 +1472,6 @@
parse_xml_setup( node );
} else if (node->equals( "trial" )) {
parse_xml_trial( node, pool );
- } else if (node->equals( "transact" )) {
- parse_xml_transact( node, pool );
} else {
cerr << "Unknown tag '" << node->name() << "' in test" << endl;
}
@@ -2334,7 +1509,6 @@
int
main (int argc, char *argv[])
{
-// setenv("ZYPP_NOLOG","1",1); // no logging
if (argc != 2) {
cerr << "Usage: deptestomatic testfile.xml" << endl;
Modified: branches/tmp/ma/jump_sat/libzypp-testsuite/src/Makefile.am
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp-testsuite/src/Makefile.am?rev=8630&r1=8629&r2=8630&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp-testsuite/src/Makefile.am (original)
+++ branches/tmp/ma/jump_sat/libzypp-testsuite/src/Makefile.am Tue Feb 12 15:29:46 2008
@@ -2,5 +2,5 @@
# Makefile.am for zypp/solver/testsuite/src
#
-SUBDIRS = utils helix
+SUBDIRS = utils
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org