00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | __ __ ____ _____ ____ | 00004 | \ \ / /_ _/ ___|_ _|___ \ | 00005 | \ V / _` \___ \ | | __) | | 00006 | | | (_| |___) || | / __/ | 00007 | |_|\__,_|____/ |_| |_____| | 00008 | | 00009 | core system | 00010 | (C) SuSE GmbH | 00011 \----------------------------------------------------------------------/ 00012 00013 File: PMPackage.h 00014 00015 Author: Michael Andres <ma@suse.de> 00016 Maintainer: Michael Andres <ma@suse.de> 00017 00018 Purpose: Defines the Package object. 00019 00020 /-*/ 00021 #ifndef PMPackage_h 00022 #define PMPackage_h 00023 00024 #include <iosfwd> 00025 #include <string> 00026 00027 #include <y2pm/InstSrcPtr.h> 00028 #include <y2pm/PMPackagePtr.h> 00029 #include <y2pm/PMPackageDataProvider.h> // should introduce all attribute data types. 00030 00031 #include <y2pm/PMObject.h> 00032 00033 #include <y2pm/PMPackageDelta.h> 00034 00035 class PkgDuMaster; 00036 class PkgDuSlave; 00037 class YStringTree; 00038 00040 // 00041 // CLASS NAME : PMPackage 00045 class PMPackage : public PMObject { 00046 REP_BODY(PMPackage); 00047 00048 private: 00049 00050 PkgDuSlave & _pkgdu; 00051 00052 public: 00053 00054 bool du_add( PkgDuMaster & master_r ) const; 00055 bool du_sub( PkgDuMaster & master_r ) const; 00056 00057 private: 00058 00063 virtual bool prefererCandidate() const; 00064 00065 public: 00066 00071 virtual std::string summary() const; 00072 virtual std::list<std::string> description() const; 00073 virtual std::list<std::string> insnotify() const; 00074 virtual std::list<std::string> delnotify() const; 00075 virtual FSize size() const; 00076 virtual bool providesSources() const; 00077 00078 virtual std::string instSrcLabel() const; 00079 virtual Vendor instSrcVendor() const; 00080 virtual unsigned instSrcRank() const; 00081 00086 // splitprovides 00087 PkgSplitSet splitprovides() const; 00088 00089 Date buildtime() const; 00090 std::string buildhost() const; 00091 Date installtime() const; 00092 std::string distribution() const; 00093 Vendor vendor() const; 00094 std::string license() const; 00095 std::list<std::string> licenseToConfirm() const; 00096 std::string packager() const; 00097 std::string group() const; 00098 YStringTreeItem * group_ptr() const; 00099 std::list<std::string> changelog() const; 00100 std::string url() const; 00101 std::string os() const; 00102 std::list<std::string> prein() const; 00103 std::list<std::string> postin() const; 00104 std::list<std::string> preun() const; 00105 std::list<std::string> postun() const; 00106 std::string sourceloc() const; 00107 FSize sourcesize() const; 00108 FSize archivesize() const; 00109 std::list<std::string> authors() const; 00110 std::list<std::string> filenames() const; 00111 // suse packages values 00112 std::list<std::string> recommends() const; 00113 std::list<std::string> suggests() const; 00114 std::string location() const; 00115 unsigned int medianr() const; 00116 std::list<std::string> keywords() const; 00117 std::string md5sum() const; 00118 00119 // from packages.DU (argument returned for convenience) 00120 PkgDu & du( PkgDu & dudata_r ) const; 00121 00122 // YOU attributes 00123 std::string externalUrl() const; 00124 std::list<PkgEdition> patchRpmBaseVersions() const; 00125 FSize patchRpmSize() const; 00126 bool forceInstall() const; 00127 std::string patchRpmMD5() const; 00128 00129 std::list<PMPackageDelta> deltas() const; 00130 00131 // if the rpm file comes from remote 00132 // (-> package provide takes some time, use 'provide' callback 00133 bool isRemote (void) const; 00134 00135 // physical access to the rpm file. 00136 PMError providePkgToInstall( Pathname & ) const; 00137 // physical access to the src.rpm file. 00138 PMError provideSrcPkgToInstall( Pathname & ) const; 00139 // who's providing this package ? 00140 constInstSrcPtr source() const; 00141 00142 protected: 00143 00148 friend class InstSrcData; 00149 00150 PMPackageDataProviderPtr _dataProvider; 00151 00152 public: 00153 00154 PMPackage ( const PkgName & name_r, 00155 const PkgEdition & edition_r, 00156 const PkgArch & arch_r, 00157 PMPackageDataProviderPtr dataProvider_r ); 00158 00159 virtual ~PMPackage(); 00160 00161 public: 00162 00163 virtual std::ostream & dumpOn( std::ostream & str ) const; 00164 }; 00165 00167 00168 #endif // PMPackage_h
1.4.4