From 29aaec78ef16b76aa986d6b4d36e3a022743ed9d Mon Sep 17 00:00:00 2001 From: Duncan Mac-Vicar P Date: Wed, 24 May 2006 14:57:25 +0000 Subject: [PATCH] - implement timestamp for YUM and SuseTags - actually use the license to confirm in yum patches - add prerequires tag in yum optonally to the bad designed and nonintuitive pre=1 --- zypp/parser/yum/YUMParserData.h | 1 + zypp/parser/yum/YUMPatchParser.cc | 12 ++++++++++++ zypp/parser/yum/YUMPatternParser.cc | 3 +++ zypp/parser/yum/YUMPrimaryParser.cc | 3 +++ zypp/parser/yum/YUMProductParser.cc | 3 +++ zypp/source/susetags/SuseTagsImpl.cc | 5 +++++ zypp/source/susetags/SuseTagsImpl.h | 2 +- zypp/source/yum/YUMPatchImpl.cc | 1 + zypp/source/yum/YUMSourceImpl.cc | 12 ++++++++++++ zypp/source/yum/YUMSourceImpl.h | 1 + 10 files changed, 42 insertions(+), 1 deletion(-) diff --git a/zypp/parser/yum/YUMParserData.h b/zypp/parser/yum/YUMParserData.h index 4010baf..d73e23b 100644 --- a/zypp/parser/yum/YUMParserData.h +++ b/zypp/parser/yum/YUMParserData.h @@ -171,6 +171,7 @@ namespace zypp { std::list obsoletes; std::list freshens; std::list requires; + std::list prerequires; std::list recommends; std::list suggests; std::list supplements; diff --git a/zypp/parser/yum/YUMPatchParser.cc b/zypp/parser/yum/YUMPatchParser.cc index 0dbe82a..3b0e073 100644 --- a/zypp/parser/yum/YUMPatchParser.cc +++ b/zypp/parser/yum/YUMPatchParser.cc @@ -120,6 +120,9 @@ namespace zypp { else if (name == "obsoletes") { prim.parseDependencyEntries(& patchPtr->obsoletes, child); } + else if (name == "prerequires") { + prim.parseDependencyEntries(& patchPtr->prerequires, child); + } else if (name == "requires") { prim.parseDependencyEntries(& patchPtr->requires, child); } @@ -238,6 +241,9 @@ XXX << "parseAtomsNode(" << name << ")" << endl; else if (name == "obsoletes") { prim.parseDependencyEntries(& dataPtr->obsoletes, child); } + else if (name == "prerequires") { + prim.parseDependencyEntries(& dataPtr->prerequires, child); + } else if (name == "requires") { prim.parseDependencyEntries(& dataPtr->requires, child); } @@ -593,6 +599,9 @@ XXX << "parsePackageNode(" << name << ")" << endl; else if (name == "requires") { prim.parseDependencyEntries(& script->requires, child); } + else if (name == "prerequires") { + prim.parseDependencyEntries(& script->prerequires, child); + } else if (name == "recommends") { prim.parseDependencyEntries(& script->recommends, child); } @@ -652,6 +661,9 @@ XXX << "parsePackageNode(" << name << ")" << endl; else if (name == "obsoletes") { prim.parseDependencyEntries(& message->obsoletes, child); } + else if (name == "prerequires") { + prim.parseDependencyEntries(& message->prerequires, child); + } else if (name == "requires") { prim.parseDependencyEntries(& message->requires, child); } diff --git a/zypp/parser/yum/YUMPatternParser.cc b/zypp/parser/yum/YUMPatternParser.cc index 5f268a7..17a0117 100644 --- a/zypp/parser/yum/YUMPatternParser.cc +++ b/zypp/parser/yum/YUMPatternParser.cc @@ -96,6 +96,9 @@ namespace zypp { else if (name == "obsoletes") { prim.parseDependencyEntries(& dataPtr->obsoletes, child); } + else if (name == "prerequires") { + prim.parseDependencyEntries(& dataPtr->prerequires, child); + } else if (name == "requires") { prim.parseDependencyEntries(& dataPtr->requires, child); } diff --git a/zypp/parser/yum/YUMPrimaryParser.cc b/zypp/parser/yum/YUMPrimaryParser.cc index b2d2c56..5619a0d 100644 --- a/zypp/parser/yum/YUMPrimaryParser.cc +++ b/zypp/parser/yum/YUMPrimaryParser.cc @@ -195,6 +195,9 @@ namespace zypp { else if (name == "obsoletes") { parseDependencyEntries(& dataPtr->obsoletes, child); } + else if (name == "prerequires") { + parseDependencyEntries(& dataPtr->prerequires, child); + } else if (name == "requires") { parseDependencyEntries(& dataPtr->requires, child); } diff --git a/zypp/parser/yum/YUMProductParser.cc b/zypp/parser/yum/YUMProductParser.cc index 235492e..9078534 100644 --- a/zypp/parser/yum/YUMProductParser.cc +++ b/zypp/parser/yum/YUMProductParser.cc @@ -100,6 +100,9 @@ namespace zypp { else if (name == "obsoletes") { prim.parseDependencyEntries(& productPtr->obsoletes, child); } + else if (name == "prerequires") { + prim.parseDependencyEntries(& productPtr->prerequires, child); + } else if (name == "requires") { prim.parseDependencyEntries(& productPtr->requires, child); } diff --git a/zypp/source/susetags/SuseTagsImpl.cc b/zypp/source/susetags/SuseTagsImpl.cc index be18b9f..9d54a7c 100644 --- a/zypp/source/susetags/SuseTagsImpl.cc +++ b/zypp/source/susetags/SuseTagsImpl.cc @@ -358,6 +358,11 @@ namespace zypp std::string SuseTagsImpl::unique_id (void) const { return _media_id; } + Date SuseTagsImpl::timestamp() const + { + return PathInfo(_content_file).mtime(); + } + void SuseTagsImpl::readContentFile() { Pathname p; diff --git a/zypp/source/susetags/SuseTagsImpl.h b/zypp/source/susetags/SuseTagsImpl.h index d01ac95..3742d6e 100644 --- a/zypp/source/susetags/SuseTagsImpl.h +++ b/zypp/source/susetags/SuseTagsImpl.h @@ -82,7 +82,7 @@ namespace zypp */ static std::string typeString(void) { return "YaST"; } - + virtual Date timestamp() const; virtual unsigned numberOfMedia(void) const; virtual std::string vendor (void) const; virtual const std::list publicKeys(); diff --git a/zypp/source/yum/YUMPatchImpl.cc b/zypp/source/yum/YUMPatchImpl.cc index 6724d9c..42d34a4 100644 --- a/zypp/source/yum/YUMPatchImpl.cc +++ b/zypp/source/yum/YUMPatchImpl.cc @@ -57,6 +57,7 @@ namespace zypp std::string updateScript; _summary = parsed.summary; _description = parsed.description; + _license_to_confirm = parsed.license_to_confirm; #if 0 // not active any more, see YUMSourceImpl::createPatch() // now process the atoms CapFactory _f; diff --git a/zypp/source/yum/YUMSourceImpl.cc b/zypp/source/yum/YUMSourceImpl.cc index 8edbfac..8fdb679 100644 --- a/zypp/source/yum/YUMSourceImpl.cc +++ b/zypp/source/yum/YUMSourceImpl.cc @@ -63,6 +63,11 @@ namespace zypp YUMSourceImpl::YUMSourceImpl() {} + Date YUMSourceImpl::timestamp() const + { + return PathInfo(_repomd_file).mtime(); + } + bool YUMSourceImpl::cacheExists() { bool exists = PathInfo(_cache_dir + "/repodata/repomd.xml").isExist(); @@ -1176,6 +1181,13 @@ namespace zypp _deps[Dep::ENHANCES].insert(createCapability(*it, my_kind)); } + for (std::list::const_iterator it = parsed.prerequires.begin(); + it != parsed.prerequires.end(); + it++) + { + _deps[Dep::PREREQUIRES].insert(createCapability(*it, my_kind)); + } + for (std::list::const_iterator it = parsed.requires.begin(); it != parsed.requires.end(); it++) diff --git a/zypp/source/yum/YUMSourceImpl.h b/zypp/source/yum/YUMSourceImpl.h index 03aafb3..86f7060 100644 --- a/zypp/source/yum/YUMSourceImpl.h +++ b/zypp/source/yum/YUMSourceImpl.h @@ -53,6 +53,7 @@ namespace zypp public: + virtual Date timestamp() const; virtual void storeMetadata(const Pathname & cache_dir_r); virtual std::string type(void) const -- 2.7.4