~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/kconfig/merge_config.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/kconfig/merge_config.sh (Version linux-6.12-rc7) and /scripts/kconfig/merge_config.sh (Version linux-5.9.16)


  1 #!/bin/sh                                           1 #!/bin/sh
  2 # SPDX-License-Identifier: GPL-2.0                  2 # SPDX-License-Identifier: GPL-2.0
  3 #                                                   3 #
  4 #  merge_config.sh - Takes a list of config fr      4 #  merge_config.sh - Takes a list of config fragment values, and merges
  5 #  them one by one. Provides warnings on overr      5 #  them one by one. Provides warnings on overridden values, and specified
  6 #  values that did not make it to the resultin      6 #  values that did not make it to the resulting .config file (due to missed
  7 #  dependencies or config symbol removal).          7 #  dependencies or config symbol removal).
  8 #                                                   8 #
  9 #  Portions reused from kconf_check and genera      9 #  Portions reused from kconf_check and generate_cfg:
 10 #  http://git.yoctoproject.org/cgit/cgit.cgi/y     10 #  http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check
 11 #  http://git.yoctoproject.org/cgit/cgit.cgi/y     11 #  http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg
 12 #                                                  12 #
 13 #  Copyright (c) 2009-2010 Wind River Systems,     13 #  Copyright (c) 2009-2010 Wind River Systems, Inc.
 14 #  Copyright 2011 Linaro                           14 #  Copyright 2011 Linaro
 15                                                    15 
 16 set -e                                             16 set -e
 17                                                    17 
 18 clean_up() {                                       18 clean_up() {
 19         rm -f $TMP_FILE                            19         rm -f $TMP_FILE
 20         rm -f $MERGE_FILE                          20         rm -f $MERGE_FILE
 21 }                                                  21 }
 22                                                    22 
 23 usage() {                                          23 usage() {
 24         echo "Usage: $0 [OPTIONS] [CONFIG [...     24         echo "Usage: $0 [OPTIONS] [CONFIG [...]]"
 25         echo "  -h    display this help text"      25         echo "  -h    display this help text"
 26         echo "  -m    only merge the fragments     26         echo "  -m    only merge the fragments, do not execute the make command"
 27         echo "  -n    use allnoconfig instead      27         echo "  -n    use allnoconfig instead of alldefconfig"
 28         echo "  -r    list redundant entries w     28         echo "  -r    list redundant entries when merging fragments"
 29         echo "  -y    make builtin have preced     29         echo "  -y    make builtin have precedence over modules"
 30         echo "  -O    dir to put generated out     30         echo "  -O    dir to put generated output files.  Consider setting \$KCONFIG_CONFIG instead."
 31         echo "  -s    strict mode. Fail if the << 
 32         echo "  -Q    disable warning messages << 
 33         echo                                       31         echo
 34         echo "Used prefix: '$CONFIG_PREFIX'. Y     32         echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable."
 35 }                                                  33 }
 36                                                    34 
 37 RUNMAKE=true                                       35 RUNMAKE=true
 38 ALLTARGET=alldefconfig                             36 ALLTARGET=alldefconfig
 39 WARNREDUN=false                                    37 WARNREDUN=false
 40 BUILTIN=false                                      38 BUILTIN=false
 41 OUTPUT=.                                           39 OUTPUT=.
 42 STRICT=false                                   << 
 43 CONFIG_PREFIX=${CONFIG_-CONFIG_}                   40 CONFIG_PREFIX=${CONFIG_-CONFIG_}
 44 WARNOVERRIDE=echo                              << 
 45                                                    41 
 46 while true; do                                     42 while true; do
 47         case $1 in                                 43         case $1 in
 48         "-n")                                      44         "-n")
 49                 ALLTARGET=allnoconfig              45                 ALLTARGET=allnoconfig
 50                 shift                              46                 shift
 51                 continue                           47                 continue
 52                 ;;                                 48                 ;;
 53         "-m")                                      49         "-m")
 54                 RUNMAKE=false                      50                 RUNMAKE=false
 55                 shift                              51                 shift
 56                 continue                           52                 continue
 57                 ;;                                 53                 ;;
 58         "-h")                                      54         "-h")
 59                 usage                              55                 usage
 60                 exit                               56                 exit
 61                 ;;                                 57                 ;;
 62         "-r")                                      58         "-r")
 63                 WARNREDUN=true                     59                 WARNREDUN=true
 64                 shift                              60                 shift
 65                 continue                           61                 continue
 66                 ;;                                 62                 ;;
 67         "-y")                                      63         "-y")
 68                 BUILTIN=true                       64                 BUILTIN=true
 69                 shift                              65                 shift
 70                 continue                           66                 continue
 71                 ;;                                 67                 ;;
 72         "-O")                                      68         "-O")
 73                 if [ -d $2 ];then                  69                 if [ -d $2 ];then
 74                         OUTPUT=$(echo $2 | sed     70                         OUTPUT=$(echo $2 | sed 's/\/*$//')
 75                 else                               71                 else
 76                         echo "output directory     72                         echo "output directory $2 does not exist" 1>&2
 77                         exit 1                     73                         exit 1
 78                 fi                                 74                 fi
 79                 shift 2                            75                 shift 2
 80                 continue                           76                 continue
 81                 ;;                                 77                 ;;
 82         "-s")                                  << 
 83                 STRICT=true                    << 
 84                 shift                          << 
 85                 continue                       << 
 86                 ;;                             << 
 87         "-Q")                                  << 
 88                 WARNOVERRIDE=true              << 
 89                 shift                          << 
 90                 continue                       << 
 91                 ;;                             << 
 92         *)                                         78         *)
 93                 break                              79                 break
 94                 ;;                                 80                 ;;
 95         esac                                       81         esac
 96 done                                               82 done
 97                                                    83 
 98 if [ "$#" -lt 1 ] ; then                           84 if [ "$#" -lt 1 ] ; then
 99         usage                                      85         usage
