Thread (22 messages) 22 messages, 4 authors, 2016-07-11

Re: [RFC] mk: filter duplicate configuration entries

From: Christian Ehrhardt <hidden>
Date: 2016-06-28 16:38:36

On Tue, Jun 28, 2016 at 6:11 PM, Ferruh Yigit [off-list ref]
wrote:
On 6/13/2016 4:10 PM, Christian Ehrhardt wrote:
quoted
Due to the hierarchy and the demand to keep the base config shoing all
options some options end up multiple times in the .config file.

A suggested solution was to filter for duplicates at the end of the
actual config step which is implemented here.

Signed-off-by: Christian Ehrhardt <redacted>
---
 mk/rte.sdkconfig.mk | 5 +++++
 1 file changed, 5 insertions(+)
diff --git a/mk/rte.sdkconfig.mk b/mk/rte.sdkconfig.mk
index a3acfe6..734aa06 100644
--- a/mk/rte.sdkconfig.mk
+++ b/mk/rte.sdkconfig.mk
@@ -70,6 +70,11 @@ config: notemplate
 else
 config: $(RTE_OUTPUT)/include/rte_config.h $(RTE_OUTPUT)/Makefile
Not sure if this should go under this rule, or "$(RTE_OUTPUT)/.config:"
and should work with ".config_tmp".
quoted
      $(Q)$(MAKE) depdirs
+     tac $(RTE_OUTPUT)/.config | awk --field-separator '=' '!/^#/
{print $$1}' | while read config; do \
Why reversing file since already checking all lines one by one in
original file?
Hi,
every other comment is ok I'll rebase and resubmit once I find some time
again.
But for this (tac) the reason is simple - to keep behaviour.
Currently the last one wins.
So if you have
CONFIG_A=n
CONFIG_A=y

Essentially you have
CONFIG_A=y

By the tac and keeping the first occurrence we maintain behavior.
It is interestingly hard to "keep the last occurrence" without such tricks,
but I'm open to suggestions.

And instead of checking each line, it is possible to get list of
duplicates via "sort | uniq -d".
That would fail for the reasons outlined above.

Although less important, file comments also tripled in final .config.
quoted
+             if [ $$(grep "^$${config}=" $(RTE_OUTPUT)/.config | wc -l)
-gt 1 ]; then \
"grep -c" can be used instead of "grep | wc -l"
quoted
+                     sed -i "0,/$${config}/{//d}"
$(RTE_OUTPUT)/.config; \
quoted
+             fi; \
+     done
      @echo "Configuration done"
 endif
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help