00001
00002
00003
00004
00005
00006
00007
00008
00015 #include <zypp/parser/yum/YUMParserData.h>
00016
00017 using namespace std;
00018 namespace zypp {
00019 namespace parser {
00020 namespace yum {
00021
00022 YUMDependency::YUMDependency()
00023 { }
00024
00025 YUMDependency::YUMDependency(const std::string& kind,
00026 const std::string& name,
00027 const std::string& flags,
00028 const std::string& epoch,
00029 const std::string& ver,
00030 const std::string& rel,
00031 const std::string& pre)
00032 : kind(kind),
00033 name(name),
00034 flags(flags),
00035 epoch(epoch),
00036 ver(ver),
00037 rel(rel),
00038 pre(pre)
00039 { };
00040
00041 YUMDependency::YUMDependency(const std::string& kind,
00042 const std::string& encoded)
00043 : kind(kind),
00044 encoded(encoded)
00045 { };
00046
00047 bool YUMDependency::isEncoded() const
00048 {
00049 return !encoded.empty();
00050 }
00051
00052 YUMDirSize::YUMDirSize()
00053 { }
00054
00055 YUMDirSize::YUMDirSize(const std::string& path,
00056 const std::string& sizeKByte,
00057 const std::string& fileCount)
00058 : path(path), sizeKByte(sizeKByte), fileCount(fileCount)
00059 { }
00060
00061 YUMRepomdData::YUMRepomdData()
00062 { }
00063
00064 YUMPrimaryData::YUMPrimaryData()
00065 : installOnly( false )
00066 { }
00067
00068 FileData::FileData()
00069 { }
00070
00071 YUMPatchData::YUMPatchData()
00072 : rebootNeeded( false )
00073 , packageManager( false )
00074 { }
00075
00076 FileData::FileData(const std::string &name,
00077 const std::string &type)
00078 : name(name), type(type)
00079 { }
00080
00081
00082 YUMGroupData::YUMGroupData()
00083 { }
00084
00085 YUMPatternData::YUMPatternData()
00086 { }
00087
00088 MetaPkg::MetaPkg()
00089 { }
00090
00091 MetaPkg::MetaPkg(const std::string& type,
00092 const std::string& name)
00093 : type(type), name(name)
00094 { }
00095
00096 PackageReq::PackageReq()
00097 { }
00098
00099 PackageReq::PackageReq(const std::string& type,
00100 const std::string& epoch,
00101 const std::string& ver,
00102 const std::string& rel,
00103 const std::string& name)
00104 : type(type), epoch(epoch), ver(ver), rel(rel), name(name)
00105 { }
00106
00107 ChangelogEntry::ChangelogEntry()
00108 { }
00109
00110 ChangelogEntry::ChangelogEntry(const std::string& author,
00111 const std::string& date,
00112 const std::string& entry)
00113 : author(author), date(date), entry(entry)
00114 { }
00115
00116
00117 YUMFileListData::YUMFileListData()
00118 { }
00119
00120 YUMOtherData::YUMOtherData()
00121 { }
00122
00123
00124
00125
00126 IMPL_PTR_TYPE(YUMRepomdData);
00127 IMPL_PTR_TYPE(YUMPrimaryData);
00128 IMPL_PTR_TYPE(YUMGroupData);
00129 IMPL_PTR_TYPE(YUMPatternData);
00130 IMPL_PTR_TYPE(YUMFileListData);
00131 IMPL_PTR_TYPE(YUMOtherData);
00132 IMPL_PTR_TYPE(YUMPatchData);
00133 IMPL_PTR_TYPE(YUMPatchesData);
00134 IMPL_PTR_TYPE(YUMProductData);
00135 IMPL_PTR_TYPE(YUMPatchPackage);
00136 IMPL_PTR_TYPE(YUMPatchScript);
00137 IMPL_PTR_TYPE(YUMPatchMessage);
00138
00139
00140
00141 namespace {
00148 template<class T>
00149 ostream& operator<<(ostream &out, const list<T>& aList)
00150 {
00151 typedef typename list<T>::const_iterator IterType;
00152 for (IterType iter = aList.begin();
00153 iter != aList.end();
00154 ++iter) {
00155 if (iter != aList.begin())
00156 out << endl;
00157 operator<<(out,*iter);
00158 }
00159 return out;
00160 }
00161 }
00162
00169 string join(const list<string>& aList,
00170 const string& joiner)
00171 {
00172 string res;
00173 for (list<string>::const_iterator iter = aList.begin();
00174 iter != aList.end();
00175 ++ iter) {
00176 if (iter != aList.begin())
00177 res += joiner;
00178 res += *iter;
00179 }
00180 return res;
00181 }
00182
00183 ostream& operator<<(ostream &out, const YUMDependency& data)
00184 {
00185 if (! data.kind.empty())
00186 out << "[" << data.kind << "] ";
00187 out << data.name << " " << data.flags << " ";
00188 if (! data.epoch.empty())
00189 out << data.epoch << "-";
00190 out << data.ver << "-" << data.rel ;
00191 if (! data.pre.empty() && data.pre != "0")
00192 out << " (pre=" << data.pre << ")";
00193 return out;
00194 }
00195
00196 ostream& operator<<(ostream &out, const YUMDirSize& data)
00197 {
00198 out << data.path
00199 << ": " << data.sizeKByte << " kByte, "
00200 << data.fileCount << " files";
00201 return out;
00202 }
00203
00204 ostream& operator<<(ostream &out, const FileData& data)
00205 {
00206 out << data.name;
00207 if (! data.type.empty()) {
00208 out << ": " << data.type;
00209 }
00210 return out;
00211 }
00212
00213 ostream& operator<<(ostream &out, const MetaPkg& data)
00214 {
00215 out << "type: " << data.type
00216 << ", name: " << data.name;
00217 return out;
00218 }
00219
00220 ostream& operator<<(ostream &out, const PackageReq& data)
00221 {
00222 out << "[" << data.type << "] "
00223 << data.name
00224 << " " << data.epoch
00225 << "-" << data.ver
00226 << "-" << data.rel;
00227 return out;
00228 }
00229
00230 ostream& operator<<(ostream &out, const ChangelogEntry& data)
00231 {
00232 out << data.date
00233 << " - " << data.author << endl
00234 << data.entry;
00235 return out;
00236 }
00237
00238 ostream& operator<<(ostream &out, const YUMRepomdData& data)
00239 {
00240 out << "Repomd Data: " << endl
00241 << " type: '" << data.type << "'" << endl
00242 << " location: '" << data.location << "'" <<endl
00243 << " checksumType: '" << data.checksumType << "'" << endl
00244 << " checksum: '" << data.checksum << "'" << endl
00245 << " timestamp: '" << data.timestamp << "'" << endl
00246 << " openChecksumType: '" << data.openChecksumType << "'" << endl
00247 << " openChecksum: '" << data.openChecksum << "'" << endl;
00248 return out;
00249 }
00250
00251 ostream& operator<<(ostream &out, const YUMPrimaryData& data)
00252 {
00253 out << "-------------------------------------------------" << endl
00254 << "Primary Data: " << endl
00255 << "name: '" << data.name << "'" << endl
00256 << "type: '" << data.type << "'" << endl
00257 << " arch: '" << data.arch << "'" << endl
00258 << " ver: '" << data.ver << "'" << endl
00259 << "checksumType: '" << data.checksumType << "'" << endl
00260 << "checksumPkgid: '" << data.checksumPkgid << "'" << endl
00261 << "checksum: '" << data.checksum << "'" << endl
00262 << "summary: '" << data.summary << "'" << endl
00263 << "description: '" << data.description << "'" << endl
00264 << "packager: '" << data.packager << "'" << endl
00265 << "url: '" << data.url << "'" << endl
00266 << "timeFile: '" << data.timeFile << "'" << endl
00267 << "timeBuild: '" << data.timeBuild << "'" << endl
00268 << "sizePackage: '" << data.sizePackage << "'" << endl
00269 << "sizeInstalled: '" << data.sizeInstalled << "'" << endl
00270 << "sizeArchive: '" << data.sizeArchive << "'" << endl
00271 << "location: '" << data.location << "'" << endl
00272 << "license: '" << data.license << "'" << endl
00273 << "vendor: '" << data.vendor << "'" << endl
00274 << "group: '" << data.group << "'" << endl
00275 << "buildhost: '" << data.buildhost << "'" << endl
00276 << "sourcerpm: '" << data.sourcerpm << "'" << endl
00277 << "headerStart: '" << data.headerStart << "'" << endl
00278 << "headerEnd: '" << data.headerEnd << "'" << endl
00279 << "provides:" << endl
00280 << data.provides << endl
00281 << "conflicts:" << endl
00282 << data.conflicts << endl
00283 << "obsoletes:" << endl
00284 << data.obsoletes << endl
00285 << "requires:" << endl
00286 << data.requires << endl
00287 << "recommends:" << endl
00288 << data.recommends << endl
00289 << "suggests:" << endl
00290 << data.suggests << endl
00291 << "supplements:" << endl
00292 << data.supplements << endl
00293 << "enhances:" << endl
00294 << data.enhances << endl
00295 << "files:" << endl
00296 << data.files << endl
00297 << "authors: " << join(data.authors,", ") << endl
00298 << "keywords: " << join(data.keywords,", ") << endl
00299 << "media: " << data.media << endl
00300 << "dirsizes: " << endl
00301 << data.dirSizes << endl
00302 << "freshens: " << endl
00303 << data.freshens << endl
00304 << "install-only: '" << data.installOnly << "'" << endl
00305 << "License to confirm:" << endl
00306 << data.license_to_confirm << endl;
00307 return out;
00308 }
00309
00310 ostream& operator<<(ostream &out, const YUMGroupData& data)
00311 {
00312 out << "-------------------------------------------------" << endl
00313 << "Group Data: " << endl
00314 << "group-id: '" << data.groupId << "'" << endl
00315 << "name:" << endl
00316 << data.name << endl
00317 << "default: '" << data.default_ << "'" << endl
00318 << "user-visible: '" << data.userVisible << "'" << endl
00319 << "description:" << endl
00320 << data.description << endl
00321 << "grouplist:" << endl
00322 << data.grouplist << endl
00323 << "packageList:" << endl
00324 << data.packageList << endl;
00325 return out;
00326 }
00327
00328 ostream& operator<<(ostream &out, const YUMPatternData& data)
00329 {
00330 out << "-------------------------------------------------" << endl
00331 << "Pattern Data: " << endl
00332 << "name:" << data.name << endl
00333 << "summary: '" << data.summary << "'" << endl
00334 << "default: '" << data.default_ << "'" << endl
00335 << "user-visible: '" << data.userVisible << "'" << endl
00336 << "description:" << endl << data.description << endl
00337 << "category: " << data.category << endl
00338 << "icon: " << data.icon << endl
00339 << "script: " << data.script << endl
00340 << "provides:" << endl << data.provides << endl
00341 << "conflicts:" << endl << data.conflicts << endl
00342 << "obsoletes:" << endl << data.obsoletes << endl
00343 << "requires:" << endl << data.requires << endl
00344 << "recommends:" << endl << data.recommends << endl
00345 << "suggests:" << endl << data.suggests << endl
00346 << "supplements:" << endl << data.supplements << endl
00347 << "enhances:" << endl << data.enhances << endl
00348 << "freshens: " << endl << data.freshens << endl;
00349 return out;
00350 }
00351
00352 ostream& operator<<(ostream &out, const YUMFileListData& data)
00353 {
00354 out << "-------------------------------------------------" << endl
00355 << "File List: " << endl
00356 << "pkgid: " << data.pkgId << endl
00357 << "package: " << data.name << " "
00358 << data.epoch << "-" << data.ver << "-" << data.rel << endl
00359 << "files:" << endl
00360 << data.files << endl;
00361 return out;
00362 }
00363
00364 ostream& operator<<(ostream& out, const YUMOtherData& data)
00365 {
00366 out << "-------------------------------------------------" << endl
00367 << "Other: " << endl
00368 << "pkgid: " << data.pkgId
00369 << "package: " << data.name << " "
00370 << data.epoch << "-" << data.ver << "-" << data.rel << endl
00371 << "Changelog:" << endl
00372 << data.changelog << endl;
00373 return out;
00374 }
00375
00376 ostream& operator<<(ostream &out, const YUMPatchData& data)
00377 {
00378 out << "-------------------------------------------------" << endl
00379 << "Patch Data: " << endl
00380 << " patch ID: " << data.patchId << endl
00381 << " timestamp: '" << data.timestamp << "'" << endl
00382 << " engine: '" << data.engine << "'" << endl
00383 << " name: " << data.name << endl
00384 << " summary: " << data.summary << endl
00385 << " description: " << data.description << endl
00386 << " license to confirm:" << endl
00387 << data.license_to_confirm << endl
00388 << " epoch: " << data.epoch << endl
00389 << " version: " << data.ver << endl
00390 << " release: " << data.rel << endl
00391 << " architecture: " << data.arch << endl
00392 << " provides: " << data.provides << endl
00393 << " conflicts: " << data.conflicts << endl
00394 << " obsoletes: " << data.obsoletes << endl
00395 << " freshens: " << data.freshens << endl
00396 << " requires: " << data.requires << endl
00397 << " recommends:" << endl << data.recommends << endl
00398 << " suggests:" << endl << data.suggests << endl
00399 << " supplements:" << endl << data.supplements << endl
00400 << " enhances:" << endl << data.enhances << endl
00401 << " category: " << data.category << endl
00402 << " reboot needed: " << data.rebootNeeded << endl
00403 << " affects package manager: " << data.packageManager << endl
00404 << " update script: " << data.updateScript << endl
00405 << " atoms:" << endl
00406 << data.atoms;
00407 return out;
00408 }
00409
00410 ostream& operator<<(ostream &out, const YUMPatchesData& data)
00411 {
00412 out << "-------------------------------------------------" << endl
00413 << "Patches Entry Data: " << endl
00414 << " patch ID: " << data.id << endl
00415 << " location: " << data.location << endl
00416 << " checksumType: '" << data.checksumType << "'" << endl
00417 << " checksum: '" << data.checksum << "'" << endl;
00418 return out;
00419 }
00420
00421 ostream& operator<<(ostream &out, const YUMProductData& data)
00422 {
00423 out << "-------------------------------------------------" << endl
00424 << "Product Data: " << endl
00425 << " type: " << data.type << endl
00426 << " vendor: " << data.vendor << endl
00427 << " name: " << data.name << endl
00428 << " display name: " << data.summary << endl
00429 << " short name: " << data.short_name << endl
00430 << " description: " << data.description << endl
00431 << " epoch: " << data.epoch << endl
00432 << " version: " << data.ver << endl
00433 << " release: " << data.rel << endl
00434 << " provides: " << data.provides << endl
00435 << " conflicts: " << data.conflicts << endl
00436 << " obsoletes: " << data.obsoletes << endl
00437 << " freshens: " << data.freshens << endl
00438 << " requires: " << data.requires << endl
00439 << " recommends:" << endl << data.recommends << endl
00440 << " suggests:" << endl << data.suggests << endl
00441 << " supplements:" << endl << data.supplements << endl
00442 << " enhances:" << endl << data.enhances << endl;
00443 return out;
00444 }
00445
00446 std::ostream& operator<<(std::ostream& out, const zypp::shared_ptr<YUMPatchAtom> data)
00447 {
00448 out << "Atom data" << endl;
00449 switch (data->atomType())
00450 {
00451 case YUMPatchAtom::Package:
00452 out << " atom type: " << "package" << endl
00453 << *zypp::dynamic_pointer_cast<YUMPatchPackage>(data);
00454 break;
00455 case YUMPatchAtom::Message:
00456 out << " atom type: " << "message" << endl
00457 << *zypp::dynamic_pointer_cast<YUMPatchMessage>(data);
00458 break;
00459 case YUMPatchAtom::Script:
00460 out << " atom type: " << "script" << endl
00461 << *zypp::dynamic_pointer_cast<YUMPatchScript>(data);
00462 break;
00463 default:
00464 out << "Unknown atom type" << endl;
00465 }
00466 return out;
00467 }
00468
00469 std::ostream& operator<<(std::ostream& out, const YUMPatchMessage& data)
00470 {
00471 out << "Message Data: " << endl
00472 << " name: " << data.name << endl
00473 << " epoch: " << data.epoch << endl
00474 << " version: " << data.ver << endl
00475 << " release: " << data.rel << endl
00476 << " provides: " << data.provides << endl
00477 << " conflicts: " << data.conflicts << endl
00478 << " obsoletes: " << data.obsoletes << endl
00479 << " freshens: " << data.freshens << endl
00480 << " requires: " << data.requires << endl
00481 << " recommends:" << endl << data.recommends << endl
00482 << " suggests:" << endl << data.suggests << endl
00483 << " supplements:" << endl << data.supplements << endl
00484 << " enhances:" << endl << data.enhances << endl
00485 << " text: " << data.text << endl;
00486 return out;
00487 }
00488
00489 std::ostream& operator<<(std::ostream& out, const YUMPatchScript& data)
00490 {
00491 out << "Script Data: " << endl
00492 << " name: " << data.name << endl
00493 << " epoch: " << data.epoch << endl
00494 << " version: " << data.ver << endl
00495 << " release: " << data.rel << endl
00496 << " provides: " << data.provides << endl
00497 << " conflicts: " << data.conflicts << endl
00498 << " obsoletes: " << data.obsoletes << endl
00499 << " freshens: " << data.freshens << endl
00500 << " requires: " << data.requires << endl
00501 << " recommends:" << endl << data.recommends << endl
00502 << " suggests:" << endl << data.suggests << endl
00503 << " supplements:" << endl << data.supplements << endl
00504 << " enhances:" << endl << data.enhances << endl
00505 << " do script: " << data.do_script << endl
00506 << " undo script: " << data.undo_script << endl
00507 << " do script location: " << data.do_location << endl
00508 << " undo script location: " << data.undo_location << endl
00509 << " do script media: " << data.do_media << endl
00510 << " undo script media: " << data.undo_media << endl
00511 << " do checksum type: " << data.do_checksum_type << endl
00512 << " do checksum: " << data.do_checksum << endl
00513 << " undo checksum type: " << data.undo_checksum_type << endl
00514 << " undo checksum: " << data.undo_checksum << endl;
00515 return out;
00516 }
00517
00518 std::ostream& operator<<(std::ostream& out, const YUMPatchPackage& data)
00519 {
00520 out << "Package Data: " << endl
00521 << " name: '" << data.name << "'" << endl
00522 << " type: '" << data.type << "'" << endl
00523 << " arch: '" << data.arch << "'" << endl
00524 << " ver: '" << data.ver << "'" << endl
00525 << " checksumType: '" << data.checksumType << "'" << endl
00526 << " checksumPkgid: '" << data.checksumPkgid << "'" << endl
00527 << " checksum: '" << data.checksum << "'" << endl
00528 << " summary: '" << data.summary << "'" << endl
00529 << " description: '" << data.description << "'" << endl
00530 << " packager: '" << data.packager << "'" << endl
00531 << " url: '" << data.url << "'" << endl
00532 << " timeFile: '" << data.timeFile << "'" << endl
00533 << " timeBuild: '" << data.timeBuild << "'" << endl
00534 << " sizePackage: '" << data.sizePackage << "'" << endl
00535 << " sizeInstalled: '" << data.sizeInstalled << "'" << endl
00536 << " sizeArchive: '" << data.sizeArchive << "'" << endl
00537 << " location: '" << data.location << "'" << endl
00538 << " license: '" << data.license << "'" << endl
00539 << " license to confirm:" << endl
00540 << data.license_to_confirm << endl
00541 << " vendor: '" << data.vendor << "'" << endl
00542 << " group: '" << data.group << "'" << endl
00543 << " buildhost: '" << data.buildhost << "'" << endl
00544 << " sourcerpm: '" << data.sourcerpm << "'" << endl
00545 << " headerStart: '" << data.headerStart << "'" << endl
00546 << " headerEnd: '" << data.headerEnd << "'" << endl
00547 << " provides:" << endl
00548 << data.provides << endl
00549 << " conflicts:" << endl
00550 << data.conflicts << endl
00551 << " obsoletes:" << endl
00552 << data.obsoletes << endl
00553 << " requires:" << endl
00554 << data.requires << endl
00555 << " recommends:" << endl
00556 << data.recommends << endl
00557 << " suggests:" << endl
00558 << data.suggests << endl
00559 << " supplements:" << endl
00560 << data.supplements << endl
00561 << " enhances:" << endl
00562 << data.enhances << endl
00563 << " files:" << endl
00564 << data.files << endl
00565 << " authors: " << join(data.authors,", ") << endl
00566 << " keywords: " << join(data.keywords,", ") << endl
00567 << " media: " << data.media << endl
00568 << " dirsizes: " << endl
00569 << data.dirSizes << endl
00570 << " freshens: " << endl
00571 << data.freshens << endl
00572 << " install-only: '" << data.installOnly << "'" << endl
00573 << " files:" << endl
00574 << data.files << endl
00575 << " Changelog:" << endl
00576 << data.changelog << endl
00577 << data.plainRpms
00578 << data.patchRpms
00579 << data.deltaRpms;
00580 return out;
00581 }
00582
00583 std::ostream& operator<<(std::ostream& out, const YUMBaseVersion& data)
00584 {
00585 out << " Base version:" << endl
00586 << " epoch: " << data.epoch << endl
00587 << " version: " << data.ver << endl
00588 << " release: " << data.rel << endl
00589 << " MD5: " << data.md5sum << endl
00590 << " build time: " << data.buildtime << endl
00591 << " source info: " << data.source_info << endl;
00592 return out;
00593 }
00594
00595 std::ostream& operator<<(std::ostream& out, const YUMPlainRpm& data)
00596 {
00597 out << " Plain RPM:" << endl
00598 << " arch: " << data.arch << endl
00599 << " filename: " << data.filename << endl
00600 << " download size: " << data.downloadsize << endl
00601 << " MD5: " << data.md5sum << endl
00602 << " build time: " << data.buildtime << endl;
00603 return out;
00604 }
00605
00606 std::ostream& operator<<(std::ostream& out, const YUMPatchRpm& data)
00607 {
00608 out << " Patch RPM:" << endl
00609 << " arch: " << data.arch << endl
00610 << " filename: " << data.filename << endl
00611 << " location: '" << data.location << "'" <<endl
00612 << " media: " << data.media << endl
00613 << " checksumType: '" << data.checksumType << "'" << endl
00614 << " checksum: '" << data.checksum << "'" << endl
00615 << " download size: " << data.downloadsize << endl
00616 << " MD5: " << data.md5sum << endl
00617 << " build time: " << data.buildtime << endl
00618 << data.baseVersions;
00619 return out;
00620 }
00621
00622 std::ostream& operator<<(std::ostream& out, const YUMDeltaRpm& data)
00623 {
00624 out << " Delta RPM:" << endl
00625 << " arch: " << data.arch << endl
00626 << " filename: " << data.filename << endl
00627 << " location: '" << data.location << "'" <<endl
00628 << " media: " << data.media << endl
00629 << " checksumType: '" << data.checksumType << "'" << endl
00630 << " checksum: '" << data.checksum << "'" << endl
00631 << " download size: " << data.downloadsize << endl
00632 << " MD5: " << data.md5sum << endl
00633 << " build time: " << data.buildtime << endl
00634 << data.baseVersion << endl;
00635 return out;
00636 }
00637
00638 }
00639 }
00640 }