Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

PkgDep Class Reference

#include <PkgDep.h>

List of all members.

Public Types

typedef Alternatives::AltDefaultList(* AlternativesCallback )(PkgName name)
typedef std::list< PkgNameNameList
typedef NameList::iterator NameList_iterator
typedef NameList::const_iterator NameList_const_iterator
typedef std::list< RelInfoRelInfoList
typedef RelInfoList::iterator RelInfoList_iterator
typedef RelInfoList::const_iterator RelInfoList_const_iterator
typedef std::list< PMSolvablePtr > SolvableList
typedef std::list< ResultResultList
typedef std::list< ErrorResultErrorResultList
typedef WhatToDoWithUnresolvable(* DealWithUnresolvable_callback )(PkgDep *solver, const PkgRelation &rel, PMSolvablePtr &ptr)
enum  alternative_kind { SIMPLE, REQUIRES_MORE, CONFLICT }
enum  alternatives_mode { ASK_ALWAYS, ASK_IF_NO_DEFAULT, AUTO_IF_NO_DEFAULT, AUTO_ALWAYS }
enum  WhatToDoWithUnresolvable { UNRES_IGNORE = 0, UNRES_TAKETHIS, UNRES_FAIL }

Public Member Functions

 PkgDep (PkgSet &instd, const PkgSet &avail, AlternativesCallback alternatives_callback=default_alternatives_callback, alternatives_mode m=default_alternatives_mode)
bool install (PkgSet &candidates, ResultList &good, ErrorResultList &bad, ErrorResultList &out_obsoleted, bool commit_to_installed=true, bool check_inconsistent=false)
void remove (SolvableList &pkgs)
bool consistent (ErrorResultList &failures)
bool solvesystemnoauto (PkgSet &candidates, ResultList &out_good, ErrorResultList &out_bad, ErrorResultList &out_obsoleted)
const PkgSetcurrent_installed ()
const PkgSetcurrent_available ()
void set_alternatives_mode (alternatives_mode mode)
void set_alternatives_callback (Alternatives::AltDefaultList(*alternatives_callback)(PkgName name))
void set_unresolvable_callback (DealWithUnresolvable_callback callback)
void install_installed (bool yes)

Static Public Member Functions

void set_default_alternatives_mode (alternatives_mode m)
void set_default_max_remove (unsigned mr)
void remove_package (PkgSet *set, PMSolvablePtr pkg, SolvableList &to_remove)
unsigned count_providers_for (const PkgSet *set, const PkgRelation &req)

Public Attributes

DealWithUnresolvable_callback _unresolvable_callback

Private Types

typedef std::list< PkgRevRelationRevRelList
typedef RevRelList::iterator RevRelList_iterator
typedef RevRelList::const_iterator RevRelList_const_iterator
typedef std::list< IRelInfoIRelInfoList
typedef IRelInfoList::iterator IRelInfoList_iterator
typedef IRelInfoList::const_iterator IRelInfoList_const_iterator
typedef hash< PkgName, NotesNotes_type
typedef Notes_type::iterator Notes_iterator
typedef Notes_type::const_iterator Notes_const_iterator
typedef std::deque< AltInfoAltInfoList
typedef AltInfoList::iterator AltInfo_iterator
typedef AltInfoList::const_iterator AltInfo_const_iterator
enum  search_result { NONE, ONE, MULTI }

Private Member Functions

