#include <regex.h>
#include <vector>
+#include <memory>
class pkgDepCache : protected pkgCache::Namespace
{
* \param rootFunc A callback that can be used to add extra
* packages to the root set.
*
- * \return \b false if an error occured.
+ * \return \b false if an error occurred.
*/
bool MarkRequired(InRootSetFunc &rootFunc);
* are tested to see whether they are actually garbage. If so,
* they are marked as such.
*
- * \return \b false if an error occured.
+ * \return \b false if an error occurred.
*/
bool Sweep();
unsigned long iBrokenCount;
unsigned long iPolicyBrokenCount;
unsigned long iBadCount;
-
+
+ bool DebugMarker;
+ bool DebugAutoInstall;
+
Policy *delLocalPolicy; // For memory clean up..
Policy *LocalPolicy;
*/
virtual bool MarkFollowsSuggests();
+ /** \return \b true if it's OK for MarkInstall to recursively
+ * install the given version of the given package.
+ *
+ * \param p the package that MarkInstall wants to install.
+ * \param v the version being installed, or an end iterator
+ * if p is being removed.
+ * \param d the dependency being fixed.
+ *
+ * The default implementation unconditionally returns \b true.
+ */
+ virtual bool AutoInstOk(const PkgIterator &p,
+ const VerIterator &v,
+ const DepIterator &d);
+
/** \brief Update the Marked and Garbage fields of all packages.
*
* This routine is implicitly invoked after all state manipulators
*/
// @{
void MarkKeep(PkgIterator const &Pkg, bool Soft = false,
- bool FromUser = true);
- void MarkDelete(PkgIterator const &Pkg,bool Purge = false);
+ bool FromUser = true, unsigned long Depth = 0);
+ void MarkDelete(PkgIterator const &Pkg, bool Purge = false,
+ unsigned long Depth = 0);
void MarkInstall(PkgIterator const &Pkg,bool AutoInst = true,
unsigned long Depth = 0, bool FromUser = true,
bool ForceImportantDeps = false);
+
void SetReInstall(PkgIterator const &Pkg,bool To);
void SetCandidateVersion(VerIterator TargetVer);
// read persistent states
bool readStateFile(OpProgress *prog);
- bool writeStateFile(OpProgress *prog);
+ bool writeStateFile(OpProgress *prog, bool InstalledOnly=false);
// Size queries
inline double UsrSize() {return iUsrSize;};