[libvirt] [not libvirt PATCH] rcc - resolve capabilities conflicts

Ján Tomko jtomko at redhat.com
Thu Apr 12 07:45:32 UTC 2018


my tool for naively resolving qemu capabilities conflicts after a
rebase, that used to contain my latest syntax-check addition
---
 rcc | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100755 rcc

diff --git a/rcc b/rcc
new file mode 100755
index 0000000..e0fdf41
--- /dev/null
+++ b/rcc
@@ -0,0 +1,62 @@
+#!/usr/bin/env perl
+# Automatically resolve QEMU capability conflicts
+#
+# Joins both parts of the conflicting hunk in
+# qemu_capabilities.[ch] and qemucapabilitiesdata XML
+#
+# Also rewraps the groups in qemu_capabilities.c if needed
+# and stages all the affected files.
+#
+# Author: Ján Tomko <jtomko at redhat.com>
+
+use warnings;
+use v5.10;
+
+use Git;
+
+sub union_merge {
+    my $filename = shift;
+
+    open FILE, '<', $filename or die "cannot open $file: $!";
+    my @original = <FILE>;
+    close FILE;
+
+    my @fixed;
+    foreach (@original) {
+        if (/^<<<<</) {
+            next;
+        } elsif (/^=====/) {
+            next;
+        } elsif (/^>>>>>/) {
+            next;
+        }
+
+        push @fixed, $_;
+    }
+
+    open FILE, '>', $filename or die "cannot open $file: $!";
+    foreach my $line (@fixed) {
+        print FILE $line;
+    }
+    close FILE;
+}
+
+my $repo = Git->repository(Directory => '.');
+my ($status_fh, $ctx) = $repo->command_output_pipe('status', '--porcelain');
+
+while (<$status_fh>) {
+    my ($flag, $filename) = split;
+    if ($flag eq 'UU') {
+        if ($filename =~ '^src/qemu/qemu_capabilities.[ch]$' or
+            $filename =~ '^tests/qemucapabilitiesdata/caps.*xml') {
+            say "Trying to fix $filename";
+            &union_merge($filename);
+            $repo->command('add', $filename);
+        }
+    }
+}
+$repo->command_close_pipe($status_fh, $ctx);
+system('tests/group-qemu-caps.pl');
+$repo->command('add', 'src/qemu/qemu_capabilities.c');
+$repo->command('add', 'src/qemu/qemu_capabilities.h');
+$repo->command('rebase', '--continue');
-- 
2.13.6




More information about the libvir-list mailing list