Package.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00012 #include "zypp/base/Logger.h"
00013 #include "zypp/base/String.h"
00014 #include "zypp/Package.h"
00015 #include "zypp/sat/LookupAttr.h"
00016 #include "zypp/ZYppFactory.h"
00017 #include "zypp/target/rpm/RpmDb.h"
00018 #include "zypp/target/rpm/RpmHeader.h"
00019
00020 using namespace std;
00021
00023 namespace zypp
00024 {
00025
00026 IMPL_PTR_TYPE(Package);
00027
00029
00030
00031
00032
00033 Package::Package( const sat::Solvable & solvable_r )
00034 : ResObject( solvable_r )
00035 {}
00036
00038
00039
00040
00041
00042 Package::~Package()
00043 {}
00044
00045 VendorSupportOption Package::vendorSupport() const
00046 {
00047 static const IdString support_unsupported( "support_unsupported" );
00048 static const IdString support_acc( "support_acc" );
00049 static const IdString support_l1( "support_l1" );
00050 static const IdString support_l2( "support_l2" );
00051 static const IdString support_l3( "support_l3" );
00052
00053 Keywords kw( keywords() );
00054 for_( it, kw.begin(), kw.end() )
00055 {
00056 if ( *it == support_unsupported )
00057 return VendorSupportUnsupported;
00058 if ( *it == support_acc )
00059 return VendorSupportACC;
00060 if ( *it == support_l1 )
00061 return VendorSupportLevel1;
00062 if ( *it == support_l2 )
00063 return VendorSupportLevel2;
00064 if ( *it == support_l3 )
00065 return VendorSupportLevel3;
00066 }
00067 return VendorSupportUnknown;
00068 }
00069
00070 bool Package::maybeUnsupported() const
00071 {
00072 if ( ( vendorSupport() == VendorSupportUnknown ) ||
00073 ( vendorSupport() == VendorSupportACC ) ||
00074 ( vendorSupport() == VendorSupportUnsupported ) )
00075 return true;
00076 return false;
00077 }
00078
00079 Changelog Package::changelog() const
00080 {
00081 Target_Ptr target( getZYpp()->getTarget() );
00082 if ( ! target )
00083 {
00084 ERR << "Target not initialized. Changelog is not available." << std::endl;
00085 return Changelog();
00086 }
00087
00088 if ( repository().isSystemRepo() )
00089 {
00090 target::rpm::RpmHeader::constPtr header;
00091 target->rpmDb().getData(name(), header);
00092 return header ? header->tag_changelog() : Changelog();
00093 }
00094 WAR << "changelog is not available for uninstalled packages" << std::endl;
00095 return Changelog();
00096 }
00097
00098 std::string Package::buildhost() const
00099 { return lookupStrAttribute( sat::SolvAttr::buildhost ); }
00100
00101 std::string Package::distribution() const
00102 { return lookupStrAttribute( sat::SolvAttr::distribution ); }
00103
00104 std::string Package::license() const
00105 { return lookupStrAttribute( sat::SolvAttr::license ); }
00106
00107 std::string Package::packager() const
00108 { return lookupStrAttribute( sat::SolvAttr::packager ); }
00109
00110 std::string Package::group() const
00111 { return lookupStrAttribute( sat::SolvAttr::group ); }
00112
00113 Package::Keywords Package::keywords() const
00114 { return Keywords( sat::SolvAttr::keywords, satSolvable() ); }
00115
00116 std::string Package::url() const
00117 { return lookupStrAttribute( sat::SolvAttr::url ); }
00118
00119 ByteCount Package::sourcesize() const
00120 { return lookupNumAttribute( sat::SolvAttr::sourcesize ); }
00121
00122 std::list<std::string> Package::authors() const
00123 {
00124 std::list<std::string> ret;
00125 str::split( lookupStrAttribute( sat::SolvAttr::authors ), std::back_inserter(ret), "\n" );
00126 return ret;
00127 }
00128
00129 Package::FileList Package::filelist() const
00130 { return FileList( sat::SolvAttr::filelist, satSolvable() ); }
00131
00132 CheckSum Package::checksum() const
00133 { return lookupCheckSumAttribute( sat::SolvAttr::checksum ); }
00134
00135 OnMediaLocation Package::location() const
00136 { return lookupLocation(); }
00137
00138 std::string Package::sourcePkgName() const
00139 {
00140
00141 sat::detail::IdType id( lookupIdAttribute( sat::SolvAttr::sourcename ) );
00142 return id ? IdString( id ).asString() : name();
00143 }
00144
00145 Edition Package::sourcePkgEdition() const
00146 {
00147
00148 sat::detail::IdType id( lookupIdAttribute( sat::SolvAttr::sourceevr ) );
00149 return id ? Edition( id ) : edition();
00150 }
00151
00152 std::string Package::sourcePkgType() const
00153 { return lookupStrAttribute( sat::SolvAttr::sourcearch ); }
00154
00155 std::string Package::sourcePkgLongName() const
00156 { return str::form( "%s-%s.%s", sourcePkgName().c_str(), sourcePkgEdition().c_str(), sourcePkgType().c_str() ); }
00157
00158
00160 }