]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 May 2012 17:37:56 +0000 (10:37 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 May 2012 17:37:56 +0000 (10:37 -0700)
Pull kconfig changes from Michal Marek:

 - Error handling for make KCONFIG_ALLCONFIG=<...> all*config plus a fix
   for a bug that was exposed by this

 - Fix for the script/config utility.

* 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  scripts/config: properly report and set string options
  kbuild: all{no,yes,mod,def,rand}config only read files when instructed to.
  kconfig: Add error handling to KCONFIG_ALLCONFIG

Documentation/kbuild/kconfig.txt
scripts/config
scripts/kconfig/conf.c

index 9d5f2a90dca96b600c1ee1bd107620c6dd1e4523..a09f1a6a830c0fc59c65c3880c6bf3f3129a9591 100644 (file)
@@ -53,15 +53,15 @@ KCONFIG_ALLCONFIG
 --------------------------------------------------
 (partially based on lkml email from/by Rob Landley, re: miniconfig)
 --------------------------------------------------
-The allyesconfig/allmodconfig/allnoconfig/randconfig variants can
-also use the environment variable KCONFIG_ALLCONFIG as a flag or a
-filename that contains config symbols that the user requires to be
-set to a specific value.  If KCONFIG_ALLCONFIG is used without a
-filename, "make *config" checks for a file named
-"all{yes/mod/no/def/random}.config" (corresponding to the *config command
-that was used) for symbol values that are to be forced.  If this file
-is not found, it checks for a file named "all.config" to contain forced
-values.
+The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also
+use the environment variable KCONFIG_ALLCONFIG as a flag or a filename
+that contains config symbols that the user requires to be set to a
+specific value.  If KCONFIG_ALLCONFIG is used without a filename where
+KCONFIG_ALLCONFIG == "" or KCONFIG_ALLCONFIG == "1", "make *config"
+checks for a file named "all{yes/mod/no/def/random}.config"
+(corresponding to the *config command that was used) for symbol values
+that are to be forced.  If this file is not found, it checks for a
+file named "all.config" to contain forced values.
 
 This enables you to create "miniature" config (miniconfig) or custom
 config files containing just the config symbols that you are interested
index a7c7c4b8e957311196f9b2eabef414ceaa144555..ed6653ef9702aa5320756537bb942e8a35123cb4 100755 (executable)
@@ -107,7 +107,8 @@ while [ "$1" != "" ] ; do
                ;;
 
        --set-str)
-               set_var "CONFIG_$ARG" "CONFIG_$ARG=\"$1\""
+               # sed swallows one level of escaping, so we need double-escaping
+               set_var "CONFIG_$ARG" "CONFIG_$ARG=\"${1//\"/\\\\\"}\""
                shift
                ;;
 
@@ -124,9 +125,11 @@ while [ "$1" != "" ] ; do
                        if [ $? != 0 ] ; then
                                echo undef
                        else
-                               V="${V/CONFIG_$ARG=/}"
-                               V="${V/\"/}"
-                               echo "$V"
+                               V="${V/#CONFIG_$ARG=/}"
+                               V="${V/#\"/}"
+                               V="${V/%\"/}"
+                               V="${V/\\\"/\"}"
+                               echo "${V}"
                        fi
                fi
                ;;
index f208f900ed3a8747f9bfd949b2221000d5021607..0dc4a2c779b119ec51e2eb5b3f17c5a4d02645fb 100644 (file)
@@ -574,8 +574,15 @@ int main(int ac, char **av)
        case alldefconfig:
        case randconfig:
                name = getenv("KCONFIG_ALLCONFIG");
-               if (name && !stat(name, &tmpstat)) {
-                       conf_read_simple(name, S_DEF_USER);
+               if (!name)
+                       break;
+               if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) {
+                       if (conf_read_simple(name, S_DEF_USER)) {
+                               fprintf(stderr,
+                                       _("*** Can't read seed configuration \"%s\"!\n"),
+                                       name);
+                               exit(1);
+                       }
                        break;
                }
                switch (input_mode) {
@@ -586,10 +593,13 @@ int main(int ac, char **av)
                case randconfig:        name = "allrandom.config"; break;
                default: break;
                }
-               if (!stat(name, &tmpstat))
-                       conf_read_simple(name, S_DEF_USER);
-               else if (!stat("all.config", &tmpstat))
-                       conf_read_simple("all.config", S_DEF_USER);
+               if (conf_read_simple(name, S_DEF_USER) &&
+                   conf_read_simple("all.config", S_DEF_USER)) {
+                       fprintf(stderr,
+                               _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"),
+                               name);
+                       exit(1);
+               }
                break;
        default:
                break;