Blame SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch

3e75cf
From f295f543064f1a0b5833fefccd6bb203b3527623 Mon Sep 17 00:00:00 2001
3e75cf
From: Colin Walters <walters@verbum.org>
3e75cf
Date: Sun, 17 Nov 2019 15:51:07 +0000
3e75cf
Subject: [PATCH] kargs: Support --append and --delete simultaneously
3e75cf
3e75cf
Code I wrote for the machine-config-operator expected it to
3e75cf
work, and I don't see a reason not to support it.
3e75cf
3e75cf
See https://github.com/openshift/machine-config-operator/issues/1265
3e75cf
---
3e75cf
 src/app/rpmostree-builtin-kargs.c         |  6 ------
3e75cf
 src/daemon/rpmostreed-transaction-types.c | 20 ++++++++++----------
3e75cf
 tests/vmcheck/test-kernel-args.sh         |  9 +++++++++
3e75cf
 3 files changed, 19 insertions(+), 16 deletions(-)
3e75cf
3e75cf
diff --git a/src/app/rpmostree-builtin-kargs.c b/src/app/rpmostree-builtin-kargs.c
3e75cf
index 359df946..fcfb727a 100644
3e75cf
--- a/src/app/rpmostree-builtin-kargs.c
3e75cf
+++ b/src/app/rpmostree-builtin-kargs.c
3e75cf
@@ -196,12 +196,6 @@ rpmostree_builtin_kargs (int            argc,
3e75cf
                    "Cannot specify both --delete and --replace");
3e75cf
       return FALSE;
3e75cf
     }
3e75cf
-  if (opt_kernel_delete_strings && opt_kernel_append_strings)
3e75cf
-    {
3e75cf
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
3e75cf
-                   "Cannot specify both --delete and --append");
3e75cf
-      return FALSE;
3e75cf
-    }
3e75cf
   if (opt_import_proc_cmdline && opt_deploy_index)
3e75cf
     {
3e75cf
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
3e75cf
diff --git a/src/daemon/rpmostreed-transaction-types.c b/src/daemon/rpmostreed-transaction-types.c
3e75cf
index bc62b6c4..da432b83 100644
3e75cf
--- a/src/daemon/rpmostreed-transaction-types.c
3e75cf
+++ b/src/daemon/rpmostreed-transaction-types.c
3e75cf
@@ -2449,20 +2449,20 @@ kernel_arg_transaction_execute (RpmostreedTransaction *transaction,
3e75cf
             return FALSE;
3e75cf
         }
3e75cf
     }
3e75cf
-  else
3e75cf
+
3e75cf
+  if (self->kernel_args_replaced)
3e75cf
     {
3e75cf
-      if (self->kernel_args_replaced)
3e75cf
+      for (char **iter = self->kernel_args_replaced; iter && *iter; iter++)
3e75cf
         {
3e75cf
-          for (char **iter = self->kernel_args_replaced; iter && *iter; iter++)
3e75cf
-            {
3e75cf
-              const char *arg = *iter;
3e75cf
-              if (!ostree_kernel_args_new_replace (kargs, arg, error))
3e75cf
-                return FALSE;
3e75cf
-            }
3e75cf
+          const char *arg = *iter;
3e75cf
+          if (!ostree_kernel_args_new_replace (kargs, arg, error))
3e75cf
+            return FALSE;
3e75cf
         }
3e75cf
+    }
3e75cf
 
3e75cf
-      if (self->kernel_args_added)
3e75cf
-        ostree_kernel_args_append_argv (kargs, self->kernel_args_added);
3e75cf
+  if (self->kernel_args_added)
3e75cf
+    {
3e75cf
+      ostree_kernel_args_append_argv (kargs, self->kernel_args_added);
3e75cf
     }
3e75cf
 
3e75cf
   /* After all the arguments are processed earlier, we convert it to a string list*/
3e75cf
diff --git a/tests/vmcheck/test-kernel-args.sh b/tests/vmcheck/test-kernel-args.sh
3e75cf
index 570d986a..ca105ae3 100755
3e75cf
--- a/tests/vmcheck/test-kernel-args.sh
3e75cf
+++ b/tests/vmcheck/test-kernel-args.sh
3e75cf
@@ -48,6 +48,15 @@ assert_file_has_content_literal kargs.txt 'FOO=BAR'
3e75cf
 assert_file_has_content_literal kargs.txt 'APPENDARG=VALAPPEND APPENDARG=2NDAPPEND'
3e75cf
 echo "ok kargs append"
3e75cf
 
3e75cf
+# Ensure the result flows through with rpm-ostree kargs
3e75cf
+vm_rpmostree kargs --append=APPENDARG=3RDAPPEND --delete=APPENDARG=VALAPPEND
3e75cf
+vm_rpmostree kargs > kargs.txt
3e75cf
+assert_not_file_has_content kargs.txt 'APPENDARG=VALAPPEND'
3e75cf
+assert_file_has_content_literal kargs.txt 'APPENDARG=3RDAPPEND'
3e75cf
+# And reset to previous state
3e75cf
+vm_rpmostree cleanup -p
3e75cf
+echo "ok kargs append and delete"
3e75cf
+
3e75cf
 # Test for rpm-ostree kargs delete
3e75cf
 vm_kargs_now kargs --delete FOO
3e75cf
 vm_cmd grep ^options /boot/loader/entries/ostree-2-$osname.conf > tmp_conf.txt
3e75cf
-- 
3e75cf
2.24.1
3e75cf