void add_package (PMSolvablePtr cand)
search_result search_for_provider (const PkgRelation &req, PMSolvablePtr referer, ErrorResult *res)
bool check_for_broken_reqs (PMSolvablePtr oldpkg, PMSolvablePtr newpkg, ErrorResult &res)
bool req_ok_after_upgrade (const PkgRelation &rel, PMSolvablePtr oldpkg, PMSolvablePtr newpkg)
void handle_alternative (const AltInfo &alt_info)
bool pkg_consistent (PMSolvablePtr pkg, ErrorResult *err)
void virtual_remove_package (PMSolvablePtr pkg, SolvableList &to_remove, PMSolvablePtr assume_instd=NULL) const
bool also_provided_by_installed (const PkgRelation &rel)
PMSolvablePtr upgrade_solves_conflict (PMSolvablePtr pkg, const PkgRelation &confl)
PMSolvablePtr try_upgrade_conflictor (PMSolvablePtr pkg, const PkgRelation &provides)
PMSolvablePtr try_upgrade_conflicted (PMSolvablePtr pkg, const PkgRelation &confl)
PMSolvablePtr try_upgrade_requirerer (PMSolvablePtr pkg, PMSolvablePtr oldpkg, PMSolvablePtr newpkg)
PMSolvablePtr available_upgrade (PMSolvablePtr pkg)
void do_upgrade_for_conflict (PMSolvablePtr upgrade)
bool has_conflict_with (const PkgRelation &confl, PMSolvablePtr pkg)
void add_referer (const PkgName &name, PMSolvablePtr referer, const PkgRelation &rel)
void add_referer (PMSolvablePtr pkg, PMSolvablePtr referer, const PkgRelation &rel)
void add_not_available (PMSolvablePtr referer, const PkgRelation &rel)
void inconsistent_to_candidates (PkgSet &candidates)

Static Private Member Functions

Alternatives::AltDefaultList default_alternatives_callback (PkgName name)
WhatToDoWithUnresolvable default_unresolvable_callback (PkgDep *solver, const PkgRelation &rel, PMSolvablePtr &p)

Private Attributes

alternatives_mode alt_mode
PkgSet installed
const PkgSetavailable
AlternativesCallback _alternatives_callback
PkgSet vinstalled
PkgSetcandidates
Notes_type notes
std::deque< PMSolvablePtr > to_check
AltInfoList alts_to_check
noval_hash< PkgNamealts_handled
ErrorResultListi_obsoleted
ResultListgood
ErrorResultListbad
bool _install_installed

Static Private Attributes

alternatives_mode default_alternatives_mode = ASK_IF_NO_DEFAULT
unsigned default_max_remove = 10


Detailed Description

the solver


Member Typedef Documentation

typedef Alternatives::AltDefaultList(* PkgDep::AlternativesCallback)( PkgName name )
 

typedef AltInfoList::const_iterator PkgDep::AltInfo_const_iterator [private]
 

typedef AltInfoList::iterator PkgDep::AltInfo_iterator [private]
 

typedef std::deque<AltInfo> PkgDep::AltInfoList [private]
 

typedef WhatToDoWithUnresolvable(* PkgDep::DealWithUnresolvable_callback)( PkgDep* solver, const PkgRelation& rel, PMSolvablePtr& ptr)
 

function to call when an unresolvable dependence is found
yes, the non const PkgDep* is ugly

Parameters:
solver pointer to current solver
rel unresolvable dependence
PMSolvablePtr PMSolvable which should be assumed to provide this dependence
Returns:
tells caller what to do with dependence. If return value is UNRES_TAKETHIS, this function has to point ptr to something useful

typedef std::list<ErrorResult> PkgDep::ErrorResultList
 

typedef std::list<IRelInfo> PkgDep::IRelInfoList [private]
 

typedef IRelInfoList::const_iterator PkgDep::IRelInfoList_const_iterator [private]
 

typedef IRelInfoList::iterator PkgDep::IRelInfoList_iterator [private]
 

typedef std::list<PkgName> PkgDep::NameList
 

typedef NameList::const_iterator PkgDep::NameList_const_iterator
 

typedef NameList::iterator PkgDep::NameList_iterator
 

typedef Notes_type::const_iterator PkgDep::Notes_const_iterator [private]
 

typedef Notes_type::iterator PkgDep::Notes_iterator [private]
 

typedef hash<PkgName,Notes> PkgDep::Notes_type [private]
 

typedef std::list<RelInfo> PkgDep::RelInfoList
 

typedef RelInfoList::const_iterator PkgDep::RelInfoList_const_iterator
 

typedef RelInfoList::iterator PkgDep::RelInfoList_iterator
 

