From 12d531220eed90a5847ce276d65c034726dafce9 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 28 Mar 2023 09:17:29 +0000 Subject: [PATCH] import microdnf-3.9.1-3.el9 --- .gitignore | 1 + .microdnf.metadata | 1 + ...ves-Treat-recommends-as-dependencies.patch | 103 ++++ SOURCES/0002-Revert-Add-leaves-command.patch | 522 ++++++++++++++++++ SPECS/microdnf.spec | 203 +++++++ 5 files changed, 830 insertions(+) create mode 100644 .gitignore create mode 100644 .microdnf.metadata create mode 100644 SOURCES/0001-Revert-leaves-Treat-recommends-as-dependencies.patch create mode 100644 SOURCES/0002-Revert-Add-leaves-command.patch create mode 100644 SPECS/microdnf.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cd589b5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/microdnf-3.9.1.tar.gz diff --git a/.microdnf.metadata b/.microdnf.metadata new file mode 100644 index 0000000..fde62e2 --- /dev/null +++ b/.microdnf.metadata @@ -0,0 +1 @@ +5f3d4fbcd45e1fe8f31453357286ee8d249699f5 SOURCES/microdnf-3.9.1.tar.gz diff --git a/SOURCES/0001-Revert-leaves-Treat-recommends-as-dependencies.patch b/SOURCES/0001-Revert-leaves-Treat-recommends-as-dependencies.patch new file mode 100644 index 0000000..e9f36b8 --- /dev/null +++ b/SOURCES/0001-Revert-leaves-Treat-recommends-as-dependencies.patch @@ -0,0 +1,103 @@ +From 61c94be108ed5b525ab330175523a224b8922b70 Mon Sep 17 00:00:00 2001 +From: Emil Renner Berthing +Date: Wed, 1 Jun 2022 15:07:27 +0200 +Subject: [PATCH 1/2] Revert "leaves: Treat recommends as dependencies when + install_weak_deps=True" + +This reverts commit 5275fe83fa5a941f994a81a2546ae1d8dc095e96. +--- + dnf/plugins/leaves/dnf-command-leaves.c | 60 +++++++++++-------------- + 1 file changed, 27 insertions(+), 33 deletions(-) + +diff --git a/dnf/plugins/leaves/dnf-command-leaves.c b/dnf/plugins/leaves/dnf-command-leaves.c +index 7789dfc..f264f65 100644 +--- a/dnf/plugins/leaves/dnf-command-leaves.c ++++ b/dnf/plugins/leaves/dnf-command-leaves.c +@@ -80,35 +80,8 @@ gtree_dnf_package_cmp (gconstpointer a, gconstpointer b) + return dnf_package_cmp ((DnfPackage *)a, (DnfPackage *)b); + } + +-static void +-add_edges (GHashTable *edges, HyQuery query, GTree *pkg2idx, DnfReldepList *deps) +-{ +- const gint ndeps = dnf_reldep_list_count (deps); +- +- // resolve dependencies and add an edge if there is exactly one package satisfying it +- for (gint j = 0; j < ndeps; j++) +- { +- DnfReldep *dep = dnf_reldep_list_index (deps, j); +- +- hy_query_filter_reldep (query, HY_PKG_PROVIDES, dep); +- g_autoptr(GPtrArray) ppkgs = hy_query_run (query); +- hy_query_clear (query); +- dnf_reldep_free (dep); +- +- if (ppkgs->len != 1) +- continue; +- +- const DnfPackage *ppkg = g_ptr_array_index (ppkgs, 0); +- GTreeNode *node = g_tree_lookup_node (pkg2idx, ppkg);; +- g_assert (node); +- g_hash_table_insert (edges, g_tree_node_value (node), NULL); +- } +- +- dnf_reldep_list_free (deps); +-} +- + static GPtrArray * +-build_graph (HyQuery query, const GPtrArray *pkgs, gboolean recommends) ++build_graph (HyQuery query, const GPtrArray *pkgs) + { + // create pkg2idx to map DnfPackages to their index in pkgs + g_autoptr(GTree) pkg2idx = g_tree_new (gtree_dnf_package_cmp); +@@ -121,13 +94,34 @@ build_graph (HyQuery query, const GPtrArray *pkgs, gboolean recommends) + GPtrArray *graph = g_ptr_array_new_full (pkgs->len, g_free); + g_autoptr(GHashTable) edges = g_hash_table_new (g_direct_hash, g_direct_equal); + ++ // for each package resolve its dependencies and add an edge if there is ++ // exactly one package satisfying it + for (guint i = 0; i < pkgs->len; i++) + { + DnfPackage *pkg = g_ptr_array_index (pkgs, i); +- add_edges (edges, query, pkg2idx, dnf_package_get_requires (pkg)); +- if (recommends) +- add_edges (edges, query, pkg2idx, dnf_package_get_recommends (pkg)); +- g_hash_table_remove (edges, GUINT_TO_POINTER (i)); // remove self-edges ++ g_autoptr(DnfReldepList) reqs = dnf_package_get_requires (pkg); ++ ++ const gint nreqs = dnf_reldep_list_count (reqs); ++ for (gint j = 0; j < nreqs; j++) ++ { ++ DnfReldep *req = dnf_reldep_list_index (reqs, j); ++ ++ hy_query_filter_reldep (query, HY_PKG_PROVIDES, req); ++ g_autoptr(GPtrArray) ppkgs = hy_query_run (query); ++ hy_query_clear (query); ++ dnf_reldep_free (req); ++ ++ if (ppkgs->len != 1) ++ continue; ++ ++ DnfPackage *ppkg = g_ptr_array_index (ppkgs, 0); ++ GTreeNode *node = g_tree_lookup_node (pkg2idx, ppkg);; ++ g_assert (node); ++ guint idx = GPOINTER_TO_UINT (g_tree_node_value (node)); ++ if (idx != i) // don't add self-edges ++ g_hash_table_insert (edges, GUINT_TO_POINTER (idx), NULL); ++ } ++ + g_ptr_array_add (graph, idx_array_from_set (edges)); + } + +@@ -341,7 +335,7 @@ dnf_command_leaves_run (DnfCommand *cmd, + g_ptr_array_sort (pkgs, gptrarr_dnf_package_cmp); + + // build the directed graph of dependencies +- g_autoptr(GPtrArray) graph = build_graph (query, pkgs, dnf_context_get_install_weak_deps ()); ++ g_autoptr(GPtrArray) graph = build_graph (query, pkgs); + + // run Kosaraju's algorithm to find strongly connected components + // withhout any incoming edges +-- +2.37.3 + diff --git a/SOURCES/0002-Revert-Add-leaves-command.patch b/SOURCES/0002-Revert-Add-leaves-command.patch new file mode 100644 index 0000000..b2afc64 --- /dev/null +++ b/SOURCES/0002-Revert-Add-leaves-command.patch @@ -0,0 +1,522 @@ +From f4aa2e7c3021775e38d259fe818a94fca4f4fbfc Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Mon, 31 Oct 2022 10:34:23 +0100 +Subject: [PATCH 2/2] Revert "Add leaves command" + +This reverts commit d1be5fd8fbf07d1204403f641044c83f940ea08a. +--- + dnf/CMakeLists.txt | 6 - + dnf/meson.build | 9 - + dnf/plugins/leaves/dnf-command-leaves.c | 386 ------------------ + .../leaves/dnf-command-leaves.gresource.xml | 6 - + dnf/plugins/leaves/dnf-command-leaves.h | 31 -- + dnf/plugins/leaves/leaves.plugin | 9 - + 6 files changed, 447 deletions(-) + delete mode 100644 dnf/plugins/leaves/dnf-command-leaves.c + delete mode 100644 dnf/plugins/leaves/dnf-command-leaves.gresource.xml + delete mode 100644 dnf/plugins/leaves/dnf-command-leaves.h + delete mode 100644 dnf/plugins/leaves/leaves.plugin + +diff --git a/dnf/CMakeLists.txt b/dnf/CMakeLists.txt +index a85906b..89cd1e4 100644 +--- a/dnf/CMakeLists.txt ++++ b/dnf/CMakeLists.txt +@@ -35,11 +35,6 @@ glib_compile_resources (DNF_COMMAND_REPOQUERY plugins/repoquery/dnf-command-repo + INTERNAL) + list (APPEND DNF_COMMAND_REPOQUERY "plugins/repoquery/dnf-command-repoquery.c") + +-glib_compile_resources (DNF_COMMAND_LEAVES plugins/leaves/dnf-command-leaves.gresource.xml +- C_PREFIX dnf_command_leaves +- INTERNAL) +-list (APPEND DNF_COMMAND_LEAVES "plugins/leaves/dnf-command-leaves.c") +- + glib_compile_resources (DNF_COMMAND_CLEAN plugins/clean/dnf-command-clean.gresource.xml + C_PREFIX dnf_command_clean + INTERNAL) +@@ -80,7 +75,6 @@ add_executable (microdnf dnf-main.c ${DNF_SRCS} + ${DNF_COMMAND_DISTROSYNC} + ${DNF_COMMAND_REPOLIST} + ${DNF_COMMAND_REPOQUERY} +- ${DNF_COMMAND_LEAVES} + ${DNF_COMMAND_CLEAN} + ${DNF_COMMAND_DOWNLOAD} + ${DNF_COMMAND_MAKECACHE} +diff --git a/dnf/meson.build b/dnf/meson.build +index 074d347..daf8fd7 100644 +--- a/dnf/meson.build ++++ b/dnf/meson.build +@@ -66,15 +66,6 @@ microdnf_srcs = [ + ), + 'plugins/repoquery/dnf-command-repoquery.c', + +- # leaves +- gnome.compile_resources( +- 'dnf-leaves', +- 'plugins/leaves/dnf-command-leaves.gresource.xml', +- c_name : 'dnf_command_leaves', +- source_dir : 'plugins/leaves', +- ), +- 'plugins/leaves/dnf-command-leaves.c', +- + # clean + gnome.compile_resources( + 'dnf-clean', +diff --git a/dnf/plugins/leaves/dnf-command-leaves.c b/dnf/plugins/leaves/dnf-command-leaves.c +deleted file mode 100644 +index f264f65..0000000 +--- a/dnf/plugins/leaves/dnf-command-leaves.c ++++ /dev/null +@@ -1,386 +0,0 @@ +-/* dnf-command-leaves.c +- * +- * Copyright © 2022 Emil Renner Berthing +- * +- * This program is free software: you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation, either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program. If not, see . +- */ +- +-#include "dnf-command-leaves.h" +- +-typedef struct { +- guint len; +- guint idx[]; +-} IdxArray; +- +-static IdxArray * +-idx_array_new (guint len) +-{ +- return g_malloc0 (G_STRUCT_OFFSET (IdxArray, idx) + len * sizeof (guint)); +-} +- +-static void +-idx_array_add (IdxArray *arr, guint idx) +-{ +- arr->idx[arr->len++] = idx; +-} +- +-static gboolean +-idx_array_from_set_iter (gpointer key, gpointer value, gpointer user_data) +-{ +- IdxArray *arr = user_data; +- idx_array_add (arr, GPOINTER_TO_UINT (key)); +- return TRUE; +-} +- +-static gint +-idx_array_compare_func (gconstpointer a, gconstpointer b, gpointer user_data) +-{ +- guint x = *(const guint *)a; +- guint y = *(const guint *)b; +- +- if (x < y) +- return -1; +- return x > y; +-} +- +-static IdxArray * +-idx_array_copy (const guint *idx, guint len) +-{ +- IdxArray *arr = idx_array_new (len); +- arr->len = len; +- for (guint i = 0; i < len; i++) +- arr->idx[i] = idx[i]; +- g_qsort_with_data (arr->idx, arr->len, sizeof (*arr->idx), idx_array_compare_func, NULL); +- return arr; +-} +- +-static IdxArray * +-idx_array_from_set (GHashTable *set) +-{ +- IdxArray *arr = idx_array_new (g_hash_table_size (set)); +- g_hash_table_foreach_remove (set, idx_array_from_set_iter, arr); +- g_qsort_with_data (arr->idx, arr->len, sizeof (*arr->idx), idx_array_compare_func, NULL); +- return arr; +-} +- +-static gint +-gtree_dnf_package_cmp (gconstpointer a, gconstpointer b) +-{ +- return dnf_package_cmp ((DnfPackage *)a, (DnfPackage *)b); +-} +- +-static GPtrArray * +-build_graph (HyQuery query, const GPtrArray *pkgs) +-{ +- // create pkg2idx to map DnfPackages to their index in pkgs +- g_autoptr(GTree) pkg2idx = g_tree_new (gtree_dnf_package_cmp); +- for (guint i = 0; i < pkgs->len; i++) +- { +- DnfPackage *pkg = g_ptr_array_index (pkgs, i); +- g_tree_insert (pkg2idx, pkg, GUINT_TO_POINTER (i)); +- } +- +- GPtrArray *graph = g_ptr_array_new_full (pkgs->len, g_free); +- g_autoptr(GHashTable) edges = g_hash_table_new (g_direct_hash, g_direct_equal); +- +- // for each package resolve its dependencies and add an edge if there is +- // exactly one package satisfying it +- for (guint i = 0; i < pkgs->len; i++) +- { +- DnfPackage *pkg = g_ptr_array_index (pkgs, i); +- g_autoptr(DnfReldepList) reqs = dnf_package_get_requires (pkg); +- +- const gint nreqs = dnf_reldep_list_count (reqs); +- for (gint j = 0; j < nreqs; j++) +- { +- DnfReldep *req = dnf_reldep_list_index (reqs, j); +- +- hy_query_filter_reldep (query, HY_PKG_PROVIDES, req); +- g_autoptr(GPtrArray) ppkgs = hy_query_run (query); +- hy_query_clear (query); +- dnf_reldep_free (req); +- +- if (ppkgs->len != 1) +- continue; +- +- DnfPackage *ppkg = g_ptr_array_index (ppkgs, 0); +- GTreeNode *node = g_tree_lookup_node (pkg2idx, ppkg);; +- g_assert (node); +- guint idx = GPOINTER_TO_UINT (g_tree_node_value (node)); +- if (idx != i) // don't add self-edges +- g_hash_table_insert (edges, GUINT_TO_POINTER (idx), NULL); +- } +- +- g_ptr_array_add (graph, idx_array_from_set (edges)); +- } +- +- return graph; +-} +- +-static GPtrArray * +-reverse_graph (const GPtrArray *graph) +-{ +- g_autofree guint *len = g_malloc0 (graph->len * sizeof (*len)); +- +- for (guint i = 0; i < graph->len; i++) +- { +- const IdxArray *edges = g_ptr_array_index (graph, i); +- +- for (guint j = 0; j < edges->len; j++) +- len[edges->idx[j]]++; +- } +- +- GPtrArray *rgraph = g_ptr_array_new_full (graph->len, g_free); +- for (guint i = 0; i < graph->len; i++) +- g_ptr_array_add (rgraph, idx_array_new (len[i])); +- +- for (guint i = 0; i < graph->len; i++) +- { +- const IdxArray *edges = g_ptr_array_index (graph, i); +- +- for (guint j = 0; j < edges->len; j++) +- { +- IdxArray *redges = g_ptr_array_index (rgraph, edges->idx[j]); +- idx_array_add (redges, i); +- } +- } +- +- return rgraph; +-} +- +-static GPtrArray * +-kosaraju (const GPtrArray *graph) +-{ +- const guint N = graph->len; +- g_autofree guint *rstack = g_malloc (N * sizeof (*rstack)); +- g_autofree guint *stack = g_malloc (N * sizeof (*stack)); +- g_autofree gboolean *tag = g_malloc0 (N * sizeof (*tag)); +- guint r = N; +- guint top = 0; +- +- // do depth-first searches in the graph and push nodes to rstack +- // "on the way up" until all nodes have been pushed. +- // tag nodes as they're processed so we don't visit them more than once +- for (guint i = 0; i < N; i++) +- { +- if (tag[i]) +- continue; +- +- guint u = i; +- guint j = 0; +- tag[u] = TRUE; +- while (true) +- { +- const IdxArray *edges = g_ptr_array_index (graph, u); +- if (j < edges->len) +- { +- const guint v = edges->idx[j++]; +- if (!tag[v]) +- { +- rstack[top] = j; +- stack[top++] = u; +- u = v; +- j = 0; +- tag[u] = TRUE; +- } +- } +- else +- { +- rstack[--r] = u; +- if (!top) +- break; +- u = stack[--top]; +- j = rstack[top]; +- } +- } +- } +- g_assert (r == 0); +- +- // now searches beginning at nodes popped from rstack in the graph with all +- // edges reversed will give us the strongly connected components. +- // this time all nodes are tagged, so let's remove the tags as we visit each +- // node. +- // the incoming edges to each component is the union of incoming edges to +- // each node in the component minus the incoming edges from component nodes +- // themselves. +- // if there are no such incoming edges the component is a leaf and we +- // add it to the array of leaves. +- g_autoptr(GPtrArray) rgraph = reverse_graph (graph); +- g_autoptr(GHashTable) sccredges = g_hash_table_new (g_direct_hash, g_direct_equal); +- GPtrArray *leaves = g_ptr_array_new_with_free_func (g_free); +- for (; r < N; r++) +- { +- guint u = rstack[r]; +- if (!tag[u]) +- continue; +- +- stack[top++] = u; +- tag[u] = FALSE; +- guint s = N; +- while (top) +- { +- u = stack[--s] = stack[--top]; +- const IdxArray *redges = g_ptr_array_index (rgraph, u); +- for (guint j = 0; j < redges->len; j++) +- { +- const guint v = redges->idx[j]; +- g_hash_table_insert (sccredges, GUINT_TO_POINTER (v), NULL); +- if (!tag[v]) +- continue; +- +- stack[top++] = v; +- tag[v] = FALSE; +- } +- } +- +- for (guint i = s; i < N; i++) +- g_hash_table_remove (sccredges, GUINT_TO_POINTER (stack[i])); +- +- if (g_hash_table_size (sccredges) == 0) +- g_ptr_array_add (leaves, idx_array_copy (&stack[s], N - s)); +- else +- g_hash_table_remove_all (sccredges); +- } +- +- return leaves; +-} +- +-struct _DnfCommandLeaves +-{ +- PeasExtensionBase parent_instance; +-}; +- +-static void dnf_command_leaves_iface_init (DnfCommandInterface *iface); +- +-G_DEFINE_DYNAMIC_TYPE_EXTENDED (DnfCommandLeaves, +- dnf_command_leaves, +- PEAS_TYPE_EXTENSION_BASE, +- 0, +- G_IMPLEMENT_INTERFACE (DNF_TYPE_COMMAND, +- dnf_command_leaves_iface_init)) +- +-static void +-dnf_command_leaves_init (DnfCommandLeaves *self) +-{ +-} +- +-static void +-disable_available_repos (DnfContext *ctx) +-{ +- const GPtrArray *repos = dnf_context_get_repos (ctx); +- +- for (guint i = 0; i < repos->len; ++i) +- { +- DnfRepo *repo = g_ptr_array_index (repos, i); +- dnf_repo_set_enabled (repo, DNF_REPO_ENABLED_NONE); +- } +-} +- +-static gint +-gptrarr_dnf_package_cmp (gconstpointer a, gconstpointer b) +-{ +- DnfPackage *const *x = a; +- DnfPackage *const *y = b; +- return dnf_package_cmp (*x, *y); +-} +- +-static gint +-gptrarr_first_package_cmp (gconstpointer a, gconstpointer b) +-{ +- IdxArray *const *x = a; +- IdxArray *const *y = b; +- guint i = (*x)->idx[0]; +- guint j = (*y)->idx[0]; +- +- if (i < j) +- return -1; +- return i > j; +-} +- +-static gboolean +-dnf_command_leaves_run (DnfCommand *cmd, +- int argc, +- char *argv[], +- GOptionContext *opt_ctx, +- DnfContext *ctx, +- GError **error) +-{ +- if (!g_option_context_parse (opt_ctx, &argc, &argv, error)) +- return FALSE; +- +- // only look at installed packages +- disable_available_repos (ctx); +- if (!dnf_context_setup_sack_with_flags (ctx, +- dnf_context_get_state (ctx), +- DNF_CONTEXT_SETUP_SACK_FLAG_NONE, +- error)) { +- +- return FALSE; +- } +- +- // get a sorted array of all installed packages +- hy_autoquery HyQuery query = hy_query_create (dnf_context_get_sack (ctx)); +- g_autoptr(GPtrArray) pkgs = hy_query_run (query); +- g_ptr_array_sort (pkgs, gptrarr_dnf_package_cmp); +- +- // build the directed graph of dependencies +- g_autoptr(GPtrArray) graph = build_graph (query, pkgs); +- +- // run Kosaraju's algorithm to find strongly connected components +- // withhout any incoming edges +- g_autoptr(GPtrArray) leaves = kosaraju (graph); +- g_ptr_array_sort (leaves, gptrarr_first_package_cmp); +- +- // print the packages grouped by their components +- for (guint i = 0; i < leaves->len; i++) +- { +- const IdxArray *scc = g_ptr_array_index (leaves, i); +- gchar mark = '-'; +- +- for (guint j = 0; j < scc->len; j++) +- { +- DnfPackage *pkg = g_ptr_array_index (pkgs, scc->idx[j]); +- g_print ("%c %s\n", mark, dnf_package_get_nevra (pkg)); +- mark = ' '; +- } +- } +- +- return TRUE; +-} +- +-static void +-dnf_command_leaves_class_init (DnfCommandLeavesClass *klass) +-{ +-} +- +-static void +-dnf_command_leaves_iface_init (DnfCommandInterface *iface) +-{ +- iface->run = dnf_command_leaves_run; +-} +- +-static void +-dnf_command_leaves_class_finalize (DnfCommandLeavesClass *klass) +-{ +-} +- +-G_MODULE_EXPORT void +-dnf_command_leaves_register_types (PeasObjectModule *module) +-{ +- dnf_command_leaves_register_type (G_TYPE_MODULE (module)); +- +- peas_object_module_register_extension_type (module, +- DNF_TYPE_COMMAND, +- DNF_TYPE_COMMAND_LEAVES); +-} +diff --git a/dnf/plugins/leaves/dnf-command-leaves.gresource.xml b/dnf/plugins/leaves/dnf-command-leaves.gresource.xml +deleted file mode 100644 +index b679fb6..0000000 +--- a/dnf/plugins/leaves/dnf-command-leaves.gresource.xml ++++ /dev/null +@@ -1,6 +0,0 @@ +- +- +- +- leaves.plugin +- +- +diff --git a/dnf/plugins/leaves/dnf-command-leaves.h b/dnf/plugins/leaves/dnf-command-leaves.h +deleted file mode 100644 +index e78c857..0000000 +--- a/dnf/plugins/leaves/dnf-command-leaves.h ++++ /dev/null +@@ -1,31 +0,0 @@ +-/* dnf-command-leaves.h +- * +- * Copyright © 2022 Emil Renner Berthing +- * +- * This program is free software: you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation, either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program. If not, see . +- */ +- +-#pragma once +- +-#include "dnf-command.h" +-#include +- +-G_BEGIN_DECLS +- +-#define DNF_TYPE_COMMAND_LEAVES dnf_command_leaves_get_type () +-G_DECLARE_FINAL_TYPE (DnfCommandLeaves, dnf_command_leaves, DNF, COMMAND_LEAVES, PeasExtensionBase) +- +-G_MODULE_EXPORT void dnf_command_leaves_register_types (PeasObjectModule *module); +- +-G_END_DECLS +diff --git a/dnf/plugins/leaves/leaves.plugin b/dnf/plugins/leaves/leaves.plugin +deleted file mode 100644 +index 4deb320..0000000 +--- a/dnf/plugins/leaves/leaves.plugin ++++ /dev/null +@@ -1,9 +0,0 @@ +-[Plugin] +-Module = command_leaves +-Embedded = dnf_command_leaves_register_types +-Name = leaves +-Description = List installed packages not required by other installed packages +-Authors = Emil Renner Berthing +-License = GPL-2.0+ +-Copyright = Copyright (C) 2022 Emil Renner Berthing +-X-Command-Syntax = leaves +-- +2.37.3 + diff --git a/SPECS/microdnf.spec b/SPECS/microdnf.spec new file mode 100644 index 0000000..49065cd --- /dev/null +++ b/SPECS/microdnf.spec @@ -0,0 +1,203 @@ +%global libdnf_version 0.62.0 + +Name: microdnf +Version: 3.9.1 +Release: 3%{?dist} +Summary: Lightweight implementation of DNF in C + +License: GPLv2+ +URL: https://github.com/rpm-software-management/microdnf +Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz +Patch1: 0001-Revert-leaves-Treat-recommends-as-dependencies.patch +Patch2: 0002-Revert-Add-leaves-command.patch + +BuildRequires: gcc +BuildRequires: meson >= 0.36.0 +BuildRequires: pkgconfig(glib-2.0) >= 2.44.0 +BuildRequires: pkgconfig(gobject-2.0) >= 2.44.0 +BuildRequires: pkgconfig(libpeas-1.0) >= 1.20.0 +BuildRequires: pkgconfig(libdnf) >= %{libdnf_version} +BuildRequires: pkgconfig(smartcols) +BuildRequires: help2man + +Requires: libdnf%{?_isa} >= %{libdnf_version} +%if 0%{?rhel} > 8 || 0%{?fedora} +# Ensure DNF package manager configuration skeleton is installed +Requires: dnf-data +%endif + +%description +Micro DNF is a lightweight C implementation of DNF, designed to be used +for doing simple packaging actions when you don't need full-blown DNF and +you want the tiniest useful environments possible. + +That is, you don't want any interpreter stack and you want the most +minimal environment possible so you can build up to exactly what you need. + + +%prep +%autosetup -p1 + +%build +%meson +%meson_build + +%install +%meson_install + +%check +%meson_test + +%files +%license COPYING +%doc README.md +%{_mandir}/man8/microdnf.8* +%{_bindir}/%{name} + +%changelog +* Fri Jan 06 2023 Nicola Sella - 3.9.1-3 +- Bump release (needed to rebuild) + +* Mon Oct 31 2022 Nicola Sella - 3.9.1-2 +- Revert: leaves: Treat recommends as dependencies when install_weak_deps=True +- Revert: Add leaves command + +* Thu Sep 22 2022 Lukas Hrazky - 3.9.1-1 +- Update to 3.9.1 +- leaves: Treat recommends as dependencies when install_weak_deps=True +- Add leaves command +- Remove non-breaking space from "Size" column (RhBug:2010676) + +* Mon Aug 09 2021 Mohan Boddu - 3.8.0-3 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Jun 22 2021 Mohan Boddu - 3.8.0-2 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Wed Jun 02 2021 Pavla Kratochvilova - 3.8.0-1 +- Update to 3.8.0 +- distrosync: Fix style issues and plugin build with Meson +- Add distro-sync subcommand +- Add "makecache" command + +* Fri Apr 16 2021 Mohan Boddu - 3.7.1-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Mon Mar 01 2021 Nicola Sella - 3.7.1-1 +- Update to 3.7.1 +- [download] fix: unwanted dependency on newer glib +- [download] Support for "--resolve" and "--alldeps" arguments +- [download] New get_packages_query function +- Support "--setopt=keepcache=0/1" +- [download] Support "--archlist=" argument +- [download] Move package download code to "download_packages" function +- [download] several optimizations +- Don't set default value of "assumeyes" to TRUE +- Support for user confirmation and assumeyes, assumeno, defaultyes +- Extend "--setopt" to support repository options +- Added alias "update" to "upgrade" command +- Command "update" renamed to "upgrade" +- Add support for command aliases +- dnf-data requirement only for Fedora and future RHEL +- Relicense to GPLv2+ [errata corrige: not in 3.5.1-1] +- Sync summary and description from openSUSE [errata corrige: not in 3.6.0-1] + +* Thu Jan 28 2021 Nicola Sella - 3.6.0-1 +- Update to 3.6.0 +- spec: Sync summary and description from openSUSE +- Add support for setting a platform module ID +- Add dependency for DNF configurations skeleton +- Add support for setting allow_vendor_change + +* Tue Jan 26 2021 Fedora Release Engineering - 3.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Nov 26 2020 Nicola Sella - 3.5.1-1 +- Update to 3.5.1 +- Relicense to GPLv2+ +- Bump minimum version of libdnf in CMake and Meson + +* Fri Nov 13 2020 Nicola Sella - 3.5.0-1 +- Update to 3.5.0 +- Add module enable and disable commands +- Add reports of module changes +- Add "module enable" command +- Add subcommands support +- Print info about obsoleted packages before transaction (RhBug:1855542) + +* Tue Jul 28 2020 Fedora Release Engineering - 3.4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jan 29 2020 Fedora Release Engineering - 3.4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Ales Matej - 3.4.0-1 +- Add reinstall command +- Add "--setopt=tsflags=test" support +- Add "--setopt=reposdir=" and "--setopt=varsdir=,,..." support +- Add "--config=" support +- Add "--disableplugin", "--enableplugin" support (RhBug:1781126) +- Add "--noplugins" support +- Add "--setopt=cachedir=" support +- Add "--installroot=" support +- Add "--refresh" support +- Support "install_weak_deps" conf option and "--setopt=install_weak_deps=0/1" +- Respect reposdir from conf file +- Respect "metadata_expire" conf file opton (RhBug:1771147) +- Fix: Don't print lines with (null) in transaction report (RhBug:1691353) +- [repolist] Print padding spaces only if output is terminal + +* Fri Nov 29 2019 Ales Matej - 3.3.0-1 +- Update to 3.3.0 +- Fix: do not download metadata in remove command +- Add repolist command (RhBug:1584952) +- Add repoquery command (RhBug:1769245) + +* Wed Nov 06 2019 Pavla Kratochvilova - 3.0.2-1 +- Update to 3.0.2 +- Add support for --releasever (RhBug:1591627) +- Fix minor memory leaks (RhBug:1702283) +- Use help2man to generate a man page (RhBug:1612520) +- Allow downgrade for all transactions microdnf does (RhBug:1725863) +- Add options --best and --nobest for transactions (RhBug:1679476) + +* Thu Jul 25 2019 Fedora Release Engineering - 3.0.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 3.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 3.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Jun 27 2018 Jaroslav Mracek - 3.0.1-1 +- Update to 3.0.1 + +* Thu Feb 08 2018 Fedora Release Engineering - 3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Jul 22 2017 Igor Gnatenko - 3-2 +- No CMake, only meson + +* Thu Jun 01 2017 Igor Gnatenko - 3-1 +- Update to 3 + +* Fri May 12 2017 Igor Gnatenko - 2-3 +- Apply few patches from upstream + +* Fri Feb 10 2017 Fedora Release Engineering - 2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 02 2017 Igor Gnatenko - 2-1 +- Update to 2 + +* Mon Dec 12 2016 Igor Gnatenko - 1-1 +- Initial package