mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/3] kbuild: handle non-existing options in scripts/config
       [not found] <cover.1243262102.git.mmarek@suse.cz>
@ 2009-05-25 14:43 ` Michal Marek
  2009-05-25 14:43 ` [PATCH 2/3] kbuild: simplify argument loop " Michal Marek
  2009-05-25 14:43 ` [PATCH 3/3] kbuild: add generic --set-str option to scripts/config Michal Marek
  2 siblings, 0 replies; 3+ messages in thread
From: Michal Marek @ 2009-05-25 14:43 UTC (permalink / raw)
  To: Andi Kleen; +Cc: Sam Ravnborg, linux-kernel

If an option does not exist in .config, set it at the end of the file.

Signed-off-by: Michal Marek <mmarek@suse.cz>
---
 scripts/config |   46 ++++++++++++++++++++++++++++------------------
 1 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/scripts/config b/scripts/config
index db6084b..22cceff 100755
--- a/scripts/config
+++ b/scripts/config
@@ -26,8 +26,6 @@ options:
 
 config doesn't check the validity of the .config file. This is done at next
  make time.
-The options need to be already in the file before they can be changed,
-but sometimes you can cheat with the --*-after options.
 EOL
 	exit 1
 }
@@ -45,8 +43,28 @@ checkarg() {
 	ARG="`echo $ARG | tr a-z A-Z`"
 }
 
-replace() {
-	sed -i -e "$@" $FN
+# set_var name value [before-var]
+set_var() {
+	awk -vnew="$2" "
+	/^# $1 is not set|^$1=/ {
+		if (new)
+			print new;
+		new = 0;
+		next;
+	}
+	\"$3\" && /^# $3 is not set|^$3=/ {
+		print;
+		if (new)
+			print new;
+		new = 0;
+		next;
+	}
+	{ print }
+	END {
+		if (new)
+			print new;
+	}
+	" "$FN" >"$FN.tmp" && mv -f "$FN.tmp" "$FN"
 }
 
 if [ "$1" = "--file" ]; then
@@ -70,20 +88,19 @@ while [ "$1" != "" ] ; do
 	case "$CMD" in
 	--enable|-e)
 		checkarg "$1"
-		replace "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/"
+		set_var "CONFIG_$ARG" "CONFIG_$ARG=y"
 		shift
 		;;
 
 	--disable|-d)
 		checkarg "$1"
-		replace "s/CONFIG_$ARG=[my]/# CONFIG_$ARG is not set/"
+		set_var "CONFIG_$ARG" "# CONFIG_$ARG is not set"
 		shift
 		;;
 
 	--module|-m)
 		checkarg "$1"
-		replace "s/CONFIG_$ARG=y/CONFIG_$ARG=m/" \
-			-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=m/"
+		set_var "CONFIG_$ARG" "CONFIG_$ARG=m"
 		shift
 		;;
 
@@ -109,9 +126,7 @@ while [ "$1" != "" ] ; do
 		A=$ARG
 		checkarg "$2"
 		B=$ARG
-		replace "/CONFIG_$A=[my]/aCONFIG_$B=y" \
-			-e "/# CONFIG_$ARG is not set/a/CONFIG_$ARG=y" \
-			-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/"
+		set_var "CONFIG_$B" "CONFIG_$B=y" "CONFIG_$A"
 		shift
 		shift
 		;;
@@ -121,9 +136,7 @@ while [ "$1" != "" ] ; do
 		A=$ARG
 		checkarg "$2"
 		B=$ARG
-		replace "/CONFIG_$A=[my]/a# CONFIG_$B is not set" \
-		-e "/# CONFIG_$ARG is not set/a/# CONFIG_$ARG is not set" \
-		-e "s/CONFIG_$ARG=[my]/# CONFIG_$ARG is not set/"
+		set_var "CONFIG_$B" "# CONFIG_$B is not set" "CONFIG_$A"
 		shift
 		shift
 		;;
@@ -133,10 +146,7 @@ while [ "$1" != "" ] ; do
 		A=$ARG
 		checkarg "$2"
 		B=$ARG
-		replace "/CONFIG_$A=[my]/aCONFIG_$B=m" \
-			-e "/# CONFIG_$ARG is not set/a/CONFIG_$ARG=m" \
-			-e "s/CONFIG_$ARG=y/CONFIG_$ARG=m/" \
-			-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=m/"
+		set_var "CONFIG_$B" "CONFIG_$B=m" "CONFIG_$A"
 		shift
 		shift
 		;;
-- 
1.6.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2/3] kbuild: simplify argument loop in scripts/config
       [not found] <cover.1243262102.git.mmarek@suse.cz>
  2009-05-25 14:43 ` [PATCH 1/3] kbuild: handle non-existing options in scripts/config Michal Marek
@ 2009-05-25 14:43 ` Michal Marek
  2009-05-25 14:43 ` [PATCH 3/3] kbuild: add generic --set-str option to scripts/config Michal Marek
  2 siblings, 0 replies; 3+ messages in thread