typedef std::list<Result> PkgDep::ResultList
 

typedef std::list<PkgRevRelation> PkgDep::RevRelList [private]
 

typedef RevRelList::const_iterator PkgDep::RevRelList_const_iterator [private]
 

typedef RevRelList::iterator PkgDep::RevRelList_iterator [private]
 

typedef std::list<PMSolvablePtr> PkgDep::SolvableList
 


Member Enumeration Documentation

enum PkgDep::alternative_kind
 

Enumeration values:
SIMPLE 
REQUIRES_MORE 
CONFLICT 

enum PkgDep::alternatives_mode
 

Enumeration values:
ASK_ALWAYS 
ASK_IF_NO_DEFAULT 
AUTO_IF_NO_DEFAULT 
AUTO_ALWAYS 

enum PkgDep::search_result [private]
 

Enumeration values:
NONE 
ONE 
MULTI 

enum PkgDep::WhatToDoWithUnresolvable
 

Enumeration values:
UNRES_IGNORE 
UNRES_TAKETHIS 
UNRES_FAIL 


Constructor & Destructor Documentation

PkgDep::PkgDep PkgSet instd,
const PkgSet avail,
AlternativesCallback  alternatives_callback = default_alternatives_callback,
alternatives_mode  m = default_alternatives_mode
 


Member Function Documentation

void PkgDep::add_not_available PMSolvablePtr  referer,
const PkgRelation rel
[private]
 

void PkgDep::add_package PMSolvablePtr  cand  )  [private]
 

void PkgDep::add_referer PMSolvablePtr  pkg,
PMSolvablePtr  referer,
const PkgRelation rel
[inline, private]
 

void PkgDep::add_referer const PkgName name,
PMSolvablePtr  referer,
const PkgRelation rel
[private]
 

bool PkgDep::also_provided_by_installed const PkgRelation rel  )  [private]
 

PMSolvablePtr PkgDep::available_upgrade PMSolvablePtr  pkg  )  [private]
 

try to find a different version of pkg in the available set

bool PkgDep::check_for_broken_reqs PMSolvablePtr  oldpkg,
PMSolvablePtr  newpkg,
ErrorResult res
[private]
 

resolve broken requirements when replacing oldpkg by newpkg

bool PkgDep::consistent ErrorResultList failures  ) 
 

check consistency of current installed set

unsigned PkgDep::count_providers_for const PkgSet set,
const PkgRelation req
[static]
 

count number of packages providing req in set

const PkgSet& PkgDep::current_available  )  [inline]
 

return current available set

const PkgSet& PkgDep::current_installed  )  [inline]
 

return current installed set for inspection

Alternatives::AltDefaultList PkgDep::default_alternatives_callback PkgName  name  )  [inline, static, private]
 

PkgDep::WhatToDoWithUnresolvable PkgDep::default_unresolvable_callback PkgDep solver,
const PkgRelation rel,
PMSolvablePtr &  p
[static, private]
 

default unresolvable callback, ignores deps that name begins with rpmlib(

void PkgDep::do_upgrade_for_conflict PMSolvablePtr  upgrade  )  [private]
 

void PkgDep::handle_alternative const AltInfo alt_info  )  [private]
 

bool PkgDep::has_conflict_with const PkgRelation confl,
PMSolvablePtr  pkg
[private]
 

void PkgDep::inconsistent_to_candidates PkgSet candidates  )  [private]
 

check consistency of installed packages, mark inconsistent ones for reinstallation

bool PkgDep::install PkgSet candidates,
ResultList good,
ErrorResultList bad,
ErrorResultList out_obsoleted,
bool  commit_to_installed = true,
bool  check_inconsistent = false
 

install packages (if good result, add candidates to installed set)

void PkgDep::install_installed bool  yes  )  [inline]
 

whether to try to solve already installed Packages if they are in the candidates list for installation

bool PkgDep::pkg_consistent PMSolvablePtr  pkg,
ErrorResult err
[private]
 

void PkgDep::remove SolvableList pkgs  ) 
 

