|
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 #include <apt-pkg/pkgcache.h> 00027 00028 #include <string> 00029 #include <iostream> 00030 #include <set> 00031 00032 class pkgAcquire; 00033 class pkgDepCache; 00034 class pkgSourceList; 00035 class pkgOrderList; 00036 class pkgRecords; 00037 class pkgPackageManager : protected pkgCache::Namespace 00038 { 00039 public: 00040 00041 enum OrderResult {Completed,Failed,Incomplete}; 00042 static bool SigINTStop; 00043 00044 protected: 00045 std::string *FileNames; 00046 pkgDepCache &Cache; 00047 pkgOrderList *List; 00048 bool Debug; 00049 bool NoImmConfigure; 00050 bool ImmConfigureAll; 00051 00058 std::set<std::string> disappearedPkgs; 00059 00060 void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0); 00061 virtual OrderResult OrderInstall(); 00062 bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver); 00063 bool CreateOrderList(); 00064 00065 // Analysis helpers 00066 bool DepAlwaysTrue(DepIterator D); 00067 00068 // Install helpers 00069 bool ConfigureAll(); 00070 bool SmartConfigure(PkgIterator Pkg, int const Depth); 00071 //FIXME: merge on abi break 00072 bool SmartUnPack(PkgIterator Pkg); 00073 bool SmartUnPack(PkgIterator Pkg, bool const Immediate, int const Depth); 00074 bool SmartRemove(PkgIterator Pkg); 00075 bool EarlyRemove(PkgIterator Pkg); 00076 00077 // The Actual installation implementation 00078 virtual bool Install(PkgIterator /*Pkg*/,std::string /*File*/) {return false;}; 00079 virtual bool Configure(PkgIterator /*Pkg*/) {return false;}; 00080 virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;}; 00081 virtual bool Go(int statusFd=-1) {return true;}; 00082 virtual void Reset() {}; 00083 00084 // the result of the operation 00085 OrderResult Res; 00086 00087 public: 00088 00089 // Main action members 00090 bool GetArchives(pkgAcquire *Owner,pkgSourceList *Sources, 00091 pkgRecords *Recs); 00092 00093 // Do the installation 00094 OrderResult DoInstall(int statusFd=-1); 00095 00096 // stuff that needs to be done before the fork() of a library that 00097 // uses apt 00098 OrderResult DoInstallPreFork() { 00099 Res = OrderInstall(); 00100 return Res; 00101 }; 00102 00103 // stuff that needs to be done after the fork 00104 OrderResult DoInstallPostFork(int statusFd=-1); 00105 bool FixMissing(); 00106 00108 inline std::set<std::string> GetDisappearedPackages() { return disappearedPkgs; }; 00109 00110 pkgPackageManager(pkgDepCache *Cache); 00111 virtual ~pkgPackageManager(); 00112 }; 00113 00114 #endif
1.7.4