From 88602163094d654451a9586121aa8ff6fd7c96b0 Mon Sep 17 00:00:00 2001
From: Jaroslav Mracek <jmracek@redhat.com>
Date: Wed, 23 Oct 2019 13:14:45 +0200
Subject: [PATCH 1/3] Add option best for transactions (RhBug:1679476)
It adds option `--best` plus default is handled from libdnf.conf and
dnf.conf
https://bugzilla.redhat.com/show_bug.cgi?id=1679476
---
dnf/dnf-main.c | 7 ++++++-
dnf/plugins/install/dnf-command-install.c | 7 ++++++-
dnf/plugins/update/dnf-command-update.c | 8 ++++++--
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/dnf/dnf-main.c b/dnf/dnf-main.c
index 693ad7f..0dce9b2 100644
--- a/dnf/dnf-main.c
+++ b/dnf/dnf-main.c
@@ -28,6 +28,7 @@
static gboolean opt_yes = TRUE;
static gboolean opt_nodocs = FALSE;
+static gboolean opt_best = FALSE;
static gboolean show_help = FALSE;
static gboolean dl_pkgs_printed = FALSE;
static GSList *enable_disable_repos = NULL;
@@ -82,6 +83,7 @@ process_global_option (const gchar *option_name,
static const GOptionEntry global_opts[] = {
{ "assumeyes", 'y', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &opt_yes, "Does nothing, we always assume yes", NULL },
+ { "best", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &opt_best, "Try the best available package versions in transactions", NULL },
{ "disablerepo", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, process_global_option, "Disable repository by an id", "ID" },
{ "enablerepo", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, process_global_option, "Enable repository by an id", "ID" },
{ "nodocs", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &opt_nodocs, "Install packages without docs", NULL },
@@ -283,7 +285,10 @@ main (int argc,
dnf_transaction_set_flags (txn, flags);
}
-
+ if (!show_help && opt_best)
+ {
+ dnf_context_set_best(opt_best);
+ }
/*
* The first non-option is the command.
* Get it and remove it from arguments.
diff --git a/dnf/plugins/install/dnf-command-install.c b/dnf/plugins/install/dnf-command-install.c
index ea549da..0b2f5e5 100644
--- a/dnf/plugins/install/dnf-command-install.c
+++ b/dnf/plugins/install/dnf-command-install.c
@@ -73,7 +73,12 @@ dnf_command_install_run (DnfCommand *cmd,
if (!dnf_context_install (ctx, *pkg, error))
return FALSE;
}
- if (!dnf_goal_depsolve (dnf_context_get_goal (ctx), DNF_INSTALL, error))
+ DnfGoalActions flags = DNF_INSTALL;
+ if (dnf_context_get_best())
+ {
+ flags |= DNF_FORCE_BEST;
+ }
+ if (!dnf_goal_depsolve (dnf_context_get_goal (ctx), flags, error))
return FALSE;
if (!dnf_utils_print_transaction (ctx))
return TRUE;
diff --git a/dnf/plugins/update/dnf-command-update.c b/dnf/plugins/update/dnf-command-update.c
index 652d902..7bf1334 100644
--- a/dnf/plugins/update/dnf-command-update.c
+++ b/dnf/plugins/update/dnf-command-update.c
@@ -70,8 +70,12 @@ dnf_command_update_run (DnfCommand *cmd,
return FALSE;
}
}
-
- if (!dnf_goal_depsolve (dnf_context_get_goal (ctx), 0, error))
+ DnfGoalActions flags = 0;
+ if (dnf_context_get_best())
+ {
+ flags |= DNF_FORCE_BEST;
+ }
+ if (!dnf_goal_depsolve (dnf_context_get_goal (ctx), flags, error))
return FALSE;
if (!dnf_utils_print_transaction (ctx))
return TRUE;
--
2.21.0
From 6a4a490d368fc7982264f8ab898e4bd195576b30 Mon Sep 17 00:00:00 2001
From: Jaroslav Mracek <jmracek@redhat.com>
Date: Wed, 23 Oct 2019 13:15:17 +0200
Subject: [PATCH 2/3] Initialized to use tito.
---
.tito/packages/.readme | 3 +++
.tito/tito.props | 5 +++++
2 files changed, 8 insertions(+)
create mode 100644 .tito/packages/.readme
create mode 100644 .tito/tito.props
diff --git a/.tito/packages/.readme b/.tito/packages/.readme
new file mode 100644
index 0000000..b9411e2
--- /dev/null
+++ b/.tito/packages/.readme
@@ -0,0 +1,3 @@
+the .tito/packages directory contains metadata files
+named after their packages. Each file has the latest tagged
+version and the project's relative directory.
diff --git a/.tito/tito.props b/.tito/tito.props
new file mode 100644
index 0000000..eab3f19
--- /dev/null
+++ b/.tito/tito.props
@@ -0,0 +1,5 @@
+[buildconfig]
+builder = tito.builder.Builder
+tagger = tito.tagger.VersionTagger
+changelog_do_not_remove_cherrypick = 0
+changelog_format = %s (%ae)
--
2.21.0
From 4af6a4c76e7bce0ce06188319b0b4c21a235266c Mon Sep 17 00:00:00 2001
From: Jaroslav Mracek <jmracek@redhat.com>
Date: Wed, 23 Oct 2019 15:07:55 +0200
Subject: [PATCH 3/3] Add option --nobest
It is used to overwrite configuration of best option. It is useful when
best=True is default.
---
dnf/dnf-main.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/dnf/dnf-main.c b/dnf/dnf-main.c
index 0dce9b2..4f19489 100644
--- a/dnf/dnf-main.c
+++ b/dnf/dnf-main.c
@@ -29,6 +29,7 @@
static gboolean opt_yes = TRUE;
static gboolean opt_nodocs = FALSE;
static gboolean opt_best = FALSE;
+static gboolean opt_nobest = FALSE;
static gboolean show_help = FALSE;
static gboolean dl_pkgs_printed = FALSE;
static GSList *enable_disable_repos = NULL;
@@ -86,6 +87,7 @@ static const GOptionEntry global_opts[] = {
{ "best", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &opt_best, "Try the best available package versions in transactions", NULL },
{ "disablerepo", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, process_global_option, "Disable repository by an id", "ID" },
{ "enablerepo", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, process_global_option, "Enable repository by an id", "ID" },
+ { "nobest", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &opt_nobest, "Do not limit the transaction to the best candidates", NULL },
{ "nodocs", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &opt_nodocs, "Install packages without docs", NULL },
{ "releasever", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, process_global_option, "Override the value of $releasever in config and repo files", "RELEASEVER" },
{ "setopt", '\0', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, process_global_option, "Set transaction flag, like tsflags=nodocs", "FLAG" },
@@ -284,11 +286,23 @@ main (int argc,
}
dnf_transaction_set_flags (txn, flags);
+ if (opt_best && opt_nobest)
+ {
+ error = g_error_new_literal(G_OPTION_ERROR,
+ G_OPTION_ERROR_BAD_VALUE,
+ "Argument --nobest is not allowed with argument --best");
+ goto out;
+ }
+ if (opt_best)
+ {
+ dnf_context_set_best(TRUE);
+ }
+ else if (opt_nobest)
+ {
+ dnf_context_set_best(FALSE);
+ }
}
- if (!show_help && opt_best)
- {
- dnf_context_set_best(opt_best);
- }
+
/*
* The first non-option is the command.
* Get it and remove it from arguments.
--
2.21.0