remove a list of packages; the 'pkgs' list will be extended by all packages that have to be removed, too, to make the installed set consistent again

void PkgDep::remove_package PkgSet set,
PMSolvablePtr  pkg,
SolvableList to_remove
[static]
 

recoursive remove package pkg from PkgSet set and extend to_remove with all removed packages

bool PkgDep::req_ok_after_upgrade const PkgRelation rel,
PMSolvablePtr  oldpkg,
PMSolvablePtr  newpkg
[private]
 

check if the requirement rel is satisfied when replacing oldpkg by newpkg. This is the case when newpkg, a candidate or an otherwise installed package provides it

PkgDep::search_result PkgDep::search_for_provider const PkgRelation req,
PMSolvablePtr  referer,
ErrorResult res
[private]
 

search the available set for packages that provide "req" which is needed by "referer"

void PkgDep::set_alternatives_callback Alternatives::AltDefaultList(*  alternatives_callback)(PkgName name)  )  [inline]
 

void PkgDep::set_alternatives_mode alternatives_mode  mode  )  [inline]
 

void PkgDep::set_default_alternatives_mode alternatives_mode  m  )  [inline, static]
 

void PkgDep::set_default_max_remove unsigned  mr  )  [inline, static]
 

void PkgDep::set_unresolvable_callback DealWithUnresolvable_callback  callback  )  [inline]
 

set function to call when an unresolvable dependence is found

See also:
DealWithUnresolvable_callback

bool PkgDep::solvesystemnoauto PkgSet candidates,
ResultList out_good,
ErrorResultList out_bad,
ErrorResultList out_obsoleted
 

just like install but also try to fix inconsistent installed packages

PMSolvablePtr PkgDep::try_upgrade_conflicted PMSolvablePtr  pkg,
const PkgRelation confl
[private]
 

PMSolvablePtr PkgDep::try_upgrade_conflictor PMSolvablePtr  pkg,
const PkgRelation provides
[private]
 

some to-be-installed package provides "provides", however pkg has a conflict on this relation. Lookup the package name in the available set and see if choosing that one as candidate would resolve the conflict

PMSolvablePtr PkgDep::try_upgrade_requirerer PMSolvablePtr  pkg,
PMSolvablePtr  oldpkg,
PMSolvablePtr  newpkg
[private]
 

pkg requires something that is no longer there when oldpkg is replaced by newpkg. Try to find a replacement for pkg in the hope that the requirement is satisfied then.

PMSolvablePtr PkgDep::upgrade_solves_conflict PMSolvablePtr  pkg,
const PkgRelation confl
[private]
 

void PkgDep::virtual_remove_package PMSolvablePtr  pkg,
SolvableList to_remove,
PMSolvablePtr  assume_instd = NULL
const [private]
 


Member Data Documentation

AlternativesCallback PkgDep::_alternatives_callback [private]
 

bool PkgDep::_install_installed [private]
 

DealWithUnresolvable_callback PkgDep::_unresolvable_callback
 

alternatives_mode PkgDep::alt_mode [private]
 

noval_hash<PkgName> PkgDep::alts_handled [private]
 

AltInfoList PkgDep::alts_to_check [private]
 

const PkgSet& PkgDep::available [private]
 

ErrorResultList* PkgDep::bad [private]
 

PkgSet* PkgDep::candidates [private]
 

PkgDep::alternatives_mode PkgDep::default_alternatives_mode = ASK_IF_NO_DEFAULT [static, private]
 

unsigned PkgDep::default_max_remove = 10 [static, private]
 

ResultList* PkgDep::good [private]
 

ErrorResultList* PkgDep::i_obsoleted [private]
 

PkgSet PkgDep::installed [private]
 

Notes_type PkgDep::notes [private]
 

std::deque<PMSolvablePtr > PkgDep::to_check [private]
 

PkgSet PkgDep::vinstalled [private]
 


The documentation for this class was generated from the following files:
Generated on Fri Nov 9 14:30:32 2007 for yast2-packagemanager by doxygen 1.3.6