Toshaan Bharvani
12 months ago
commit
56f4a4e354
5 changed files with 8501 additions and 0 deletions
@ -0,0 +1,89 @@
@@ -0,0 +1,89 @@
|
||||
From 2834747bff215c6f8da4eef2820c29bc05e172e1 Mon Sep 17 00:00:00 2001 |
||||
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com> |
||||
Date: Wed, 7 Sep 2022 09:07:04 +0200 |
||||
Subject: [PATCH] Allow change of arch during security updates with noarch |
||||
(RhBug:2124483) |
||||
|
||||
This matches upgrade behaviour where upgrading from/to noarch is a |
||||
special case and architecture change of a package is allowed |
||||
automatically. |
||||
|
||||
= changelog = |
||||
msg: Allow change of architecture for packages during security updates with noarch involved |
||||
type: security |
||||
resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2124483 |
||||
--- |
||||
libdnf/sack/query.cpp | 34 ++++++++++++++++++++++++---------- |
||||
1 file changed, 24 insertions(+), 10 deletions(-) |
||||
|
||||
diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp |
||||
index 8672275d..205439ec 100644 |
||||
--- a/libdnf/sack/query.cpp |
||||
+++ b/libdnf/sack/query.cpp |
||||
@@ -189,6 +189,13 @@ NameArchSolvableComparator(const Solvable * first, const Solvable * second) |
||||
return first->arch < second->arch; |
||||
} |
||||
|
||||
+static bool |
||||
+NameSolvableComparator(const Solvable * first, const Solvable * second) |
||||
+{ |
||||
+ return first->name < second->name; |
||||
+} |
||||
+ |
||||
+ |
||||
static bool |
||||
NamePrioritySolvableKey(const Solvable * first, const Solvable * second) |
||||
{ |
||||
@@ -1878,11 +1885,14 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) |
||||
std::vector<Solvable *> installed_solvables; |
||||
|
||||
if (cmp_type & HY_UPGRADE) { |
||||
- // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch with: |
||||
- // * some already installed pkg (in other words: some other version of the pkg is already installed) |
||||
- // or |
||||
- // * with pkg that obsoletes some already installed (or to be installed in this transaction) pkg |
||||
- // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong. |
||||
+ // When doing HY_UPGRADE consider only candidate pkgs that: |
||||
+ // * have matching Name and Arch with some already installed pkg |
||||
+ // (in other words: some other version of the pkg is already installed) |
||||
+ // * have matching Name with some already installed pkg and either the candidate or the installed pkg is noarch. |
||||
+ // This matches upgrade behavior where we allow architecture change only when noarch is involved. |
||||
+ // Details: RhBug:2124483, RhBug:2101398 and RhBug:1171543 |
||||
+ // * obsoletes some already installed (or to be installed in this transaction) pkg |
||||
+ // Otherwise a pkg with different Arch than installed (and than noarch) can end up in upgrade set which is wrong. |
||||
// It can result in dependency issues, reported as: RhBug:2088149. |
||||
|
||||
Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES); |
||||
@@ -1893,7 +1903,7 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) |
||||
while ((installed_id = installed.pImpl->result->next(installed_id)) != -1) { |
||||
installed_solvables.push_back(pool_id2solvable(pool, installed_id)); |
||||
} |
||||
- std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator); |
||||
+ std::sort(installed_solvables.begin(), installed_solvables.end(), NameSolvableComparator); |
||||
|
||||
Query obsoletes(sack, ExcludeFlags::IGNORE_EXCLUDES); |
||||
obsoletes.addFilter(HY_PKG, HY_EQ, resultPset); |
||||
@@ -1915,12 +1925,16 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) |
||||
} |
||||
|
||||
Id id = -1; |
||||
- // Add to candidates resultPset pkgs that match name and arch with some already installed pkg |
||||
+ // Add to candidates resultPset pkgs that match name and arch with some already installed pkg or match name and either the installed or candidate are NOARCH |
||||
while ((id = resultPset->next(id)) != -1) { |
||||
Solvable * s = pool_id2solvable(pool, id); |
||||
- auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator); |
||||
- if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) { |
||||
- candidates.push_back(s); |
||||
+ auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameSolvableComparator); |
||||
+ while (low != installed_solvables.end() && (*low)->name == s->name) { |
||||
+ if (s->arch == (*low)->arch || s->arch == ARCH_NOARCH || (*low)->arch == ARCH_NOARCH) { |
||||
+ candidates.push_back(s); |
||||
+ break; |
||||
+ } |
||||
+ ++low; |
||||
} |
||||
} |
||||
|
||||
-- |
||||
2.37.3 |
||||
|
@ -0,0 +1,316 @@
@@ -0,0 +1,316 @@
|
||||
From 659bc22f36c7bf21d86ceb298a1eaaccd5a2a880 Mon Sep 17 00:00:00 2001 |
||||
From: Jaroslav Mracek <jmracek@redhat.com> |
||||
Date: Fri, 24 Mar 2023 13:22:41 +0100 |
||||
Subject: [PATCH] Split modular packages to to repositories according their |
||||
origin |
||||
|
||||
It will help to provide information about repository origin to libsolv |
||||
modular error messages. |
||||
--- |
||||
libdnf/module/ModulePackageContainer.cpp | 42 ++++++++++++++---------- |
||||
1 file changed, 24 insertions(+), 18 deletions(-) |
||||
|
||||
diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp |
||||
index ccfa249d..4879130f 100644 |
||||
--- a/libdnf/module/ModulePackageContainer.cpp |
||||
+++ b/libdnf/module/ModulePackageContainer.cpp |
||||
@@ -286,13 +286,6 @@ ModulePackageContainer::ModulePackageContainer(bool allArch, std::string install |
||||
pImpl->persistDir = dir; |
||||
} |
||||
|
||||
- Pool * pool = dnf_sack_get_pool(pImpl->moduleSack); |
||||
- HyRepo hrepo = hy_repo_create("available"); |
||||
- auto repoImpl = libdnf::repoGetImpl(hrepo); |
||||
- LibsolvRepo *repo = repo_create(pool, "available"); |
||||
- repo->appdata = hrepo; |
||||
- repoImpl->libsolvRepo = repo; |
||||
- repoImpl->needs_internalizing = 1; |
||||
pImpl->installRoot = installRoot; |
||||
g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), |
||||
"/etc/dnf/modules.d", NULL); |
||||
@@ -375,23 +368,36 @@ ModulePackageContainer::add(const std::string &fileContent, const std::string & |
||||
md.addMetadataFromString(fileContent, 0); |
||||
md.resolveAddedMetadata(); |
||||
|
||||
+ LibsolvRepo * repo = nullptr; |
||||
LibsolvRepo * r; |
||||
Id id; |
||||
|
||||
+ // Search whether available repo was already created |
||||
FOR_REPOS(id, r) { |
||||
- if (strcmp(r->name, "available") == 0) { |
||||
- g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), |
||||
- "/etc/dnf/modules.d", NULL); |
||||
- auto packages = md.getAllModulePackages(pImpl->moduleSack, r, repoID, pImpl->modulesV2); |
||||
- for(auto const& modulePackagePtr: packages) { |
||||
- std::unique_ptr<ModulePackage> modulePackage(modulePackagePtr); |
||||
- pImpl->modules.insert(std::make_pair(modulePackage->getId(), std::move(modulePackage))); |
||||
- pImpl->persistor->insert(modulePackagePtr->getName(), path); |
||||
- } |
||||
- |
||||
- return; |
||||
+ if (strcmp(r->name, repoID.c_str()) == 0) { |
||||
+ repo = r; |
||||
} |
||||
} |
||||
+ |
||||
+ // If not created yet, create it |
||||
+ if (!repo) { |
||||
+ Pool * pool = dnf_sack_get_pool(pImpl->moduleSack); |
||||
+ HyRepo hrepo = hy_repo_create(repoID.c_str()); |
||||
+ auto repoImpl = libdnf::repoGetImpl(hrepo); |
||||
+ repo = repo_create(pool, repoID.c_str()); |
||||
+ repo->appdata = hrepo; |
||||
+ repoImpl->libsolvRepo = repo; |
||||
+ repoImpl->needs_internalizing = 1; |
||||
+ } |
||||
+ |
||||
+ // add all modules to repository and pass ownership to module container |
||||
+ g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), "/etc/dnf/modules.d", NULL); |
||||
+ auto packages = md.getAllModulePackages(pImpl->moduleSack, r, repoID, pImpl->modulesV2); |
||||
+ for(auto const& modulePackagePtr: packages) { |
||||
+ std::unique_ptr<ModulePackage> modulePackage(modulePackagePtr); |
||||
+ pImpl->modules.insert(std::make_pair(modulePackage->getId(), std::move(modulePackage))); |
||||
+ pImpl->persistor->insert(modulePackagePtr->getName(), path); |
||||
+ } |
||||
} |
||||
|
||||
Id |
||||
-- |
||||
2.40.1 |
||||
|
||||
|
||||
From e86bc9082e226c7b784c820e9820537cd71afaa0 Mon Sep 17 00:00:00 2001 |
||||
From: Jaroslav Mracek <jmracek@redhat.com> |
||||
Date: Tue, 21 Mar 2023 11:28:43 +0100 |
||||
Subject: [PATCH] Add repoid to solver errors for RPMs (RhBug:2179413) |
||||
|
||||
Repoid is very useful to find a source of the issue. It tells which |
||||
repositories contains problematic packages. |
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2179413 |
||||
--- |
||||
libdnf/goal/Goal.cpp | 101 +++++++++++++---------- |
||||
libdnf/module/ModulePackageContainer.cpp | 2 +- |
||||
tests/hawkey/test_goal.cpp | 14 ++-- |
||||
3 files changed, 64 insertions(+), 53 deletions(-) |
||||
|
||||
diff --git a/libdnf/goal/Goal.cpp b/libdnf/goal/Goal.cpp |
||||
index ebe2fbd1..7def8371 100644 |
||||
--- a/libdnf/goal/Goal.cpp |
||||
+++ b/libdnf/goal/Goal.cpp |
||||
@@ -87,8 +87,8 @@ enum {RULE_DISTUPGRADE=1, RULE_INFARCH, RULE_UPDATE, RULE_JOB, RULE_JOB_UNSUPPOR |
||||
}; |
||||
|
||||
static const std::map<int, const char *> PKG_PROBLEMS_DICT = { |
||||
- {RULE_DISTUPGRADE, M_(" does not belong to a distupgrade repository")}, |
||||
- {RULE_INFARCH, M_(" has inferior architecture")}, |
||||
+ {RULE_DISTUPGRADE, M_("%s from %s does not belong to a distupgrade repository")}, |
||||
+ {RULE_INFARCH, M_("%s from %s has inferior architecture")}, |
||||
{RULE_UPDATE, M_("problem with installed package ")}, |
||||
{RULE_JOB, M_("conflicting requests")}, |
||||
{RULE_JOB_UNSUPPORTED, M_("unsupported request")}, |
||||
@@ -98,24 +98,24 @@ static const std::map<int, const char *> PKG_PROBLEMS_DICT = { |
||||
{RULE_PKG, M_("some dependency problem")}, |
||||
{RULE_BEST_1, M_("cannot install the best update candidate for package ")}, |
||||
{RULE_BEST_2, M_("cannot install the best candidate for the job")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_1, M_("package %s is filtered out by modular filtering")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_2, M_("package %s does not have a compatible architecture")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_3, M_("package %s is not installable")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_4, M_("package %s is filtered out by exclude filtering")}, |
||||
- {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by %s")}, |
||||
- {RULE_PKG_SAME_NAME, M_("cannot install both %s and %s")}, |
||||
- {RULE_PKG_CONFLICTS, M_("package %s conflicts with %s provided by %s")}, |
||||
- {RULE_PKG_OBSOLETES, M_("package %s obsoletes %s provided by %s")}, |
||||
- {RULE_PKG_INSTALLED_OBSOLETES, M_("installed package %s obsoletes %s provided by %s")}, |
||||
- {RULE_PKG_IMPLICIT_OBSOLETES, M_("package %s implicitly obsoletes %s provided by %s")}, |
||||
- {RULE_PKG_REQUIRES, M_("package %s requires %s, but none of the providers can be installed")}, |
||||
- {RULE_PKG_SELF_CONFLICT, M_("package %s conflicts with %s provided by itself")}, |
||||
- {RULE_YUMOBS, M_("both package %s and %s obsolete %s")} |
||||
+ {RULE_PKG_NOT_INSTALLABLE_1, M_("package %s from %s is filtered out by modular filtering")}, |
||||
+ {RULE_PKG_NOT_INSTALLABLE_2, M_("package %s from %s does not have a compatible architecture")}, |
||||
+ {RULE_PKG_NOT_INSTALLABLE_3, M_("package %s from %s is not installable")}, |
||||
+ {RULE_PKG_NOT_INSTALLABLE_4, M_("package %s from %s is filtered out by exclude filtering")}, |
||||
+ {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by %s from %s")}, |
||||
+ {RULE_PKG_SAME_NAME, M_("cannot install both %s from %s and %s from %s")}, |
||||
+ {RULE_PKG_CONFLICTS, M_("package %s from %s conflicts with %s provided by %s from %s")}, |
||||
+ {RULE_PKG_OBSOLETES, M_("package %s from %s obsoletes %s provided by %s from %s")}, |
||||
+ {RULE_PKG_INSTALLED_OBSOLETES, M_("installed package %s obsoletes %s provided by %s from %s")}, |
||||
+ {RULE_PKG_IMPLICIT_OBSOLETES, M_("package %s from %s implicitly obsoletes %s provided by %s from %s")}, |
||||
+ {RULE_PKG_REQUIRES, M_("package %s from %s requires %s, but none of the providers can be installed")}, |
||||
+ {RULE_PKG_SELF_CONFLICT, M_("package %s from %s conflicts with %s provided by itself")}, |
||||
+ {RULE_YUMOBS, M_("both package %s from %s and %s from %s obsolete %s")} |
||||
}; |
||||
|
||||
static const std::map<int, const char *> MODULE_PROBLEMS_DICT = { |
||||
- {RULE_DISTUPGRADE, M_(" does not belong to a distupgrade repository")}, |
||||
- {RULE_INFARCH, M_(" has inferior architecture")}, |
||||
+ {RULE_DISTUPGRADE, M_("%s from %s does not belong to a distupgrade repository")}, |
||||
+ {RULE_INFARCH, M_("%s from %s has inferior architecture")}, |
||||
{RULE_UPDATE, M_("problem with installed module ")}, |
||||
{RULE_JOB, M_("conflicting requests")}, |
||||
{RULE_JOB_UNSUPPORTED, M_("unsupported request")}, |
||||
@@ -125,19 +125,19 @@ static const std::map<int, const char *> MODULE_PROBLEMS_DICT = { |
||||
{RULE_PKG, M_("some dependency problem")}, |
||||
{RULE_BEST_1, M_("cannot install the best update candidate for module ")}, |
||||
{RULE_BEST_2, M_("cannot install the best candidate for the job")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_1, M_("module %s is disabled")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_2, M_("module %s does not have a compatible architecture")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_3, M_("module %s is not installable")}, |
||||
- {RULE_PKG_NOT_INSTALLABLE_4, M_("module %s is disabled")}, |
||||
- {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by module %s")}, |
||||
- {RULE_PKG_SAME_NAME, M_("cannot install both modules %s and %s")}, |
||||
- {RULE_PKG_CONFLICTS, M_("module %s conflicts with %s provided by %s")}, |
||||
- {RULE_PKG_OBSOLETES, M_("module %s obsoletes %s provided by %s")}, |
||||
- {RULE_PKG_INSTALLED_OBSOLETES, M_("installed module %s obsoletes %s provided by %s")}, |
||||
- {RULE_PKG_IMPLICIT_OBSOLETES, M_("module %s implicitly obsoletes %s provided by %s")}, |
||||
- {RULE_PKG_REQUIRES, M_("module %s requires %s, but none of the providers can be installed")}, |
||||
- {RULE_PKG_SELF_CONFLICT, M_("module %s conflicts with %s provided by itself")}, |
||||
- {RULE_YUMOBS, M_("both module %s and %s obsolete %s")} |
||||
+ {RULE_PKG_NOT_INSTALLABLE_1, M_("module %s from %s is disabled")}, |
||||
+ {RULE_PKG_NOT_INSTALLABLE_2, M_("module %s from %s does not have a compatible architecture")}, |
||||
+ {RULE_PKG_NOT_INSTALLABLE_3, M_("module %s from %s is not installable")}, |
||||
+ {RULE_PKG_NOT_INSTALLABLE_4, M_("module %s from %s is disabled")}, |
||||
+ {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by module %s from %s")}, |
||||
+ {RULE_PKG_SAME_NAME, M_("cannot install both modules %s from %s and %s from %s")}, |
||||
+ {RULE_PKG_CONFLICTS, M_("module %s from %s conflicts with %s provided by %s from %s")}, |
||||
+ {RULE_PKG_OBSOLETES, M_("module %s from %s obsoletes %s provided by %s from %s")}, |
||||
+ {RULE_PKG_INSTALLED_OBSOLETES, M_("installed module %s obsoletes %s provided by %s from %s")}, |
||||
+ {RULE_PKG_IMPLICIT_OBSOLETES, M_("module %s from %s implicitly obsoletes %s provided by %s from %s")}, |
||||
+ {RULE_PKG_REQUIRES, M_("module %s from %s requires %s, but none of the providers can be installed")}, |
||||
+ {RULE_PKG_SELF_CONFLICT, M_("module %s from %s conflicts with %s provided by itself")}, |
||||
+ {RULE_YUMOBS, M_("both module %s from %s and %s from %s obsolete %s")} |
||||
}; |
||||
|
||||
static std::string |
||||
@@ -151,9 +151,11 @@ libdnf_problemruleinfo2str(libdnf::PackageSet * modularExclude, Solver *solv, So |
||||
Solvable *ss; |
||||
switch (type) { |
||||
case SOLVER_RULE_DISTUPGRADE: |
||||
- return solvid2str(pool, source) + TM_(problemDict.at(RULE_DISTUPGRADE), 1); |
||||
+ return tfm::format(TM_(problemDict.at(RULE_DISTUPGRADE), 1), solvid2str(pool, source).c_str(), |
||||
+ pool_id2solvable(pool, source)->repo->name); |
||||
case SOLVER_RULE_INFARCH: |
||||
- return solvid2str(pool, source) + TM_(problemDict.at(RULE_INFARCH), 1); |
||||
+ return tfm::format(TM_(problemDict.at(RULE_DISTUPGRADE), 1), solvid2str(pool, source).c_str(), |
||||
+ pool_id2solvable(pool, source)->repo->name); |
||||
case SOLVER_RULE_UPDATE: |
||||
return std::string(TM_(problemDict.at(RULE_UPDATE), 1)) + solvid2str(pool, source); |
||||
case SOLVER_RULE_JOB: |
||||
@@ -176,44 +178,53 @@ libdnf_problemruleinfo2str(libdnf::PackageSet * modularExclude, Solver *solv, So |
||||
ss = pool->solvables + source; |
||||
if (pool_disabled_solvable(pool, ss)) { |
||||
if (modularExclude && modularExclude->has(source)) { |
||||
- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_1), 1), solvid2str(pool, source).c_str()); |
||||
+ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_1), 1), |
||||
+ solvid2str(pool, source).c_str(), pool_id2solvable(pool, source)->repo->name); |
||||
} else { |
||||
- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_4), 1), solvid2str(pool, source).c_str()); |
||||
+ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_4), 1), |
||||
+ solvid2str(pool, source).c_str(), pool_id2solvable(pool, source)->repo->name); |
||||
} |
||||
} |
||||
if (ss->arch && ss->arch != ARCH_SRC && ss->arch != ARCH_NOSRC && |
||||
pool->id2arch && (ss->arch > pool->lastarch || !pool->id2arch[ss->arch])) |
||||
- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_2), 1), solvid2str(pool, source).c_str()); |
||||
- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_3), 1), solvid2str(pool, source).c_str()); |
||||
+ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_2), 1), solvid2str(pool, source).c_str(), |
||||
+ pool_id2solvable(pool, source)->repo->name); |
||||
+ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_3), 1), solvid2str(pool, source).c_str(), |
||||
+ pool_id2solvable(pool, source)->repo->name); |
||||
case SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_NOTHING_PROVIDES_DEP), 1), pool_dep2str(pool, dep), |
||||
- solvid2str(pool, source).c_str()); |
||||
+ solvid2str(pool, source).c_str(), pool_id2solvable(pool, source)->repo->name); |
||||
case SOLVER_RULE_PKG_SAME_NAME: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_SAME_NAME), 1), solvid2str(pool, source).c_str(), |
||||
- solvid2str(pool, target).c_str()); |
||||
+ pool_id2solvable(pool, source)->repo->name, solvid2str(pool, target).c_str(), |
||||
+ pool_id2solvable(pool, target)->repo->name); |
||||
case SOLVER_RULE_PKG_CONFLICTS: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_CONFLICTS), 1), solvid2str(pool, source).c_str(), |
||||
- pool_dep2str(pool, dep), solvid2str(pool, target).c_str()); |
||||
+ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep), |
||||
+ solvid2str(pool, target).c_str(), pool_id2solvable(pool, target)->repo->name); |
||||
case SOLVER_RULE_PKG_OBSOLETES: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_OBSOLETES), 1), solvid2str(pool, source).c_str(), |
||||
- pool_dep2str(pool, dep), solvid2str(pool, target).c_str()); |
||||
+ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep), |
||||
+ solvid2str(pool, target).c_str(), pool_id2solvable(pool, target)->repo->name); |
||||
case SOLVER_RULE_PKG_INSTALLED_OBSOLETES: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_INSTALLED_OBSOLETES), 1), |
||||
solvid2str(pool, source).c_str(), pool_dep2str(pool, dep), |
||||
- solvid2str(pool, target).c_str()); |
||||
+ solvid2str(pool, target).c_str(), pool_id2solvable(pool, target)->repo->name); |
||||
case SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_IMPLICIT_OBSOLETES), 1), |
||||
solvid2str(pool, source).c_str(), pool_dep2str(pool, dep), |
||||
- solvid2str(pool, target).c_str()); |
||||
+ pool_id2solvable(pool, source)->repo->name, solvid2str(pool, target).c_str(), |
||||
+ pool_id2solvable(pool, target)->repo->name); |
||||
case SOLVER_RULE_PKG_REQUIRES: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_REQUIRES), 1), solvid2str(pool, source).c_str(), |
||||
- pool_dep2str(pool, dep)); |
||||
+ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep)); |
||||
case SOLVER_RULE_PKG_SELF_CONFLICT: |
||||
return tfm::format(TM_(problemDict.at(RULE_PKG_SELF_CONFLICT), 1), solvid2str(pool, source).c_str(), |
||||
- pool_dep2str(pool, dep)); |
||||
+ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep)); |
||||
case SOLVER_RULE_YUMOBS: |
||||
return tfm::format(TM_(problemDict.at(RULE_YUMOBS), 1), solvid2str(pool, source).c_str(), |
||||
- solvid2str(pool, target).c_str(), pool_dep2str(pool, dep)); |
||||
+ pool_id2solvable(pool, source)->repo->name, solvid2str(pool, target).c_str(), |
||||
+ pool_id2solvable(pool, target)->repo->name, pool_dep2str(pool, dep)); |
||||
default: |
||||
return solver_problemruleinfo2str(solv, type, source, target, dep); |
||||
} |
||||
diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp |
||||
index 4879130f..e4140748 100644 |
||||
--- a/libdnf/module/ModulePackageContainer.cpp |
||||
+++ b/libdnf/module/ModulePackageContainer.cpp |
||||
@@ -392,7 +392,7 @@ ModulePackageContainer::add(const std::string &fileContent, const std::string & |
||||
|
||||
// add all modules to repository and pass ownership to module container |
||||
g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), "/etc/dnf/modules.d", NULL); |
||||
- auto packages = md.getAllModulePackages(pImpl->moduleSack, r, repoID, pImpl->modulesV2); |
||||
+ auto packages = md.getAllModulePackages(pImpl->moduleSack, repo, repoID, pImpl->modulesV2); |
||||
for(auto const& modulePackagePtr: packages) { |
||||
std::unique_ptr<ModulePackage> modulePackage(modulePackagePtr); |
||||
pImpl->modules.insert(std::make_pair(modulePackage->getId(), std::move(modulePackage))); |
||||
diff --git a/tests/hawkey/test_goal.cpp b/tests/hawkey/test_goal.cpp |
||||
index f22e1c80..b2d7af9f 100644 |
||||
--- a/tests/hawkey/test_goal.cpp |
||||
+++ b/tests/hawkey/test_goal.cpp |
||||
@@ -593,11 +593,11 @@ START_TEST(test_goal_describe_problem_rules) |
||||
auto problems = goal->describeProblemRules(0, true); |
||||
const char *expected[] = { |
||||
"conflicting requests", |
||||
- "nothing provides goodbye needed by hello-1-1.noarch" |
||||
+ "nothing provides goodbye needed by hello-1-1.noarch from main" |
||||
}; |
||||
- fail_unless(problems.size() == 2); |
||||
- fail_unless(problems[0] == expected[0]); |
||||
- fail_unless(problems[1] == expected[1]); |
||||
+ ck_assert_int_eq(problems.size(), 2); |
||||
+ ck_assert_str_eq(problems[0].c_str(), expected[0]); |
||||
+ ck_assert_str_eq(problems[1].c_str(), expected[1]); |
||||
|
||||
g_object_unref(pkg); |
||||
hy_goal_free(goal); |
||||
@@ -860,10 +860,10 @@ START_TEST(test_goal_lock) |
||||
|
||||
auto problems = goal->describeProblemRules(0, true); |
||||
const char *expected[] = { |
||||
- "package bloop-ext-2.0-1.noarch requires bloop = 2.0-1, but none of the providers can be installed", |
||||
- "cannot install both bloop-2.0-1.noarch and bloop-1.0-1.noarch", |
||||
+ "package bloop-ext-2.0-1.noarch from updates requires bloop = 2.0-1, but none of the providers can be installed", |
||||
+ "cannot install both bloop-2.0-1.noarch from updates and bloop-1.0-1.noarch from @System", |
||||
"conflicting requests", |
||||
- "package bloop-ext-1.0-1.noarch is filtered out by exclude filtering" |
||||
+ "package bloop-ext-1.0-1.noarch from updates is filtered out by exclude filtering" |
||||
}; |
||||
ck_assert_int_eq(problems.size(), 4); |
||||
ck_assert_str_eq(problems[0].c_str(), expected[0]); |
||||
-- |
||||
2.40.1 |
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,977 @@
@@ -0,0 +1,977 @@
|
||||
%global libsolv_version 0.7.21 |
||||
%global libmodulemd_version 2.13.0 |
||||
%global librepo_version 1.13.1 |
||||
%global dnf_conflict 4.10.0-4 |
||||
%global swig_version 3.0.12 |
||||
%global libdnf_major_version 0 |
||||
%global libdnf_minor_version 69 |
||||
%global libdnf_micro_version 0 |
||||
|
||||
%define __cmake_in_source_build 1 |
||||
|
||||
# set sphinx package name according to distro |
||||
%global requires_python2_sphinx python2-sphinx |
||||
%global requires_python3_sphinx python3-sphinx |
||||
%if 0%{?rhel} == 7 |
||||
%global requires_python2_sphinx python-sphinx |
||||
%endif |
||||
%if 0%{?suse_version} |
||||
%global requires_python2_sphinx python2-Sphinx |
||||
%global requires_python3_sphinx python3-Sphinx |
||||
%endif |
||||
|
||||
%bcond_with valgrind |
||||
|
||||
# Do not build bindings for python3 for RHEL <= 7 |
||||
%if 0%{?rhel} && 0%{?rhel} <= 7 |
||||
%bcond_with python3 |
||||
%else |
||||
%bcond_without python3 |
||||
%endif |
||||
|
||||
%if 0%{?rhel} > 7 || 0%{?fedora} > 29 |
||||
# Disable python2 build by default |
||||
%bcond_with python2 |
||||
%else |
||||
%bcond_without python2 |
||||
%endif |
||||
|
||||
%if 0%{?rhel} && ! 0%{?centos} |
||||
%bcond_without rhsm |
||||
%else |
||||
%bcond_with rhsm |
||||
%endif |
||||
|
||||
%if 0%{?rhel} |
||||
%bcond_with zchunk |
||||
%else |
||||
%bcond_without zchunk |
||||
%endif |
||||
|
||||
%bcond_with sanitizers |
||||
|
||||
%global _cmake_opts \\\ |
||||
-DENABLE_RHSM_SUPPORT=%{?with_rhsm:ON}%{!?with_rhsm:OFF} \\\ |
||||
%{nil} |
||||
|
||||
Name: libdnf |
||||
Version: %{libdnf_major_version}.%{libdnf_minor_version}.%{libdnf_micro_version} |
||||
Release: 6%{?dist} |
||||
Summary: Library providing simplified C and Python API to libsolv |
||||
License: LGPLv2+ |
||||
URL: https://github.com/rpm-software-management/libdnf |
||||
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz |
||||
Patch1: 0001-Allow-change-of-arch-during-security-updates-with-no.patch |
||||
Patch2: 0002-Add-repoid-to-solver-error-messages.patch |
||||
Patch3: 0003-Update-translations-RHEL-9-2.patch |
||||
Patch4: 0004-Update-translations-RHEL-9.3.patch |
||||
|
||||
|
||||
BuildRequires: cmake |
||||
BuildRequires: gcc |
||||
BuildRequires: gcc-c++ |
||||
BuildRequires: libsolv-devel >= %{libsolv_version} |
||||
BuildRequires: pkgconfig(librepo) >= %{librepo_version} |
||||
BuildRequires: pkgconfig(check) |
||||
%if %{with valgrind} |
||||
BuildRequires: valgrind |
||||
%endif |
||||
BuildRequires: pkgconfig(gio-unix-2.0) >= 2.46.0 |
||||
BuildRequires: pkgconfig(gtk-doc) |
||||
BuildRequires: rpm-devel >= 4.15.0 |
||||
%if %{with rhsm} |
||||
BuildRequires: pkgconfig(librhsm) >= 0.0.3 |
||||
%endif |
||||
%if %{with zchunk} |
||||
BuildRequires: pkgconfig(zck) >= 0.9.11 |
||||
%endif |
||||
BuildRequires: pkgconfig(sqlite3) |
||||
BuildRequires: pkgconfig(json-c) |
||||
BuildRequires: pkgconfig(cppunit) |
||||
BuildRequires: pkgconfig(modulemd-2.0) >= %{libmodulemd_version} |
||||
BuildRequires: pkgconfig(smartcols) |
||||
BuildRequires: gettext |
||||
BuildRequires: gpgme-devel |
||||
|
||||
%if %{with sanitizers} |
||||
BuildRequires: libasan |
||||
BuildRequires: liblsan |
||||
BuildRequires: libubsan |
||||
%endif |
||||
|
||||
Requires: libmodulemd%{?_isa} >= %{libmodulemd_version} |
||||
Requires: libsolv%{?_isa} >= %{libsolv_version} |
||||
Requires: librepo%{?_isa} >= %{librepo_version} |
||||
|
||||
%if %{without python2} |
||||
# Obsoleted from here so we can track the fast growing version easily. |
||||
# We intentionally only obsolete and not provide, this is a broken upgrade |
||||
# prevention, not providing the removed functionality. |
||||
Obsoletes: python2-%{name} < %{version}-%{release} |
||||
Obsoletes: python2-hawkey < %{version}-%{release} |
||||
Obsoletes: python2-hawkey-debuginfo < %{version}-%{release} |
||||
Obsoletes: python2-libdnf-debuginfo < %{version}-%{release} |
||||
%endif |
||||
|
||||
%description |
||||
A Library providing simplified C and Python API to libsolv. |
||||
|
||||
%package devel |
||||
Summary: Development files for %{name} |
||||
Requires: %{name}%{?_isa} = %{version}-%{release} |
||||
Requires: libsolv-devel%{?_isa} >= %{libsolv_version} |
||||
|
||||
%description devel |
||||
Development files for %{name}. |
||||
|
||||
%if %{with python2} |
||||
%package -n python2-%{name} |
||||
%{?python_provide:%python_provide python2-%{name}} |
||||
Summary: Python 2 bindings for the libdnf library. |
||||
Requires: %{name}%{?_isa} = %{version}-%{release} |
||||
BuildRequires: python2-devel |
||||
%if !0%{?mageia} |
||||
BuildRequires: %{requires_python2_sphinx} |
||||
%endif |
||||
%if 0%{?rhel} == 7 |
||||
BuildRequires: swig3 >= %{swig_version} |
||||
%else |
||||
BuildRequires: swig >= %{swig_version} |
||||
%endif |
||||
|
||||
%description -n python2-%{name} |
||||
Python 2 bindings for the libdnf library. |
||||
%endif |
||||
# endif with python2 |
||||
|
||||
%if %{with python3} |
||||
%package -n python3-%{name} |
||||
%{?python_provide:%python_provide python3-%{name}} |
||||
Summary: Python 3 bindings for the libdnf library. |
||||
Requires: %{name}%{?_isa} = %{version}-%{release} |
||||
BuildRequires: python3-devel |
||||
BuildRequires: %{requires_python3_sphinx} |
||||
BuildRequires: swig >= %{swig_version} |
||||
|
||||
%description -n python3-%{name} |
||||
Python 3 bindings for the libdnf library. |
||||
%endif |
||||
|
||||
%if %{with python2} |
||||
%package -n python2-hawkey |
||||
Summary: Python 2 bindings for the hawkey library |
||||
%{?python_provide:%python_provide python2-hawkey} |
||||
BuildRequires: python2-devel |
||||
Requires: %{name}%{?_isa} = %{version}-%{release} |
||||
Requires: python2-%{name} = %{version}-%{release} |
||||
# Fix problem with hawkey - dnf version incompatibility |
||||
# Can be deleted for distros where only python2-dnf >= 2.0.0 |
||||
Conflicts: python2-dnf < %{dnf_conflict} |
||||
Conflicts: python-dnf < %{dnf_conflict} |
||||
|
||||
%description -n python2-hawkey |
||||
Python 2 bindings for the hawkey library. |
||||
%endif |
||||
# endif with python2 |
||||
|
||||
%if %{with python3} |
||||
%package -n python3-hawkey |
||||
Summary: Python 3 bindings for the hawkey library |
||||
%{?python_provide:%python_provide python3-hawkey} |
||||
BuildRequires: python3-devel |
||||
Requires: %{name}%{?_isa} = %{version}-%{release} |
||||
Requires: python3-%{name} = %{version}-%{release} |
||||
# Fix problem with hawkey - dnf version incompatibility |
||||
# Can be deleted for distros where only python3-dnf >= 2.0.0 |
||||
Conflicts: python3-dnf < %{dnf_conflict} |
||||
# Obsoletes F27 packages |
||||
Obsoletes: platform-python-hawkey < %{version}-%{release} |
||||
|
||||
%description -n python3-hawkey |
||||
Python 3 bindings for the hawkey library. |
||||
%endif |
||||
|
||||
%prep |
||||
%autosetup -p1 |
||||
%if %{with python2} |
||||
mkdir build-py2 |
||||
%endif |
||||
%if %{with python3} |
||||
mkdir build-py3 |
||||
%endif |
||||
|
||||
%build |
||||
%if %{with python2} |
||||
pushd build-py2 |
||||
%if 0%{?mageia} || 0%{?suse_version} |
||||
cd .. |
||||
%define _cmake_builddir build-py2 |
||||
%define __builddir build-py2 |
||||
%endif |
||||
%cmake -DPYTHON_DESIRED:FILEPATH=%{__python2} -DWITH_MAN=OFF ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ |
||||
-DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} |
||||
%make_build |
||||
popd |
||||
%endif |
||||
# endif with python2 |
||||
|
||||
%if %{with python3} |
||||
pushd build-py3 |
||||
%if 0%{?mageia} || 0%{?suse_version} |
||||
cd .. |
||||
%define _cmake_builddir build-py3 |
||||
%define __builddir build-py3 |
||||
%endif |
||||
%cmake -DPYTHON_DESIRED:FILEPATH=%{__python3} -DWITH_GIR=0 -DWITH_MAN=0 -Dgtkdoc=0 ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ |
||||
-DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} |
||||
%make_build |
||||
popd |
||||
%endif |
||||
|
||||
%check |
||||
%if %{with python2} |
||||
pushd build-py2 |
||||
make ARGS="-V" test |
||||
popd |
||||
%endif |
||||
%if %{with python3} |
||||
# If we didn't run the general tests yet, do it now. |
||||
%if %{without python2} |
||||
pushd build-py3 |
||||
make ARGS="-V" test |
||||
popd |
||||
%else |
||||
# Otherwise, run just the Python tests, not all of |
||||
# them, since we have coverage of the core from the |
||||
# first build |
||||
pushd build-py3/python/hawkey/tests |
||||
make ARGS="-V" test |
||||
popd |
||||
%endif |
||||
%endif |
||||
|
||||
%install |
||||
%if %{with python2} |
||||
pushd build-py2 |
||||
%make_install |
||||
popd |
||||
%endif |
||||
%if %{with python3} |
||||
pushd build-py3 |
||||
%make_install |
||||
popd |
||||
%endif |
||||
|
||||
%find_lang %{name} |
||||
|
||||
%if (0%{?rhel} && 0%{?rhel} <= 7) || 0%{?suse_version} |
||||
%post -p /sbin/ldconfig |
||||
%postun -p /sbin/ldconfig |
||||
%else |
||||
%ldconfig_scriptlets |
||||
%endif |
||||
|
||||
%files -f %{name}.lang |
||||
%license COPYING |
||||
%doc README.md AUTHORS |
||||
%{_libdir}/%{name}.so.* |
||||
%dir %{_libdir}/libdnf/ |
||||
%dir %{_libdir}/libdnf/plugins/ |
||||
%{_libdir}/libdnf/plugins/README |
||||
%if %{with sanitizers} |
||||
%{_sysconfdir}/profile.d/dnf-sanitizers.sh |
||||
%endif |
||||
|
||||
%files devel |
||||
%doc %{_datadir}/gtk-doc/html/%{name}/ |
||||
%{_libdir}/%{name}.so |
||||
%{_libdir}/pkgconfig/%{name}.pc |
||||
%{_includedir}/%{name}/ |
||||
|
||||
%if %{with python2} |
||||
%files -n python2-%{name} |
||||
%{python2_sitearch}/%{name}/ |
||||
%endif |
||||
|
||||
%if %{with python3} |
||||
%files -n python3-%{name} |
||||
%{python3_sitearch}/%{name}/ |
||||
%endif |
||||
|
||||
%if %{with python2} |
||||
%files -n python2-hawkey |
||||
%{python2_sitearch}/hawkey/ |
||||
%endif |
||||
|
||||
%if %{with python3} |
||||
%files -n python3-hawkey |
||||
%{python3_sitearch}/hawkey/ |
||||
%endif |
||||
|
||||
%changelog |
||||
* Fri Sep 08 2023 Marek Blaha <mblaha@redhat.com> - 0.69.0-6 |
||||
- Update translations |
||||
|
||||
* Mon May 22 2023 Nicola Sella <nsella@redhat.com> - 0.69.0-5 |
||||
- Fix specfile and bump release |
||||
|
||||
* Mon May 22 2023 Nicola Sella <nsella@redhat.com> - 0.69.0-4 |
||||
- Update translations |
||||
|
||||
* Sun May 14 2023 Jaroslav Rohel <jrohel@redhat.com> - 0.69.0-3 |
||||
- Add repoid to solver error messages (RhBug:2179409,2179413) |
||||
|
||||
* Mon Oct 31 2022 Nicola Sella <nsella@redhat.com> - 0.69.0-2 |
||||
- Allow change of arch during security updates with noarch |
||||
|
||||
* Thu Sep 22 2022 Lukas Hrazky <lhrazky@redhat.com> - 0.69.0-1 |
||||
- Update to 0.69.0 |
||||
- Expose librepo max_downloads_per_mirror configuration |
||||
- Fix listing a repository without cpeid (RhBug:2066334) |
||||
- Gracefully handle failure to open repo primary file |
||||
- context: Fix doc dnf_context_install/remove/update/distrosync |
||||
- context: dnf_context_remove accepts `<package-spec>` as dnf, unify code |
||||
- dnf-context: Disconnect signal handler before dropping file monitor ref |
||||
|
||||
* Thu Sep 15 2022 Marek Blaha <mblaha@redhat.com> - 0.67.0-3 |
||||
- Update translations |
||||
|
||||
* Thu Jul 21 2022 Lukas Hrazky <lhrazky@redhat.com> - 0.67.0-2 |
||||
- Add obsoletes to filtering for advisory candidates |
||||
- advisory upgrade: filter out advPkgs with different arch |
||||
|
||||
* Thu Apr 28 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 0.67.0-1 |
||||
- Fix handling transaction id in resolveTransactionItemReason (RhBug:2010259,2053014) |
||||
- Remove deprecated assertions (RhBug:2027383) |
||||
- Skip rich deps for autodetection of unmet dependencies (RhBug:2033130, 2048394) |
||||
- Increase required rpm version since we use `rpmdbCookie()` |
||||
- Add 'loongarch' support |
||||
- Use dnf solv userdata to check versions and checksum (RhBug:2027445) |
||||
- context: Substitute all repository config options (RhBug:2076853) |
||||
|
||||
* Mon Feb 07 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 0.65.0-3 |
||||
- Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version` |
||||
|
||||
* Thu Dec 09 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.65.0-2 |
||||
- Rebuilt with json-c-0.14-11.el9 (RhBug:2023320) |
||||
|
||||
* Mon Oct 25 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.65.0-1 |
||||
- Update to 0.65.0 |
||||
- Implement logic for demodularization of modular rpms (RhBug:1805260) |
||||
- DnfContext: fix handling of default module profiles |
||||
- ModuleMetadata: gracefully handle modules with no defaults |
||||
- Remove failovermethod config option (RhBug:1961083) |
||||
- Add support for excluding packages to be installed as weak dependencies |
||||
- Add support for autodetecting packages to be excluded from being installed as weak dependencies |
||||
- Turn off strict validation of modulemd documents (RhBug:2004853,2007166,2007167) |
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.63.0-4 |
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags |
||||
Related: rhbz#1991688 |
||||
|
||||
* Tue Jul 27 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.63.0-3 |
||||
- Fix some covscan warnings |
||||
|
||||
* Wed Jun 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.63.0-2 |
||||
- Rebuilt for RHEL 9 BETA for openssl 3.0 |
||||
Related: rhbz#1971065 |
||||
|
||||
* Wed Jun 02 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.63.0-1 |
||||
- Fix: Fully set ssl in newHandle function |
||||
- [conf] Add options for working with certificates used with proxy |
||||
- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer |
||||
- Modify module NSVCA parsing - context definition (RhBug:1926771) |
||||
- [context] Fix: dnf_package_is_installonly (RhBug:1928056) |
||||
- Add getApplicablePackages to advisory and isApplicable to advisorymodule |
||||
- Keep isAdvisoryApplicable to preserve API |
||||
- Run ModulePackageContainerTest tests in tmpdir, merge interdependent |
||||
- [context] Support config file option "proxy_auth_method", defaults "any" |
||||
- Hardening: add signature check with rpmcliVerifySignatures (RhBug:1932079) |
||||
- Do not allow 1 as installonly_limit value (RhBug:1926261) |
||||
- Add a config option to check TLS certificate revocation status (using OCSP stapling), defaults to false (RhBug:1814383) |
||||
- ModuleProfile: add isDefault() |
||||
- ModulePackage: add getDefaultProfile() |
||||
- Add new dnf_context_module_install() C API |
||||
- Fix a crash when [media] section in .treeinfo is missing for bootable media (RhBug:1946024) |
||||
|
||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.60.0-2 |
||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 |
||||
|
||||
* Tue Mar 02 2021 Nicola Sella <nsella@redhat.com> - 0.60.0-1 |
||||
- Update to 0.60.0 |
||||
- Fix repo.fresh() implementation |
||||
- build-sys: Add ENABLE_STATIC option |
||||
- Fix: Fully set ssl in newHandle function |
||||
- [conf] Add options for working with certificates used with proxy |
||||
- Apply proxy certificate options |
||||
- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer |
||||
- build-sys: Clean up message about Python bindings |
||||
- Modify module NSVCA parsing - context definition (RhBug:1926771) |
||||
- [context] Fix: dnf_package_is_installonly (RhBug:1928056) |
||||
- Fix problematic language |
||||
- Add getApplicablePackages to advisory and isApplicable to advisorymodule |
||||
- Keep isAdvisoryApplicable to preserve API |
||||
- Run ModulePackageContainerTest tests in tmpdir, merge interdependent |
||||
- [context] Support config file option "proxy_auth_method", defaults "any" |
||||
- Support main config file option "installonlypkgs". |
||||
- Support main config file option "protected_packages". |
||||
- Properly handle multiple collections in updateinfo.xml (RhBug:1804234) |
||||
|
||||
* Thu Jan 28 2021 Nicola Sella <nsella@redhat.com> - 0.58.0-1 |
||||
- Update to 0.58.0 |
||||
- Option: Add reset() method |
||||
- Add OptionBinds::getOption() method |
||||
- [context] Add dnf_repo_conf_from_gkeyfile() and dnf_repo_conf_reset() |
||||
- [context] Add support for options: minrate, throttle, bandwidth, timeout |
||||
- [context] Remove g_key_file_get_string() from dnf_repo_set_keyfile_data() |
||||
- Allow loading ext metadata even if only cache (solv) is present |
||||
- Add ASAN_OPTIONS for test_libdnf_main |
||||
- [context,API] Functions for accessing main/global configuration options |
||||
- [context,API] Function for adding setopt |
||||
- Add getter for modular obsoletes from ModuleMetadata |
||||
- Add ModulePackage.getStaticContext() and getRequires() |
||||
- Add compatible layer for MdDocuments v2 |
||||
- Fix modular queries with the new solver |
||||
- Improve formatting of error string for modules |
||||
- Change mechanism of module conflicts |
||||
- Fix load/update FailSafe |
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.55.2-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild |
||||
|
||||
* Wed Dec 02 2020 Nicola Sella <nsella@redhat.com> - 0.55.2-1 |
||||
- Update to 0.55.2 |
||||
- Improve performance of query installed() and available() |
||||
- Swdb: Add a method to get the current transaction |
||||
- [modules] Add special handling for src artifacts (RhBug:1809314) |
||||
- Better msgs if "basecachedir" or "proxy_password" isn't set (RhBug:1888946) |
||||
- Add new options module_stream_switch |
||||
- Support allow_vendor_change setting in dnf context API |
||||
- Fix couple of sanitizer builds in specfile |
||||
|
||||
* Mon Nov 23 2020 Nicola Sella <nsella@redhat.com> - 0.55.0-1 |
||||
- Update to 0.55.0 |
||||
- Add vendor to dnf API (RhBug:1876561) |
||||
- Add formatting function for solver error |
||||
- Add error types in ModulePackageContainer |
||||
- Implement module enable for context part |
||||
- Improve string formatting for translation |
||||
- Remove redundant printf and change logging info to notice (RhBug:1827424) |
||||
- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371) |
||||
|
||||
* Thu Oct 29 2020 Adam Williamson <awilliam@redhat.com> - 0.54.2-3 |
||||
- Rebuild to keep NVR ahead of Fedora 32 |
||||
|
||||
* Tue Oct 13 2020 Ales Matej <amatej@redhat.com> - 0.54.2-2 |
||||
- Increase needed conflicting dnf version |
||||
|
||||
* Wed Oct 07 2020 Nicola Sella <nsella@redhat.com> - 0.54.2-1 |
||||
- Update to 0.54.2 |
||||
- history: Fix dnf history rollback when a package was removed (RhBug:1683134) |
||||
- Add support for HY_GT, HY_LT in query nevra_strict |
||||
- Fix parsing empty lines in config files |
||||
- Accept '==' as an operator in reldeps (RhBug:1847946) |
||||
- Add log file level main config option (RhBug:1802074) |
||||
- Add protect_running_kernel configuration option (RhBug:1698145) |
||||
- Context part of libdnf cannot assume zchunk is on (RhBug:1851841,1779104) |
||||
- Fix memory leak of resultingModuleIndex and handle g_object refs |
||||
- Redirect librepo logs to libdnf logs with different source |
||||
- Introduce changelog metadata in commit messages |
||||
- Add hy_goal_lock |
||||
- Update Copr targets for packit and use alias |
||||
- Enum/String conversions for Transaction Store/Replay |
||||
- utils: Add a method to decode URLs |
||||
- Unify hawkey.log line format with the rest of the logs |
||||
|
||||
* Mon Aug 10 2020 Nicola Sella <nsella@redhat.com> - 0.48.0-4 |
||||
- spec: Fix building with new cmake macros |
||||
- tests: Fix incorrect usage of the fail_unless macros |
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.48.0-3 |
||||
- Second attempt - Rebuilt for |
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild |
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.48.0-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild |
||||
|
||||
* Tue Jun 02 2020 Nicola Sella <nsella@redhat.com> - 0.48.0-1 |
||||
- Update to 0.48.0 |
||||
- swdb: Catch only SQLite3 exceptions and simplify the messages |
||||
- MergedTransaction list multiple comments (RhBug:1773679) |
||||
- Modify CMake to pull *.po files from weblate |
||||
- Optimize DependencyContainer creation from an existing queue |
||||
- fix a memory leak in dnf_package_get_requires() |
||||
- Fix memory leaks on g_build_filename() |
||||
- Fix memory leak in dnf_context_setup() |
||||
- Add `hy_goal_favor` and `hy_goal_disfavor` |
||||
- Define a cleanup function for `DnfPackageSet` |
||||
- dnf-repo: fix dnf_repo_get_public_keys double-free |
||||
- Do not cache RPMDB |
||||
- Use single-quotes around string literals used in SQL statements |
||||
- SQLite3: Do not close the database if it wasn't opened (RhBug:1761976) |
||||
- Don't create a new history DB connection for in-memory DB |
||||
- transaction/Swdb: Use a single logger variable in constructor |
||||
- utils: Add a safe version of pathExists() |
||||
- swdb: Handle the case when pathExists() fails on e.g. permission |
||||
- Repo: prepend "file://" if a local path is used as baseurl |
||||
- Move urlEncode() to utils |
||||
- utils: Add 'exclude' argument to urlEncode() |
||||
- Encode package URL for downloading through librepo (RhBug:1817130) |
||||
- Replace std::runtime_error with libdnf::RepoError |
||||
- Fixes and error handling improvements of the File class |
||||
- [context] Use ConfigRepo for gpgkey and baseurl (RhBug:1807864) |
||||
- [context] support "priority" option in .repo config file (RhBug:1797265) |
||||
|
||||
* Fri May 22 2020 Miro Hrončok <mhroncok@redhat.com> - 0.47.0-3 |
||||
- Rebuilt for Python 3.9 |
||||
|
||||
* Tue Apr 21 2020 Björn Esser <besser82@fedoraproject.org> - 0.47.0-2 |
||||
- Rebuild (json-c) |
||||
|
||||
* Wed Apr 01 2020 Ales Matej <amatej@redhat.com> - 0.47.0-1 |
||||
- Update to 0.47.0 |
||||
- Add prereq_ignoreinst & regular_requires properties for pkg (RhBug:1543449) |
||||
- Reset active modules when no module enabled or default (RhBug:1767351) |
||||
- Add comment option to transaction (RhBug:1773679) |
||||
- Failing to get module defauls is a recoverable error |
||||
- Baseurl is not exclusive with mirrorlist/metalink (RhBug: 1775184) |
||||
- Add new function to reset all modules in C API (dnf_context_reset_all_modules) |
||||
- [context] Fix to preserve additionalMetadata content (RhBug:1808677) |
||||
- Fix filtering of DepSolvables with source rpms (RhBug:1812596) |
||||
- Add setter for running kernel protection setting |
||||
- Handle situation when an unprivileged user cannot create history database (RhBug:1634385) |
||||
- Add query filter: latest by priority |
||||
- Add DNF_NO_PROTECTED flag to allow empty list of protected packages |
||||
- Remove 'dim' option from terminal colors to make them more readable (RhBug:1807774,1814563) |
||||
- [context] Error when main config file can't be opened (RhBug:1794864) |
||||
- [context] Add function function dnf_context_is_set_config_file_path |
||||
|
||||
* Mon Feb 24 2020 Ales Matej <amatej@redhat.com> - 0.45.0-1 |
||||
- Config options: only first empty value clears existing (RhBug:1788154) |
||||
- Make parsing of reldeps more strict (RhBug:1788107) |
||||
- [context] Support repositories defined in main configuration file |
||||
- Fix filtering packages by advisory when more versions and arches are available (RhBug:1770125) |
||||
- Add expanding solvable provides for dependency matching (RhBug:1534123) |
||||
- DnfRepo: fix module_hotfixes keyfile priority level |
||||
- Add custom exceptions to libdnf interface |
||||
- [conf] Set useful default colors when color is enabled |
||||
- Port to libmodulemd-2 API (RhBug:1693683) |
||||
|
||||
* Tue Feb 04 2020 Adam Williamson <adamwill@fedoraproject.org> - 0.43.1-3 |
||||
- [context] Create new repo instead of reusing old one (RhBug:1795004) |
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.43.1-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild |
||||
|
||||
* Wed Jan 15 2020 Ales Matej <amatej@redhat.com> - 0.43.1-1 |
||||
- Allow excluding packages with "excludepkgs" and globs |
||||
- Add two new query filters: obsoletes_by_priority, upgrades_by_priority |
||||
- [context] Use installonly_limit from global config (RhBug:1256108) |
||||
- [context] Add API to get/set "install_weak_deps" |
||||
- [context] Add wildcard support for repo_id in dnf_context_repo_enable/disable (RhBug:1781420) |
||||
- [context] Adds support for includepkgs in repository configuration. |
||||
- [context] Adds support for excludepkgs, exclude, includepkgs, and disable_excludes in main configuration. |
||||
- [context] Added function dnf_transaction_set_dont_solve_goal |
||||
- [context] Added functions dnf_context_get/set_config_file_path |
||||
- [context] Respect "plugins" global conf value |
||||
- [context] Add API to disable/enable plugins |
||||
|
||||
* Fri Nov 29 2019 Ales Matej <amatej@redhat.com> - 0.39.1-1 |
||||
- Update to 0.39.1 |
||||
- Report reason how package was excluded (RhBug:1649754) |
||||
- Additional Arm detection improvements (RhBug:1691430) |
||||
- Set skip_if_unavailable for media repos to skip their update (RhBug:1716067) |
||||
- Add support of xml:base for remote and local url in context (RhBug:1734350, 1717865) |
||||
- Handle NoModuleException in dnf_context_reset_modules (RhBug:1767453) |
||||
- Add missing C function hy_nevra_free() for HyNevra deallocation |
||||
- Context part of libdnf now uses metadata_expire from global configuration |
||||
|
||||
* Wed Nov 13 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.37.2-2 |
||||
- Fix accidental code removal from hy_subject_get_best_solution() |
||||
|
||||
* Wed Nov 06 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.37.2-1 |
||||
- Update to 0.37.2 |
||||
- Use more descriptive message when failed to retrieve GPG key (RhBug:1605117) |
||||
- Add removeMetadataTypeFromDownload function to the API |
||||
- Context part of libdnf can now read vars (urlvars) from dirs and environment |
||||
- Throw exception immediately if file cannot be opened |
||||
- Add test when there is no primary metadata in compatible format (RhBug:1744960) |
||||
- Various improvements to countme features |
||||
- Don't abort on rpmdb checksum calculation failure |
||||
- Enable module dependency trees when using set_modules_enabled_by_pkgset() (RhBug:1762314) |
||||
- New method "Query::filterSubject()", replaces Solution::getBestSolution() |
||||
- The Solution class was removed |
||||
- Add query argument into get_best_query and get_best_solution |
||||
- Add module reset function into dnf_context |
||||
- Add method to get all repository metadata locations |
||||
- Catch NoModuleException in case of not existent value was used in persistor (RhBug:1761773) |
||||
|
||||
* Wed Oct 23 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.35.5-5 |
||||
- Fixes for some issues on Arm platforms (rhbz 1691430) |
||||
|
||||
* Tue Oct 22 2019 Ales Matej <amatej@redhat.com> - 0.35.5-4 |
||||
- Fix leaking log handlers in Sack that can cause a crash (RhBug:1758737) |
||||
|
||||
* Mon Oct 14 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.35.5-3 |
||||
- Add POOL_FLAG_WHATPROVIDESWITHDISABLED flag into pool. |
||||
- Resolves: 1737469 |
||||
|
||||
* Tue Oct 01 2019 Ales Matej <amatej@redhat.com> - 0.35.5-2 |
||||
- Fix dnf-conflict version |
||||
|
||||
* Tue Oct 01 2019 Ales Matej <amatej@redhat.com> - 0.35.5-1 |
||||
- Update to 0.35.5 |
||||
- Fix crash in PackageKit (RhBug:1636803) |
||||
- Do not create @System.solv files (RhBug:1707995) |
||||
- Set LRO_CACHEDIR so zchunk works again (RhBug:1739867) |
||||
- Don't reinstall modified packages with the same NEVRA (RhBug:1644241) |
||||
- Fix bug when moving temporary repository metadata after download (RhBug:1700341) |
||||
- Improve detection of extras packages by comparing (name, arch) pair instead of full NEVRA (RhBuh:1684517) |
||||
- Improve handling multilib packages in the history command (RhBug:1728637) |
||||
- Repo download: use full error description into the exception text (RhBug:1741442) |
||||
- Properly close hawkey.log (RhBug:1594016) |
||||
- Fix dnf updateinfo --update to not list advisories for packages updatable only from non-enabled modules |
||||
- Apply modular filtering by package name (RhBug:1702729) |
||||
- Fully enable the modular fail safe mechanism (RhBug:1616167) |
||||
|
||||
* Sat Sep 14 2019 Jonathan Dieter <jdieter@gmail.com> - 0.35.3-5 |
||||
- Set LRO_CACHEDIR so zchunk works again |
||||
|
||||
* Wed Sep 11 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.35.3-4 |
||||
- Backport patch to fix reinstalling packages with a different buildtime - part II |
||||
|
||||
* Tue Sep 10 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.35.3-3 |
||||
- Backport patch to fix reinstalling packages with a different buildtime |
||||
|
||||
* Thu Aug 15 2019 Miro Hrončok <mhroncok@redhat.com> - 0.35.3-2 |
||||
- Rebuilt for Python 3.8 |
||||
|
||||
* Tue Aug 13 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.35.3-1 |
||||
- Update to 0.35.3 |
||||
- Make libdnf own its plugin directory (RhBug:1714265) |
||||
- Don't disable nonexistent but required repositories (RhBug:1689331) |
||||
- Set priority of dnf.conf.d drop-ins |
||||
- Fix toString() to not insert [] (RhBug:1584442) |
||||
- Ignore trailing blank lines in config (RhBug:1722493) |
||||
- Fix handling large number of filenames on input (RhBug:1690915) |
||||
- Detect armv7 with crypto extension only on arm version >= 8 |
||||
- A new standardized User-Agent field consisting of the libdnf and OS version |
||||
(including the variant) (RhBug:1156007) |
||||
- Add basic countme support (RhBug:1647454) |
||||
|
||||
* Mon Jul 29 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.35.1-4 |
||||
- Rebuilt for librepo 1.10.5 |
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.35.1-3 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild |
||||
|
||||
* Mon Jul 22 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.35.1-2 |
||||
- Backport patch to fix attaching and detaching of libsolvRepo and |
||||
repo_internalize_trigger() (RhBug:1727343,1727424) |
||||
|
||||
* Thu Jul 04 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.35.1-1 |
||||
- Update to 0.35.1 |
||||
- Enhance logging handling |
||||
- Do not log DEBUG messages by default |
||||
- Also add subkeys when adding GPG keys |
||||
- [module] Fix swig binding for getModuleDependencies() |
||||
- Skip invalid key files in "/etc/pki/rpm-gpg" with warning (RhBug:1644040) |
||||
- Enable timestamp preserving for downloaded data (RhBug:1688537) |
||||
- Set default to skip_if_unavailable=false (RhBug:1679509) |
||||
- Add configuration option skip_if_unavailable (RhBug:1689931) |
||||
- Fix 'database is locked' error (RhBug:1631533) |
||||
- Replace the 'Failed to synchronize cache' message (RhBug:1712055) |
||||
- Fix 'no such table: main.trans_cmdline' error (RhBug:1596540) |
||||
- Add support of modular FailSafe (RhBug:1623128) (temporarily with warnings |
||||
instead of errors when installing modular RPMs without modular metadata) |
||||
- Add support of DNF main config file in context; used by PackageKit and |
||||
microdnf (RhBug:1689331) |
||||
- Exit gpg-agent after repokey import (RhBug:1650266) |
||||
|
||||
* Mon Jun 10 22:13:19 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.31.0-5 |
||||
- Rebuild for RPM 4.15 |
||||
|
||||
* Mon Jun 10 15:42:02 CET 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.31.0-4 |
||||
- Rebuild for RPM 4.15 |
||||
|
||||
* Fri May 03 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.31.0-3 |
||||
- Backport patches to reintroduce hawkeyRepo |
||||
|
||||
* Thu Apr 25 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.31.0-1 |
||||
- Update to 0.31.0 |
||||
- Installroot now requires absolute path |
||||
- Support "_none_" value for repo option "proxy" (RhBug:1680272) |
||||
- Add support for Module advisories |
||||
- Add support for xml:base attribute from primary.xml (RhBug:1691315) |
||||
- Improve detection of Platform ID (RhBug:1688462) |
||||
|
||||
* Wed Mar 27 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.28.1-1 |
||||
- Update to 0.28.1 |
||||
- Return empty query if incorrect reldep (RhBug:1687135) |
||||
- ConfigParser: Improve compatibility with Python ConfigParser and dnf-plugin-spacewalk (RhBug:1692044) |
||||
- ConfigParser: Unify default set of string represenation of boolean values |
||||
- Fix segfault when interrupting dnf process (RhBug:1610456) |
||||
|
||||
* Mon Mar 11 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.28.0-1 |
||||
- Update to 0.28.0 |
||||
- Exclude module pkgs that have conflict |
||||
- Enhance config parser to preserve order of data, and keep comments and format |
||||
- Improve ARM detection |
||||
- Add support for SHA-384 |
||||
|
||||
* Tue Feb 19 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.26.0-2 |
||||
- Backport patches for zchunk |
||||
|
||||
* Wed Feb 13 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.26.0-1 |
||||
- Update to 0.26.0-1 |
||||
- Enhance modular solver to handle enabled and default module streams differently (RhBug:1648839) |
||||
- Add support of wild cards for modules (RhBug:1644588) |
||||
- Revert commit that adds best as default behavior |
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.24.1-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild |
||||
|
||||
* Wed Dec 12 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.24.1-1 |
||||
- Update to 0.24.1 |
||||
- Add support for zchunk |
||||
- Enhance LIBDNF plugins support |
||||
- Enhance sorting for module list (RhBug:1590358) |
||||
- [repo] Check whether metadata cache is expired (RhBug:1539620,1648274) |
||||
- [DnfRepo] Add methods for alternative repository metadata type and download (RhBug:1656314) |
||||
- Remove installed profile on module enable or disable (RhBug:1653623) |
||||
- [sack] Implement dnf_sack_get_rpmdb_version() |
||||
|
||||
* Thu Nov 22 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.3-1 |
||||
- Permanently disable Python2 build for Fedora 30+ |
||||
- Update to 0.22.3 |
||||
- Modify solver_describe_decision to report cleaned (RhBug:1486749) |
||||
- [swdb] create persistent WAL files (RhBug:1640235) |
||||
- Relocate ModuleContainer save hook (RhBug:1632518) |
||||
- [transaction] Fix transaction item lookup for obsoleted packages (RhBug: 1642796) |
||||
- Fix memory leaks and memory allocations |
||||
- [repo] Possibility to extend downloaded repository metadata |
||||
|
||||
* Wed Nov 07 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-8 |
||||
- Backport fixes for RHBZ#1642796 from upstream master |
||||
|
||||
* Tue Oct 30 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.22.0-7 |
||||
- Rebuild for libsolv 0.7 |
||||
|
||||
* Tue Oct 23 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-6 |
||||
- Add patch Relocate-ModuleContainer-save-hook-RhBug1632518 |
||||
- Add patch Test-if-sack-is-present-and-run-save-module-persistor-RhBug1632518 |
||||
|
||||
* Sat Oct 20 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-5 |
||||
- remove problematic patch Relocate-ModuleContainer-save-hook-RhBug1632518 |
||||
|
||||
* Fri Oct 19 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-4 |
||||
- backport Relocate-ModuleContainer-save-hook-RhBug1632518 |
||||
|
||||
* Thu Oct 18 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-3 |
||||
- bacport swdb-create-persistent-WAL-files-RhBug1640235 |
||||
|
||||
* Wed Oct 17 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-2 |
||||
- backport Modify-solver_describe_decision-to-report-cleaned-RhBug1486749 |
||||
- backport history-Fix-crash-in-TransactionItemaddReplacedBy |
||||
|
||||
* Mon Oct 15 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.22.0-1 |
||||
- Update to 0.22.0 |
||||
- Fix segfault in repo_internalize_trigger (RhBug:1375895) |
||||
- Change sorting of installonly packages (RhBug:1627685) |
||||
- [swdb] Fixed pattern searching in history db (RhBug:1635542) |
||||
- Check correctly gpg for repomd when refresh is used (RhBug:1636743) |
||||
- [conf] Provide additional VectorString methods for compatibility with Python list. |
||||
- [plugins] add plugin loading and hooks into libdnf |
||||
|
||||
* Sat Sep 29 2018 Kevin Fenzi <kevin@scrye.com> - 0.20.0-2 |
||||
- Temp re-enable python2 subpackages to get rawhide composing again. |
||||
|
||||
* Tue Sep 25 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.20.0-1 |
||||
- [module] Report module solver errors |
||||
- [module] Enhance module commands and errors |
||||
- [transaction] Fixed several problems with SWDB |
||||
- Remove unneeded regex URL tests (RhBug:1598336) |
||||
- Allow quoted values in ini files (RhBug:1624056) |
||||
- Filter out not unique set of solver problems (RhBug:1564369) |
||||
- Disable python2 build for Fedora 30+ |
||||
|
||||
* Tue Sep 18 2018 Adam Williamson <awilliam@redhat.com> - 0.19.1-3 |
||||
- Backport PR #585 for an update crash bug (#1629340) |
||||
|
||||
* Fri Sep 14 2018 Kalev Lember <klember@redhat.com> - 0.19.1-2 |
||||
- Backport a fix for a packagekit crasher / F29 Beta blocker (#1626851) |
||||
|
||||
* Mon Sep 10 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.19.1-1 |
||||
- Fix compilation errors on gcc-4.8.5 |
||||
- [module] Allow module queries on disabled modules |
||||
|
||||
* Fri Sep 07 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.19.0-1 |
||||
- [query] Reldeps can contain a space char (RhBug:1612462) |
||||
- [transaction] Avoid adding duplicates via Transaction::addItem() |
||||
- Fix compilation errors on gcc-4.8.5 |
||||
- [module] Make available ModuleProfile using SWIG |
||||
- [module] Redesign module disable and reset |
||||
|
||||
* Mon Aug 13 2018 Daniel Mach <dmach@redhat.com> - 0.17.2-1 |
||||
- [sqlite3] Change db locking mode to DEFAULT. |
||||
- [doc] Add libsmartcols-devel to devel deps. |
||||
|
||||
* Mon Aug 13 2018 Daniel Mach <dmach@redhat.com> - 0.17.1-1 |
||||
- [module] Solve a problem in python constructor of NSVCAP if no version. |
||||
- [translations] Update translations from zanata. |
||||
- [transaction] Fix crash after using dnf.comps.CompsQuery and forking the process in Anaconda. |
||||
- [module] Support for resetting module state. |
||||
- [output] Introduce wrapper for smartcols. |
||||
|
||||
* Fri Aug 10 2018 Adam Williamson <awilliam@redhat.com> - 0.17.0-2 |
||||
- Backport fix that prevented anaconda running dnf in a subprocess (#546) |
||||
|
||||
* Tue Aug 07 2018 Daniel Mach <dmach@redhat.com> - 0.17.0-1 |
||||
- [conf] Add module_platform_id option. |
||||
- [module] Add ModulePackageContainer class. |
||||
- [module] Add ModulePersistor class. |
||||
- [sack] Module filtering made available in python API |
||||
- [sack] Module auto-enabling according to installed packages |
||||
|
||||
* Fri Jul 27 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.16.1-3 |
||||
- Rebuild for new binutils |
||||
|
||||
* Fri Jul 27 2018 Daniel Mach <dmach@redhat.com> - 0.16.1-2 |
||||
- [module] Implement 'module_hotfixes' conf option to skip filtering RPMs from hotfix repos. |
||||
- [goal] Fix distupgrade filter, allow downgrades. |
||||
- [context] Allow to set module platform in context. |
||||
- [module] Introduce proper modular dependency solving. |
||||
- [module] Platform pseudo-module based on /etc/os-release. |
||||
- [goal] Add Goal::listSuggested(). |
||||
- [l10n] Support for translations, add gettext build dependency. |
||||
|
||||
* Sun Jul 22 2018 Daniel Mach <dmach@redhat.com> - 0.16.0-1 |
||||
- Fix RHSM plugin |
||||
- Add support for logging |
||||
- Bump minimal libmodulemd version to 1.6.1 |
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.15.2-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild |
||||
|
||||
* Fri Jun 29 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.15.2-1 |
||||
- Update to 0.15.1 |
||||
- Resolves: rhbz#1595487 |
||||
|
||||
* Fri Jun 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.15.1-2 |
||||
- Restore proper ldconfig_scriptlets |
||||
|
||||
* Tue Jun 26 2018 Jaroslav Mracek <jmracek@redhat.com> - 0.15.1-1 |
||||
- Update to 0.15.1 |
||||
|
||||
* Fri Jun 15 2018 Miro Hrončok <mhroncok@redhat.com> - 0.11.1-6 |
||||
- Rebuilt for Python 3.7 |
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.1-5 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild |
||||
|
||||
* Tue Jan 30 2018 Igor Gnatenko <ignatenko@redhat.com> - 0.11.1-4 |
||||
- Switch to %%ldconfig_scriptlets |
||||
|
||||
* Tue Nov 07 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.11.1-3 |
||||
- Use better Obsoletes for platform-python |
||||
|
||||
* Fri Nov 03 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.11.1-2 |
||||
- Remove platform-python subpackage |
||||
|
||||
* Mon Oct 16 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.11.1-1 |
||||
- Rerelease of 0.11.1-1 |
||||
- Improvement query performance |
||||
- Run file query in hy_subject_get_best_solution only for files (arguments that start with ``/`` or |
||||
``*/``) |
||||
- Resolves: rhbz#1498207 - DNF crash during upgrade installation F26 -> F27 |
||||
|
||||
* Tue Oct 10 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.11.0-1 |
||||
- Update to 0.11.0 |
||||
|
||||
* Mon Oct 02 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.10.1-2 |
||||
- Rerelease of 0.10.1-1 |
||||
|
||||
* Wed Sep 27 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.10.1-1 |
||||
- Update to 0.10.1 |
||||
- It improves query performance with name and arch filters. Also nevra filter will now |
||||
handle string with or without epoch. |
||||
- Additionally for python bindings it renames NEVRA._has_just_name() to NEVRA.has_just_name() due |
||||
to movement of code into c part of library. |
||||
- Resolves: rhbz#1260242 - --exclude does not affect dnf remove's removal of requirements |
||||
- Resolves: rhbz#1485881 - DNF claims it cannot install package, which have been already installed |
||||
- Resolves: rhbz#1361187 - [abrt] python-ipython-console: filter_updown(): python3.5 killed by SIGABRT |
||||
|
||||
* Fri Sep 15 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.9.3-8 |
||||
- Disable platform python on old releases |
||||
|
||||
* Tue Aug 15 2017 Lumír Balhar <lbalhar@redhat.com> - 0.9.3-7 |
||||
- Add platform-python subpackage |
||||
|
||||
* Fri Aug 11 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.9.3-6 |
||||
- Rebuilt after RPM update (№ 3) |
||||
|
||||
* Thu Aug 10 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.9.3-5 |
||||
- Rebuilt for RPM soname bump |
||||
|
||||
* Thu Aug 10 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.9.3-4 |
||||
- Rebuilt for RPM soname bump |
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-3 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild |
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.3-2 |
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild |
||||
|
||||
* Mon Jul 24 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.9.3-1 |
||||
- Update to 0.9.3 |
||||
|
||||
* Sat Jul 01 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.9.2-1 |
||||
- Update to 0.9.2 |
||||
|
||||
* Mon Jun 12 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.9.1-1 |
||||
- Update to 0.9.1 |
||||
|
||||
* Mon May 22 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.9.0-1 |
||||
- Update to 0.9.0 |
||||
|
||||
* Tue May 02 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.8.2-1 |
||||
- Update to 0.8.2 |
||||
|
||||
* Fri Mar 24 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.8.1-1 |
||||
- Update to 0.8.1 |
||||
|
||||
* Tue Mar 21 2017 Jaroslav Mracek <jmracek@redhat.com> - 0.8.0-1 |
||||
- Update to 0.8.0 |
||||
|
||||
* Mon Feb 20 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.7.4-1 |
||||
- Update to 0.7.4 |
||||
|
||||
* Fri Feb 10 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.7.3-1 |
||||
- Update to 0.7.3 |
||||
|
||||
* Wed Feb 08 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.7.2-1 |
||||
- 0.7.2 |
||||
|
||||
* Fri Jan 06 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.7.1-1 |
||||
- 0.7.1 |
||||
|
||||
* Wed Dec 21 2016 Peter Robinson <pbrobinson@fedoraproject.org> 0.7.0-0.7gitf9b798c |
||||
- Rebuild for Python 3.6 |
||||
|
||||
* Mon Dec 19 2016 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 0.7.0-0.6gitf9b798c |
||||
- Use new upstream URL |
||||
|
||||
* Tue Dec 13 2016 Stratakis Charalampos <cstratak@redhat.com> - 0.7.0-0.5gitf9b798c |
||||
- Rebuild for Python 3.6 |
||||
|
||||
* Tue Dec 06 2016 Martin Hatina <mhatina@redhat.com> - 0.7.0-0.4gitf9b798c |
||||
- Increase conflict version of dnf |
||||
|
||||
* Thu Dec 01 2016 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 0.7.0-0.3gitf9b798c |
||||
- Update to latest snapshot |
||||
|
||||
* Fri Nov 04 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.7.0-0.2git8bd77f8 |
||||
- Update to latest snapshot |
||||
|
||||
* Thu Sep 29 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.7.0-0.1git179c0a6 |
||||
- Initial package |
Loading…
Reference in new issue