]> git.saurik.com Git - apt.git/blame - apt-pkg/packagemanager.h
* Install-Reason -> Auto-Installed in pkgstates
[apt.git] / apt-pkg / packagemanager.h
CommitLineData
6c139d6e
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
0a843901 3// $Id: packagemanager.h,v 1.14 2001/05/07 04:24:08 jgg Exp $
6c139d6e
AL
4/* ######################################################################
5
6 Package Manager - Abstacts the package manager
7
8 Three steps are
9 - Aquiration of archives (stores the list of final file names)
10 - Sorting of operations
6fc33863 11 - Invokation of package manager
6c139d6e
AL
12
13 This is the final stage when the package cache entities get converted
14 into file names and the state stored in a DepCache is transformed
15 into a series of operations.
16
17 In the final scheme of things this may serve as a director class to
18 access the actual install methods based on the file type being
19 installed.
20
21 ##################################################################### */
22 /*}}}*/
6c139d6e
AL
23#ifndef PKGLIB_PACKAGEMANAGER_H
24#define PKGLIB_PACKAGEMANAGER_H
25
26#ifdef __GNUG__
094a497d 27#pragma interface "apt-pkg/packagemanager.h"
6c139d6e
AL
28#endif
29
30#include <string>
e23e6733 31#include <iostream>
094a497d 32#include <apt-pkg/pkgcache.h>
3c9b111f 33#include <apt-pkg/depcache.h>
6c139d6e 34
0a843901
AL
35using std::string;
36
03e39e59 37class pkgAcquire;
6c139d6e
AL
38class pkgDepCache;
39class pkgSourceList;
40class pkgOrderList;
03e39e59 41class pkgRecords;
b2e465d6 42class pkgPackageManager : protected pkgCache::Namespace
6c139d6e 43{
281daf46
AL
44 public:
45
46 enum OrderResult {Completed,Failed,Incomplete};
47
6c139d6e
AL
48 protected:
49 string *FileNames;
50 pkgDepCache &Cache;
51 pkgOrderList *List;
30e1eab5 52 bool Debug;
b2e465d6 53
6c139d6e 54 bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0);
756458fb 55 virtual OrderResult OrderInstall();
6c139d6e 56 bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver);
7a1b1f8b 57 bool CreateOrderList();
6c139d6e
AL
58
59 // Analysis helpers
60 bool DepAlwaysTrue(DepIterator D);
61
62 // Install helpers
63 bool ConfigureAll();
64 bool SmartConfigure(PkgIterator Pkg);
65 bool SmartUnPack(PkgIterator Pkg);
66 bool SmartRemove(PkgIterator Pkg);
67 bool EarlyRemove(PkgIterator Pkg);
68
b2e465d6 69 // The Actual installation implementation
db5c1b54
AL
70 virtual bool Install(PkgIterator /*Pkg*/,string /*File*/) {return false;};
71 virtual bool Configure(PkgIterator /*Pkg*/) {return false;};
72 virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;};
007dc9e0 73 virtual bool Go(int statusFd=-1) {return true;};
281daf46 74 virtual void Reset() {};
3c9b111f
MV
75
76 // the result of the operation
77 OrderResult Res;
78
6c139d6e 79 public:
281daf46 80
b50b2c97 81 // Main action members
03e39e59
AL
82 bool GetArchives(pkgAcquire *Owner,pkgSourceList *Sources,
83 pkgRecords *Recs);
3c9b111f
MV
84
85 // Do the installation
86 OrderResult DoInstall() {
87 if(DoInstallPreFork() == Failed)
88 return Failed;
89
90 return DoInstallPostFork();
91 }
92
93 // stuff that needs to be done before the fork() of a library that
94 // uses apt
95 OrderResult DoInstallPreFork() {
96 Res = OrderInstall();
97 return Res;
98 };
99
100 // stuff that needs to be done after the fork
101 OrderResult DoInstallPostFork(int statusFd=-1) {
102 bool goResult = Go(statusFd);
103 if(goResult == false)
104 return Failed;
e23e6733 105
3c9b111f 106 // if all was fine update the state file
e23e6733 107 if(Res == Completed) {
3c9b111f 108 Cache.writeStateFile(NULL);
e23e6733 109 }
3c9b111f
MV
110 return Res;
111 };
112
6c139d6e
AL
113 bool FixMissing();
114
b2e465d6 115 pkgPackageManager(pkgDepCache *Cache);
6c139d6e
AL
116 virtual ~pkgPackageManager();
117};
118
119#endif