100         exit                                       86         exit
101 fi                                                 87 fi
102                                                    88 
103 if [ -z "$KCONFIG_CONFIG" ]; then                  89 if [ -z "$KCONFIG_CONFIG" ]; then
104         if [ "$OUTPUT" != . ]; then                90         if [ "$OUTPUT" != . ]; then
105                 KCONFIG_CONFIG=$(readlink -m -     91                 KCONFIG_CONFIG=$(readlink -m -- "$OUTPUT/.config")
106         else                                       92         else
107                 KCONFIG_CONFIG=.config             93                 KCONFIG_CONFIG=.config
108         fi                                         94         fi
109 fi                                                 95 fi
110                                                    96 
111 INITFILE=$1                                        97 INITFILE=$1
112 shift;                                             98 shift;
113                                                    99 
114 if [ ! -r "$INITFILE" ]; then                     100 if [ ! -r "$INITFILE" ]; then
115         echo "The base file '$INITFILE' does n    101         echo "The base file '$INITFILE' does not exist.  Exit." >&2
116         exit 1                                    102         exit 1
117 fi                                                103 fi
118                                                   104 
119 MERGE_LIST=$*                                     105 MERGE_LIST=$*
120 SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0    106 SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p"
121 SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-    107 SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p"
122                                                   108 
123 TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)       109 TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
124 MERGE_FILE=$(mktemp ./.merge_tmp.config.XXXXXX    110 MERGE_FILE=$(mktemp ./.merge_tmp.config.XXXXXXXXXX)
125                                                   111 
126 echo "Using $INITFILE as base"                    112 echo "Using $INITFILE as base"
127                                                   113 
128 trap clean_up EXIT                                114 trap clean_up EXIT
129                                                   115 
130 cat $INITFILE > $TMP_FILE                         116 cat $INITFILE > $TMP_FILE
131                                                   117 
132 # Merge files, printing warnings on overridden    118 # Merge files, printing warnings on overridden values
133 for ORIG_MERGE_FILE in $MERGE_LIST ; do           119 for ORIG_MERGE_FILE in $MERGE_LIST ; do
134         echo "Merging $ORIG_MERGE_FILE"           120         echo "Merging $ORIG_MERGE_FILE"
135         if [ ! -r "$ORIG_MERGE_FILE" ]; then      121         if [ ! -r "$ORIG_MERGE_FILE" ]; then
136                 echo "The merge file '$ORIG_ME    122                 echo "The merge file '$ORIG_MERGE_FILE' does not exist.  Exit." >&2
137                 exit 1                            123                 exit 1
138         fi                                        124         fi
139         cat $ORIG_MERGE_FILE > $MERGE_FILE        125         cat $ORIG_MERGE_FILE > $MERGE_FILE
140         CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1    126         CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE)
141                                                   127 
142         for CFG in $CFG_LIST ; do                 128         for CFG in $CFG_LIST ; do
143                 grep -q -w $CFG $TMP_FILE || c    129                 grep -q -w $CFG $TMP_FILE || continue
144                 PREV_VAL=$(grep -w $CFG $TMP_F    130                 PREV_VAL=$(grep -w $CFG $TMP_FILE)
145                 NEW_VAL=$(grep -w $CFG $MERGE_    131                 NEW_VAL=$(grep -w $CFG $MERGE_FILE)
146                 BUILTIN_FLAG=false                132                 BUILTIN_FLAG=false
147                 if [ "$BUILTIN" = "true" ] &&     133                 if [ "$BUILTIN" = "true" ] && [ "${NEW_VAL#CONFIG_*=}" = "m" ] && [ "${PREV_VAL#CONFIG_*=}" = "y" ]; then
148                         ${WARNOVERRIDE} Previo !! 134                         echo Previous  value: $PREV_VAL
149                         ${WARNOVERRIDE} New va !! 135                         echo New value:       $NEW_VAL
150                         ${WARNOVERRIDE} -y pas !! 136                         echo -y passed, will not demote y to m
151                         ${WARNOVERRIDE}        !! 137                         echo
152                         BUILTIN_FLAG=true         138                         BUILTIN_FLAG=true
153                 elif [ "x$PREV_VAL" != "x$NEW_    139                 elif [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then
154                         ${WARNOVERRIDE} Value  !! 140                         echo Value of $CFG is redefined by fragment $ORIG_MERGE_FILE:
155                         ${WARNOVERRIDE} Previo !! 141                         echo Previous  value: $PREV_VAL
156                         ${WARNOVERRIDE} New va !! 142                         echo New value:       $NEW_VAL
157                         ${WARNOVERRIDE}        !! 143                         echo
158                         if [ "$STRICT" = "true << 
159                                 STRICT_MODE_VI << 
160                         fi                     << 
161                 elif [ "$WARNREDUN" = "true" ]    144                 elif [ "$WARNREDUN" = "true" ]; then
162                         ${WARNOVERRIDE} Value  !! 145                         echo Value of $CFG is redundant by fragment $ORIG_MERGE_FILE:
163                 fi                                146                 fi
164                 if [ "$BUILTIN_FLAG" = "false"    147                 if [ "$BUILTIN_FLAG" = "false" ]; then
165                         sed -i "/$CFG[ =]/d" $    148                         sed -i "/$CFG[ =]/d" $TMP_FILE
166                 else                              149                 else
167                         sed -i "/$CFG[ =]/d" $    150                         sed -i "/$CFG[ =]/d" $MERGE_FILE
168                 fi                                151                 fi
169         done                                      152         done
170         # In case the previous file lacks a ne << 
171         echo >> $TMP_FILE                      << 
172         cat $MERGE_FILE >> $TMP_FILE              153         cat $MERGE_FILE >> $TMP_FILE
173 done                                              154 done
174                                                << 
175 if [ "$STRICT_MODE_VIOLATED" = "true" ]; then  << 
176         echo "The fragment redefined a value a << 
177         exit 1                                 << 
178 fi                                             << 
179                                                   155 
180 if [ "$RUNMAKE" = "false" ]; then                 156 if [ "$RUNMAKE" = "false" ]; then
181         cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG"    157         cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG"
182         echo "#"                                  158         echo "#"
183         echo "# merged configuration written t    159         echo "# merged configuration written to $KCONFIG_CONFIG (needs make)"
184         echo "#"                                  160         echo "#"
185         exit                                      161         exit
186 fi                                                162 fi
187                                                   163 
188 # If we have an output dir, setup the O= argum    164 # If we have an output dir, setup the O= argument, otherwise leave
189 # it blank, since O=. will create an unnecessa    165 # it blank, since O=. will create an unnecessary ./source softlink
190 OUTPUT_ARG=""                                     166 OUTPUT_ARG=""
191 if [ "$OUTPUT" != "." ] ; then                    167 if [ "$OUTPUT" != "." ] ; then
192         OUTPUT_ARG="O=$OUTPUT"                    168         OUTPUT_ARG="O=$OUTPUT"
193 fi                                                169 fi
194                                                   170 
195                                                   171 
196 # Use the merged file as the starting point fo    172 # Use the merged file as the starting point for:
197 # alldefconfig: Fills in any missing symbols w    173 # alldefconfig: Fills in any missing symbols with Kconfig default
198 # allnoconfig: Fills in any missing symbols wi    174 # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set
199 make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $    175 make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET
200                                                   176 
201                                                   177 
202 # Check all specified config values took (migh    178 # Check all specified config values took (might have missed-dependency issues)
203 for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "    179 for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do
204                                                   180 
205         REQUESTED_VAL=$(grep -w -e "$CFG" $TMP    181         REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE)
206         ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONF    182         ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG" || true)
207         if [ "x$REQUESTED_VAL" != "x$ACTUAL_VA    183         if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then
208                 echo "Value requested for $CFG    184                 echo "Value requested for $CFG not in final .config"
209                 echo "Requested value:  $REQUE    185                 echo "Requested value:  $REQUESTED_VAL"
210                 echo "Actual value:     $ACTUA    186                 echo "Actual value:     $ACTUAL_VAL"
211                 echo ""                           187                 echo ""
212         fi                                        188         fi
213 done                                              189 done
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php