From 95b75827695079d671098ac24d2c81eb04b4b098 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sun, 25 Oct 2015 17:06:56 +0100 Subject: [PATCH] db format 13, pkgbase actually stored --- ChangeLog | 5 +++++ NEWS | 4 ++++ db.cpp | 11 +++++++++++ db.h | 1 + db_format.cpp | 10 ++++++++-- db_json.cpp | 4 ++++ package.h | 5 +++-- 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b5c3894..cda859f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-10-25 Blub + + * DB version 13: store pkgbase + * print pkgbase with -Iv + 2015-10-25 Blub (0.1.9) * released diff --git a/NEWS b/NEWS index 8af97a3..fb4bc87 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +2015-XX-YY Release 0.1.10 + - DB version 13: store pkgbase + - print pkgbase with -Iv + 2015-10-25 Release 0.1.9 - new filter: -fcontains - DB version 12: storing makedepends, new dependency list format: a tuple diff --git a/db.cpp b/db.cpp index 5cc7c21..8bdaa14 100644 --- a/db.cpp +++ b/db.cpp @@ -35,6 +35,7 @@ DB::DB(const Config& optconfig) contains_check_depends_ = false; contains_groups_ = false; contains_filelists_ = false; + contains_pkgbase_ = false; strict_linking_ = false; } @@ -80,6 +81,12 @@ bool DB::WipePackages() { return false; objects_.clear(); packages_.clear(); + contains_package_depends_ = false; + contains_make_depends_ = false; + contains_check_depends_ = false; + contains_groups_ = false; + contains_filelists_ = false; + contains_pkgbase_ = false; return true; } @@ -230,6 +237,8 @@ bool DB::InstallPackage(Package* &&pkg) { contains_groups_ = true; if (pkg->filelist_.size()) contains_filelists_ = true; + if (!pkg->pkgbase_.empty()) + contains_pkgbase_ = true; const StringList *libpaths = GetPackageLibPath(pkg); @@ -789,6 +798,8 @@ void DB::ShowPackages(bool filter_broken, else printf(" -> %s - %s\n", pkg->name_.c_str(), pkg->version_.c_str()); if (config_.verbosity_ >= 1) { + if (!pkg->pkgbase_.empty()) + printf(" package base: %s\n", pkg->pkgbase_.c_str()); for (auto &grp : pkg->groups_) printf(" is in group: %s\n", grp.c_str()); ShowDependList(" depends on: %s%s\n", pkg->depends_); diff --git a/db.h b/db.h index b85f26b..70d1455 100644 --- a/db.h +++ b/db.h @@ -28,6 +28,7 @@ struct DB { bool contains_check_depends_; bool contains_groups_; bool contains_filelists_; + bool contains_pkgbase_; // } DB() = delete; diff --git a/db_format.cpp b/db_format.cpp index 92cc40d..c1f6181 100644 --- a/db_format.cpp +++ b/db_format.cpp @@ -18,7 +18,7 @@ namespace pkgdepdb { // version -uint16_t DB::CURRENT = 12; +uint16_t DB::CURRENT = 13; // magic header static const char @@ -493,6 +493,8 @@ static bool write_pkg(SerialOut &out, Package *pkg, // Now serialize the actual package data: out <= pkg->name_ <= pkg->version_; + if (hdrver >= 13) + out <= pkg->pkgbase_; if (!write_objlist(out, pkg->objects_)) return false; @@ -576,6 +578,8 @@ static bool read_pkg(SerialIn &in, Package *&pkg, // Now serialize the actual package data: in >= pkg->name_ >= pkg->version_; + if (hdrver >= 13) + in >= pkg->pkgbase_; if (!read_objlist(in, pkg->objects_, config)) return false; for (auto &o : pkg->objects_) @@ -661,7 +665,9 @@ static bool db_store(DB *db, const string& filename) { hdr.flags |= DBFlags::FileLists; // Figure out which database format version this will be - if (db->contains_check_depends_) + if (db->contains_pkgbase_) + hdr.version = 13; + else if (db->contains_check_depends_) hdr.version = 12; else if (db->contains_make_depends_) hdr.version = 10; diff --git a/db_json.cpp b/db_json.cpp index 756558f..77e1f25 100644 --- a/db_json.cpp +++ b/db_json.cpp @@ -85,6 +85,10 @@ void DB::ShowPackages_json(bool filter_broken, printf(",\n\t\t\t\"version\": "); json_quote(stdout, pkg->version_); if (config_.verbosity_ >= 1) { + if (!pkg->pkgbase_.empty()) { + printf(",\n\t\t\t\"pkgbase\": "); + json_quote(stdout, pkg->pkgbase_); + } if (!pkg->groups_.empty()) { printf(",\n\t\t\t\"groups\": ["); const char *sep = "\n\t\t\t\t"; diff --git a/package.h b/package.h index ee02aab..affb45d 100644 --- a/package.h +++ b/package.h @@ -23,8 +23,9 @@ struct Package { StringList filelist_; // DB version 11: - string description_; - string pkgbase_; + string description_; // not stored + string pkgbase_; // DB version 13 + // not stored: std::map> info_; // generic info - everything not caught above