Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b419784 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull kconfig updates from Michal Marek:
 "This is the kconfig part of kbuild for v3.12-rc1:
   - post-3.11 search code fixes and micro-optimizations
   - CONFIG_MODULES is no longer a special case; this is needed to
     eventually fix the bug that using KCONFIG_ALLCONFIG breaks
     allmodconfig
   - long long is used to store hex and int values
   - make silentoldconfig no longer warns when a symbol changes from
     tristate to bool (it's a job for make oldconfig)
   - scripts/diffconfig updated to work with newer Pythons
   - scripts/config does not rely on GNU sed extensions"

* 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  kconfig: do not allow more than one symbol to have 'option modules'
  kconfig: regenerate bison parser
  kconfig: do not special-case 'MODULES' symbol
  diffconfig: Update script to support python versions 2.5 through 3.3
  diffconfig: Gracefully exit if the default config files are not present
  modules: do not depend on kconfig to set 'modules' option to symbol MODULES
  kconfig: silence warning when parsing auto.conf when a symbol has changed type
  scripts/config: use sed's POSIX interface
  kconfig: switch to "long long" for sanity
  kconfig: simplify symbol-search code
  kconfig: don't allocate n+1 elements in temporary array
  kconfig: minor style fixes in symbol-search code
  kconfig/[mn]conf: shorten title in search-box
  kconfig: avoid multiple calls to strlen
  Documentation/kconfig: more concise and straightforward search explanation
parents a22a0fdb e0627813
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -147,6 +147,7 @@ applicable everywhere (see syntax).
  - "modules"
  - "modules"
    This declares the symbol to be used as the MODULES symbol, which
    This declares the symbol to be used as the MODULES symbol, which
    enables the third modular state for all config symbols.
    enables the third modular state for all config symbols.
    At most one symbol may have the "modules" option set.


  - "env"=<value>
  - "env"=<value>
    This imports the environment variable into Kconfig. It behaves like
    This imports the environment variable into Kconfig. It behaves like
+3 −5
Original line number Original line Diff line number Diff line
@@ -175,11 +175,9 @@ Searching in menuconfig:
		/^hotplug
		/^hotplug


	When searching, symbols are sorted thus:
	When searching, symbols are sorted thus:
	  - exact match first: an exact match is when the search matches
	  - first, exact matches, sorted alphabetically (an exact match
	    the complete symbol name;
	    is when the search matches the complete symbol name);
	  - alphabetical order: when two symbols do not match exactly,
	  - then, other matches, sorted alphabetically.
	    they are sorted in alphabetical order (in the user's current
	    locale).
	For example: ^ATH.K matches:
	For example: ^ATH.K matches:
	    ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG
	    ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG
	    [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...]
	    [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...]
+1 −0
Original line number Original line Diff line number Diff line
@@ -1670,6 +1670,7 @@ config BASE_SMALL


menuconfig MODULES
menuconfig MODULES
	bool "Enable loadable module support"
	bool "Enable loadable module support"
	option modules
	help
	help
	  Kernel modules are small pieces of compiled code which can
	  Kernel modules are small pieces of compiled code which can
	  be inserted in the running kernel, rather than being
	  be inserted in the running kernel, rather than being
+41 −3
Original line number Original line Diff line number Diff line
@@ -62,15 +62,52 @@ checkarg() {
	fi
	fi
}
}


txt_append() {
	local anchor="$1"
	local insert="$2"
	local infile="$3"
	local tmpfile="$infile.swp"

	# sed append cmd: 'a\' + newline + text + newline
	cmd="$(printf "a\\%b$insert" "\n")"

	sed -e "/$anchor/$cmd" "$infile" >"$tmpfile"
	# replace original file with the edited one
	mv "$tmpfile" "$infile"
}

txt_subst() {
	local before="$1"
	local after="$2"
	local infile="$3"
	local tmpfile="$infile.swp"

	sed -e "s/$before/$after/" "$infile" >"$tmpfile"
	# replace original file with the edited one
	mv "$tmpfile" "$infile"
}

txt_delete() {
	local text="$1"
	local infile="$2"
	local tmpfile="$infile.swp"

	sed -e "/$text/d" "$infile" >"$tmpfile"
	# replace original file with the edited one
	mv "$tmpfile" "$infile"
}

