]> git.droids-corp.org - dpdk.git/commitdiff
mk: fix FreeBSD build
authorSergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Tue, 19 Jul 2016 13:40:37 +0000 (14:40 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 21 Jul 2016 08:26:12 +0000 (10:26 +0200)
The sed syntax of '0,/regexp/' is GNU specific and fails with
non GNU sed in FreeBSD.

To solve the issue we can use awk instead to remove duplicates.

The awk script basically keeps the last config value, while
maintaining order and comments from original config file.

Fixes: b2063f104db7 ("mk: filter duplicate configuration entries")
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
mk/rte.sdkconfig.mk

index e93237fed0aca50f2ba03e0fc1e9bf8859fa1640..5c94edf8342a570d912dc80c18a28954f765c6fd 100644 (file)
@@ -88,11 +88,13 @@ $(RTE_OUTPUT)/.config: $(RTE_CONFIG_TEMPLATE) FORCE | $(RTE_OUTPUT)
                $(CPP) -undef -P -x assembler-with-cpp \
                -ffreestanding \
                -o $(RTE_OUTPUT)/.config_tmp $(RTE_CONFIG_TEMPLATE) ; \
-               for config in $$(grep -v "^#" $(RTE_OUTPUT)/.config_tmp | cut -d"=" -f1 | sort | uniq -d); do \
-                       while [ $$(grep "^$${config}=" $(RTE_OUTPUT)/.config_tmp -c ) -gt 1 ]; do \
-                               sed -i "0,/^$${config}=/{//d}" $(RTE_OUTPUT)/.config_tmp; \
-                       done; \
-               done; \
+               config=$$(cat $(RTE_OUTPUT)/.config_tmp) ; \
+               echo "$$config" | awk -F '=' 'BEGIN {i=1} \
+                       /^#/ {pos[i++]=$$0} \
+                       !/^#/ {if (!s[$$1]) {pos[i]=$$0; s[$$1]=i++} \
+                               else {pos[s[$$1]]=$$0}} END \
+                       {for (j=1; j<i; j++) print pos[j]}' \
+                       > $(RTE_OUTPUT)/.config_tmp ; \
                if ! cmp -s $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config; then \
                        cp $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config ; \
                        cp $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config.orig ; \