[1/1] utils/diffconfig: Removed BR2_* prefix restriction

Message ID 20180920114416.13976-1-m.patzlaff@pilz.de
State New
Headers show
Series
  • [1/1] utils/diffconfig: Removed BR2_* prefix restriction
Related show

Commit Message

Marcel Patzlaff Sept. 20, 2018, 11:44 a.m.
This patch removes the prefix restrictions on items in config files to
compare and now allows any prefix to be used.

Motivation:
To the best of my knowledge, buildroot does not impose any restrictions
on how to name config items. It is perfectly fine to use arbitrary
prefixes in your extensions. This kind of freedom should be reflected
in the accompanying tools so that's why I propose this patch.

As a side effect, this script now is able to correctly compare configs
of kconfig based packages as well as of buildroot itself.

Signed-off-by: Marcel Patzlaff <m.patzlaff@pilz.de>
---
 utils/diffconfig | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

Comments

Luca Ceresoli Oct. 21, 2018, 4:18 p.m. | #1
Hi Marcel,

On 20/09/18 13:44, Marcel Patzlaff wrote:
> This patch removes the prefix restrictions on items in config files to
> compare and now allows any prefix to be used.
> 
> Motivation:
> To the best of my knowledge, buildroot does not impose any restrictions
> on how to name config items. It is perfectly fine to use arbitrary
> prefixes in your extensions. This kind of freedom should be reflected
> in the accompanying tools so that's why I propose this patch.

Well, the BR2_ prefix is required as a policy. Unfortunately this is not
written in the manual, but rather done during patch review. Thus this
does not look like a real motivation.

> As a side effect, this script now is able to correctly compare configs
> of kconfig based packages as well as of buildroot itself.

This is a valid motivation instead!

Since there is a valid motivation, and the patch is not adding
complexity, I'm OK with it. But I'd rewrite the comment as:

-----------------8<-------------------

The utils/diffconfig script works only on variables with the BR2_
prefix. This is OK for Buildroot [def]configs since this is the prefix
for all user-facing variables, but it prevents using the same script to
compare configs from kconfig-based packages.

Remove the BR2_ restriction, allowing usage such as:

./utils/diffconfig \
	board/qemu/xtensa-lx60/linux.config \
	board/qemu/xtensa-lx60/linux-nommu.config

-----------------8<-------------------

I'm sending v2 with the above change.

Patch

diff --git a/utils/diffconfig b/utils/diffconfig
index 5862a62f25..f1af23cfce 100755
--- a/utils/diffconfig
+++ b/utils/diffconfig
@@ -28,14 +28,14 @@  If no config files are specified, .config and .config.old are used.
 
 Example usage:
  $ diffconfig .config config-with-some-changes
--LINUX_KERNEL_INTREE_DTS_NAME "vexpress-v2p-ca9"
- LINUX_KERNEL_DTS_SUPPORT y -> n
- LINUX_KERNEL_USE_INTREE_DTS y -> n
- PACKAGE_DFU_UTIL n -> y
- PACKAGE_LIBUSB n -> y
- TARGET_GENERIC_HOSTNAME "buildroot" -> "Tuxie"
- TARGET_GENERIC_ISSUE "Welcome to Buildroot" -> "Welcome to CustomBoard"
-+PACKAGE_LIBUSB_COMPAT n
+-BR2_LINUX_KERNEL_INTREE_DTS_NAME "vexpress-v2p-ca9"
+ BR2_LINUX_KERNEL_DTS_SUPPORT y -> n
+ BR2_LINUX_KERNEL_USE_INTREE_DTS y -> n
+ BR2_PACKAGE_DFU_UTIL n -> y
+ BR2_PACKAGE_LIBUSB n -> y
+ BR2_TARGET_GENERIC_HOSTNAME "buildroot" -> "Tuxie"
+ BR2_TARGET_GENERIC_ISSUE "Welcome to Buildroot" -> "Welcome to CustomBoard"
++BR2_PACKAGE_LIBUSB_COMPAT n
 
 """)
     sys.exit(0)
@@ -44,12 +44,14 @@  Example usage:
 def readconfig(config_file):
     d = {}
     for line in config_file:
-        line = line[:-1]
-        if line[:4] == "BR2_":
-            name, val = line[4:].split("=", 1)
-            d[name] = val
+        line = line.strip()
+        if len(line) == 0:
+            continue
         if line[-11:] == " is not set":
-            d[line[6:-11]] = "n"
+            d[line[2:-11]] = "n"
+        elif line[0] != "#":
+            name, val = line.split("=", 1)
+            d[name] = val
     return d
 
 def print_config(op, config, value, new_value):
@@ -58,9 +60,9 @@  def print_config(op, config, value, new_value):
     if merge_style:
         if new_value:
             if new_value=="n":
-                print("# BR2_%s is not set" % config)
+                print("# %s is not set" % config)
             else:
-                print("BR2_%s=%s" % (config, new_value))
+                print("%s=%s" % (config, new_value))
     else:
         if op=="-":
             print("-%s %s" % (config, value))