apt @VERSION@
|
00001 // -*- mode: cpp; mode: fold -*- 00002 // Description /*{{{*/ 00003 // $Id: packagemanager.h,v 1.14 2001/05/07 04:24:08 jgg Exp $ 00004 /* ###################################################################### 00005 00006 Package Manager - Abstacts the package manager 00007 00008 Three steps are 00009 - Aquiration of archives (stores the list of final file names) 00010 - Sorting of operations 00011 - Invokation of package manager 00012 00013 This is the final stage when the package cache entities get converted 00014 into file names and the state stored in a DepCache is transformed 00015 into a series of operations. 00016 00017 In the final scheme of things this may serve as a director class to 00018 access the actual install methods based on the file type being 00019 installed. 00020 00021 ##################################################################### */ 00022 /*}}}*/ 00023 #ifndef PKGLIB_PACKAGEMANAGER_H 00024 #define PKGLIB_PACKAGEMANAGER_H 00025 00026 00027 #include <string> 00028 #include <iostream> 00029 #include <apt-pkg/pkgcache.h> 00030 #include <apt-pkg/depcache.h> 00031 #include <set> 00032 00033 using std::string; 00034 00035 class pkgAcquire; 00036 class pkgDepCache; 00037 class pkgSourceList; 00038 class pkgOrderList; 00039 class pkgRecords; 00040 class pkgPackageManager : protected pkgCache::Namespace 00041 { 00042 public: 00043 00044 enum OrderResult {Completed,Failed,Incomplete}; 00045 00046 protected: 00047 string *FileNames; 00048 pkgDepCache &Cache; 00049 pkgOrderList *List; 00050 bool Debug; 00051 00058 std::set<std::string> disappearedPkgs; 00059 00060 bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0); 00061 void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0); 00062 virtual OrderResult OrderInstall(); 00063 bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver); 00064 bool CreateOrderList(); 00065 00066 // Analysis helpers 00067 bool DepAlwaysTrue(DepIterator D); 00068 00069 // Install helpers 00070 bool ConfigureAll(); 00071 bool SmartConfigure(PkgIterator Pkg); 00072 bool SmartUnPack(PkgIterator Pkg); 00073 bool SmartRemove(PkgIterator Pkg); 00074 bool EarlyRemove(PkgIterator Pkg); 00075 00076 // The Actual installation implementation 00077 virtual bool Install(PkgIterator /*Pkg*/,string /*File*/) {return false;}; 00078 virtual bool Configure(PkgIterator /*Pkg*/) {return false;}; 00079 virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;}; 00080 virtual bool Go(int statusFd=-1) {return true;}; 00081 virtual void Reset() {}; 00082 00083 // the result of the operation 00084 OrderResult Res; 00085 00086 public: 00087 00088 // Main action members 00089 bool GetArchives(pkgAcquire *Owner,pkgSourceList *Sources, 00090 pkgRecords *Recs); 00091 00092 // Do the installation 00093 OrderResult DoInstall(int statusFd=-1); 00094 00095 // stuff that needs to be done before the fork() of a library that 00096 // uses apt 00097 OrderResult DoInstallPreFork() { 00098 Res = OrderInstall(); 00099 return Res; 00100 }; 00101 00102 // stuff that needs to be done after the fork 00103 OrderResult DoInstallPostFork(int statusFd=-1); 00104 bool FixMissing(); 00105 00107 inline std::set<std::string> GetDisappearedPackages() { return disappearedPkgs; }; 00108 00109 pkgPackageManager(pkgDepCache *Cache); 00110 virtual ~pkgPackageManager(); 00111 }; 00112 00113 #endif