Message ID | 20211102224041.5105-1-rdunlap@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] scripts/config: allow "O=config-dir" option | expand |
On Wed, Nov 3, 2021 at 7:40 AM Randy Dunlap <rdunlap@infradead.org> wrote: > > Support "O=config-dir" as the location of the .config file > like (some) other kernel build (make) tools do. > > Also check for the existence of the config-dir/config-file > and report if there is no such file instead of letting grep > report that there is no such file. > > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > Cc: Masahiro Yamada <masahiroy@kernel.org> > Cc: Nick Desaulniers <ndesaulniers@google.com> > Cc: linux-kbuild@vger.kernel.org > Cc: Andi Kleen <ak@linux.intel.com> > Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> > --- Why don't you use --file path/to/output/dir/.config ? > v2: > - use 'shellcheck' and other recommendations from Nicolas > - move one comment from the commit description to under the "---" line > > Someone asked for this "feature" a few months ago but I don't > recall who it was. > > scripts/config | 44 +++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 39 insertions(+), 5 deletions(-) > > --- linux-next-20211102.orig/scripts/config > +++ linux-next-20211102/scripts/config > @@ -37,6 +37,7 @@ commands: > > options: > --file config-file .config file to change (default .config) > + O=config-dir Specify the directory location of the config-file > --keep-case|-k Keep next symbols' case (dont' upper-case it) > > $myname doesn't check the validity of the .config file. This is done at next > @@ -124,15 +125,48 @@ undef_var() { > txt_delete "^# $name is not set" "$FN" > } > > -if [ "$1" = "--file" ]; then > - FN="$2" > - if [ "$FN" = "" ] ; then > +DIR= > +FN= > + > +while [ "$DIR" = "" ] || [ "$FN" = "" ]; do > + > + if [ "$1" = "" ] ; then > usage > fi > - shift 2 > -else > + if [ "$1" = "--file" ]; then > + FN="$2" > + if [ "$FN" = "" ] ; then > + usage > + fi > + shift 2 > + continue > + fi > + > + optn=$1 > + optnlen=${#optn} > + if [ "$optnlen" -gt 1 ] && [ "${optn:0:2}" = "O=" ]; then > + DIR=${optn:2} > + shift > + if [ "$DIR" = "" ]; then > + usage > + fi > + continue > + fi > + break # something other than --file or O=dir > +done > + > +if [ "$FN" = "" ]; then > FN=.config > fi > +if [ "$DIR" != "" ]; then > + DIR=$DIR"/" > +fi > +FN="${DIR}${FN}" > + > +if [ ! -r "$FN" ]; then > + echo "No such config file: $FN" > + exit > +fi > > if [ "$1" = "" ] ; then > usage
Hi Masahiro, On Fri, Nov 05, 2021 at 12:41:59AM +0900 Masahiro Yamada wrote: > On Wed, Nov 3, 2021 at 7:40 AM Randy Dunlap <rdunlap@infradead.org> wrote: > > > > Support "O=config-dir" as the location of the .config file > > like (some) other kernel build (make) tools do. > > > > Also check for the existence of the config-dir/config-file > > and report if there is no such file instead of letting grep > > report that there is no such file. > > > > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > > Cc: Masahiro Yamada <masahiroy@kernel.org> > > Cc: Nick Desaulniers <ndesaulniers@google.com> > > Cc: linux-kbuild@vger.kernel.org > > Cc: Andi Kleen <ak@linux.intel.com> > > Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> > > --- > > Why don't you use --file path/to/output/dir/.config ? I did not ask for the patch, but it matches some typical situations I experience at work. Building kernels out-of-source w/ 'O=' but modifying .config with the '--file' option does not feel "natural". And 'O=' in scripts/config allows reusing make arguments (readline/bash's ESC-n ESC-.). Having the 'O=' argument, it might allow fixing the '--refresh' option to support out-of-source builds. Thus, no really great points from me. Kind regards, Nicolas > > v2: > > - use 'shellcheck' and other recommendations from Nicolas > > - move one comment from the commit description to under the "---" line > > > > Someone asked for this "feature" a few months ago but I don't > > recall who it was. > > > > scripts/config | 44 +++++++++++++++++++++++++++++++++++++++----- > > 1 file changed, 39 insertions(+), 5 deletions(-) > > > > --- linux-next-20211102.orig/scripts/config > > +++ linux-next-20211102/scripts/config > > @@ -37,6 +37,7 @@ commands: > > > > options: > > --file config-file .config file to change (default .config) > > + O=config-dir Specify the directory location of the config-file > > --keep-case|-k Keep next symbols' case (dont' upper-case it) > > > > $myname doesn't check the validity of the .config file. This is done at next > > @@ -124,15 +125,48 @@ undef_var() { > > txt_delete "^# $name is not set" "$FN" > > } > > > > -if [ "$1" = "--file" ]; then > > - FN="$2" > > - if [ "$FN" = "" ] ; then > > +DIR= > > +FN= > > + > > +while [ "$DIR" = "" ] || [ "$FN" = "" ]; do > > + > > + if [ "$1" = "" ] ; then > > usage > > fi > > - shift 2 > > -else > > + if [ "$1" = "--file" ]; then > > + FN="$2" > > + if [ "$FN" = "" ] ; then > > + usage > > + fi > > + shift 2 > > + continue > > + fi > > + > > + optn=$1 > > + optnlen=${#optn} > > + if [ "$optnlen" -gt 1 ] && [ "${optn:0:2}" = "O=" ]; then > > + DIR=${optn:2} > > + shift > > + if [ "$DIR" = "" ]; then > > + usage > > + fi > > + continue > > + fi > > + break # something other than --file or O=dir > > +done > > + > > +if [ "$FN" = "" ]; then > > FN=.config > > fi > > +if [ "$DIR" != "" ]; then > > + DIR=$DIR"/" > > +fi > > +FN="${DIR}${FN}" > > + > > +if [ ! -r "$FN" ]; then > > + echo "No such config file: $FN" > > + exit > > +fi > > > > if [ "$1" = "" ] ; then > > usage > > > > -- > Best Regards > Masahiro Yamada
--- linux-next-20211102.orig/scripts/config +++ linux-next-20211102/scripts/config @@ -37,6 +37,7 @@ commands: options: --file config-file .config file to change (default .config) + O=config-dir Specify the directory location of the config-file --keep-case|-k Keep next symbols' case (dont' upper-case it) $myname doesn't check the validity of the .config file. This is done at next @@ -124,15 +125,48 @@ undef_var() { txt_delete "^# $name is not set" "$FN" } -if [ "$1" = "--file" ]; then - FN="$2" - if [ "$FN" = "" ] ; then +DIR= +FN= + +while [ "$DIR" = "" ] || [ "$FN" = "" ]; do + + if [ "$1" = "" ] ; then usage fi - shift 2 -else + if [ "$1" = "--file" ]; then + FN="$2" + if [ "$FN" = "" ] ; then + usage + fi + shift 2 + continue + fi + + optn=$1 + optnlen=${#optn} + if [ "$optnlen" -gt 1 ] && [ "${optn:0:2}" = "O=" ]; then + DIR=${optn:2} + shift + if [ "$DIR" = "" ]; then + usage + fi + continue + fi + break # something other than --file or O=dir +done + +if [ "$FN" = "" ]; then FN=.config fi +if [ "$DIR" != "" ]; then + DIR=$DIR"/" +fi +FN="${DIR}${FN}" + +if [ ! -r "$FN" ]; then + echo "No such config file: $FN" + exit +fi if [ "$1" = "" ] ; then usage