set_var() {
set_var() {
	local name=$1 new=$2 before=$3
	local name=$1 new=$2 before=$3


	name_re="^($name=|# $name is not set)"
	name_re="^($name=|# $name is not set)"
	before_re="^($before=|# $before is not set)"
	before_re="^($before=|# $before is not set)"
	if test -n "$before" && grep -Eq "$before_re" "$FN"; then
	if test -n "$before" && grep -Eq "$before_re" "$FN"; then
		sed -ri "/$before_re/a $new" "$FN"
		txt_append "^$before=" "$new" "$FN"
		txt_append "^# $before is not set" "$new" "$FN"
	elif grep -Eq "$name_re" "$FN"; then
	elif grep -Eq "$name_re" "$FN"; then
		sed -ri "s:$name_re.*:$new:" "$FN"
		txt_subst "^$name=.*" "$new" "$FN"
		txt_subst "^# $name is not set" "$new" "$FN"
	else
	else
		echo "$new" >>"$FN"
		echo "$new" >>"$FN"
	fi
	fi
@@ -79,7 +116,8 @@ set_var() {
undef_var() {
undef_var() {
	local name=$1
	local name=$1


	sed -ri "/^($name=|# $name is not set)/d" "$FN"
	txt_delete "^$name=" "$FN"
	txt_delete "^# $name is not set" "$FN"
}
}


if [ "$1" = "--file" ]; then
if [ "$1" = "--file" ]; then
+18 −15
Original line number Original line Diff line number Diff line
@@ -10,7 +10,7 @@
import sys, os
import sys, os


def usage():
def usage():
    print """Usage: diffconfig [-h] [-m] [<config1> <config2>]
    print("""Usage: diffconfig [-h] [-m] [<config1> <config2>]


Diffconfig is a simple utility for comparing two .config files.
Diffconfig is a simple utility for comparing two .config files.
Using standard diff to compare .config files often includes extraneous and
Using standard diff to compare .config files often includes extraneous and
@@ -33,7 +33,7 @@ Example usage:
 EXT2_FS  y -> n
 EXT2_FS  y -> n
 LOG_BUF_SHIFT  14 -> 16
 LOG_BUF_SHIFT  14 -> 16
 PRINTK_TIME  n -> y
 PRINTK_TIME  n -> y
"""
""")
    sys.exit(0)
    sys.exit(0)


# returns a dictionary of name/value pairs for config items in the file
# returns a dictionary of name/value pairs for config items in the file
@@ -54,16 +54,16 @@ def print_config(op, config, value, new_value):
    if merge_style:
    if merge_style:
        if new_value:
        if new_value:
            if new_value=="n":
            if new_value=="n":
                print "# CONFIG_%s is not set" % config
                print("# CONFIG_%s is not set" % config)
            else:
            else:
                print "CONFIG_%s=%s" % (config, new_value)
                print("CONFIG_%s=%s" % (config, new_value))
    else:
    else:
        if op=="-":
        if op=="-":
            print "-%s %s" % (config, value)
            print("-%s %s" % (config, value))
        elif op=="+":
        elif op=="+":
            print "+%s %s" % (config, new_value)
            print("+%s %s" % (config, new_value))
        else:
        else:
            print " %s %s -> %s" % (config, value, new_value)
            print(" %s %s -> %s" % (config, value, new_value))


def main():
def main():
    global merge_style
    global merge_style
@@ -79,23 +79,27 @@ def main():


    argc = len(sys.argv)
    argc = len(sys.argv)
    if not (argc==1 or argc == 3):
    if not (argc==1 or argc == 3):
        print "Error: incorrect number of arguments or unrecognized option"
        print("Error: incorrect number of arguments or unrecognized option")
        usage()
        usage()


    if argc == 1:
    if argc == 1:
        # if no filenames given, assume .config and .config.old
        # if no filenames given, assume .config and .config.old
        build_dir=""
        build_dir=""
        if os.environ.has_key("KBUILD_OUTPUT"):
        if "KBUILD_OUTPUT" in os.environ:
            build_dir = os.environ["KBUILD_OUTPUT"]+"/"
            build_dir = os.environ["KBUILD_OUTPUT"]+"/"

        configa_filename = build_dir + ".config.old"
        configa_filename = build_dir + ".config.old"
        configb_filename = build_dir + ".config"
        configb_filename = build_dir + ".config"
    else:
    else:
        configa_filename = sys.argv[1]
        configa_filename = sys.argv[1]
        configb_filename = sys.argv[2]
        configb_filename = sys.argv[2]


    a = readconfig(file(configa_filename))
    try:
    b = readconfig(file(configb_filename))
        a = readconfig(open(configa_filename))
        b = readconfig(open(configb_filename))
    except (IOError):
        e = sys.exc_info()[1]
        print("I/O error[%s]: %s\n" % (e.args[0],e.args[1]))
        usage()


    # print items in a but not b (accumulate, sort and print)
    # print items in a but not b (accumulate, sort and print)
    old = []
    old = []
@@ -121,8 +125,7 @@ def main():


    # now print items in b but not in a
    # now print items in b but not in a
    # (items from b that were in a were removed above)
    # (items from b that were in a were removed above)
    new = b.keys()
    new = sorted(b.keys())
    new.sort()
    for config in new:
    for config in new:
        print_config("+", config, None, b[config])
        print_config("+", config, None, b[config])


Loading