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