From: Michal Marek @ 2009-05-25 14:43 UTC (permalink / raw)
  To: Andi Kleen; +Cc: Sam Ravnborg, linux-kernel

Signed-off-by: Michal Marek <mmarek@suse.cz>
---
 scripts/config |   44 ++++++++++++++++----------------------------
 1 files changed, 16 insertions(+), 28 deletions(-)

diff --git a/scripts/config b/scripts/config
index 22cceff..d3576e5 100755
--- a/scripts/config
+++ b/scripts/config
@@ -72,8 +72,7 @@ if [ "$1" = "--file" ]; then
 	if [ "$FN" = "" ] ; then
 		usage
 	fi
-	shift
-	shift
+	shift 2
 else
 	FN=.config
 fi
@@ -86,26 +85,34 @@ while [ "$1" != "" ] ; do
 	CMD="$1"
 	shift
 	case "$CMD" in
-	--enable|-e)
+	--refresh)
+		;;
+	--*-after)
+		checkarg "$1"
+		A=$ARG
+		checkarg "$2"
+		B=$ARG
+		shift 2
+		;;
+	--*)
 		checkarg "$1"
-		set_var "CONFIG_$ARG" "CONFIG_$ARG=y"
 		shift
 		;;
+	esac
+	case "$CMD" in
+	--enable|-e)
+		set_var "CONFIG_$ARG" "CONFIG_$ARG=y"
+		;;
 
 	--disable|-d)
-		checkarg "$1"
 		set_var "CONFIG_$ARG" "# CONFIG_$ARG is not set"
-		shift
 		;;
 
 	--module|-m)
-		checkarg "$1"
 		set_var "CONFIG_$ARG" "CONFIG_$ARG=m"
-		shift
 		;;
 
 	--state|-s)
-		checkarg "$1"
 		if grep -q "# CONFIG_$ARG is not set" $FN ; then
 			echo n
 		else
@@ -118,37 +125,18 @@ while [ "$1" != "" ] ; do
 				echo "$V"
 			fi
 		fi
-		shift
 		;;
 
 	--enable-after|-E)
-		checkarg "$1"
-		A=$ARG
-		checkarg "$2"
-		B=$ARG
 		set_var "CONFIG_$B" "CONFIG_$B=y" "CONFIG_$A"
-		shift
-		shift
 		;;
 
 	--disable-after|-D)
-		checkarg "$1"
-		A=$ARG
-		checkarg "$2"
-		B=$ARG
 		set_var "CONFIG_$B" "# CONFIG_$B is not set" "CONFIG_$A"
-		shift
-		shift
 		;;
 
 	--module-after|-M)
-		checkarg "$1"
-		A=$ARG
-		checkarg "$2"
-		B=$ARG
 		set_var "CONFIG_$B" "CONFIG_$B=m" "CONFIG_$A"
-		shift
-		shift
 		;;
 
 	# undocumented because it ignores --file (fixme)
-- 
1.6.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 3/3] kbuild: add generic --set-str option to scripts/config
       [not found] <cover.1243262102.git.mmarek@suse.cz>
  2009-05-25 14:43 ` [PATCH 1/3] kbuild: handle non-existing options in scripts/config Michal Marek
  2009-05-25 14:43 ` [PATCH 2/3] kbuild: simplify argument loop " Michal Marek
@ 2009-05-25 14:43 ` Michal Marek
  2 siblings, 0 replies; 3+ messages in thread
From: Michal Marek @ 2009-05-25 14:43 UTC (permalink / raw)
  To: Andi Kleen; +Cc: Sam Ravnborg, linux-kernel

Signed-off-by: Michal Marek <mmarek@suse.cz>
---
 scripts/config |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/scripts/config b/scripts/config
index d3576e5..b4e56c9 100755
--- a/scripts/config
+++ b/scripts/config
@@ -9,8 +9,10 @@ config options command ...
 commands:
 	--enable|-e option   Enable option
 	--disable|-d option  Disable option
-	--module|-m option      Turn option into a module
-	--state|-s option       Print state of option (n,y,m,undef)
+	--module|-m option   Turn option into a module
+	--set-str option value
+	                     Set option to "value"
+	--state|-s option    Print state of option (n,y,m,undef)
 
 	--enable-after|-E beforeopt option
                              Enable option directly after other option
@@ -112,6 +114,11 @@ while [ "$1" != "" ] ; do
 		set_var "CONFIG_$ARG" "CONFIG_$ARG=m"
 		;;
 
+	--set-str)
+		set_var "CONFIG_$ARG" "CONFIG_$ARG=\"$1\""
+		shift
+		;;
+
 	--state|-s)
 		if grep -q "# CONFIG_$ARG is not set" $FN ; then
 			echo n
-- 
1.6.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-05-25 14:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cover.1243262102.git.mmarek@suse.cz>
2009-05-25 14:43 ` [PATCH 1/3] kbuild: handle non-existing options in scripts/config Michal Marek
2009-05-25 14:43 ` [PATCH 2/3] kbuild: simplify argument loop " Michal Marek
2009-05-25 14:43 ` [PATCH 3/3] kbuild: add generic --set-str option to scripts/config Michal Marek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®