diff mbox series

[SRU,focal:linux,groovy:linux,1/1] UBUNTU: [Packaging] kernelconfig -- only update/edit configurations on architectures we have compiler support

Message ID 20200812212828.388914-1-apw@canonical.com
State New
Headers show
Series [SRU,focal:linux,groovy:linux,1/1] UBUNTU: [Packaging] kernelconfig -- only update/edit configurations on architectures we have compiler support | expand

Commit Message

Andy Whitcroft Aug. 12, 2020, 9:28 p.m. UTC
We can only rebuild, edit, or update a configuration for an architecture
nativly on that architecture or using a compatible cross-compiler for
that architecture.  Skip architectures for which we do not have an
apropriate compiler.  When we do not perform the requested operation on
all architectures report those which have been skipped clearly at the
bottom of the output.

    WARNING: configuration operation applied only to a subset of
        architectures (skipped i386 armhf arm64 ppc64el s390x)

[seth.forshee@canonical.com: remove i386 special case.]
BugLink: https://bugs.launchpad.net/bugs/1863116
Signed-off-by: Andy Whitcroft <apw@canonical.com>
---
 debian/scripts/misc/kernelconfig | 79 +++++++++++++++++++-------------
 1 file changed, 47 insertions(+), 32 deletions(-)

Comments

Seth Forshee Sept. 22, 2020, 3:31 p.m. UTC | #1
On Wed, Aug 12, 2020 at 10:28:28PM +0100, Andy Whitcroft wrote:
> We can only rebuild, edit, or update a configuration for an architecture
> nativly on that architecture or using a compatible cross-compiler for
> that architecture.  Skip architectures for which we do not have an
> apropriate compiler.  When we do not perform the requested operation on
> all architectures report those which have been skipped clearly at the
> bottom of the output.
> 
>     WARNING: configuration operation applied only to a subset of
>         architectures (skipped i386 armhf arm64 ppc64el s390x)
> 
> [seth.forshee@canonical.com: remove i386 special case.]
> BugLink: https://bugs.launchpad.net/bugs/1863116
> Signed-off-by: Andy Whitcroft <apw@canonical.com>

Acked-by: Seth Forshee <seth.forshee@canonical.com>

Applied to groovy/master-next, thanks!
Stefan Bader Sept. 23, 2020, 1:35 p.m. UTC | #2
On 12.08.20 23:28, Andy Whitcroft wrote:
> We can only rebuild, edit, or update a configuration for an architecture
> nativly on that architecture or using a compatible cross-compiler for
> that architecture.  Skip architectures for which we do not have an
> apropriate compiler.  When we do not perform the requested operation on
> all architectures report those which have been skipped clearly at the
> bottom of the output.
> 
>     WARNING: configuration operation applied only to a subset of
>         architectures (skipped i386 armhf arm64 ppc64el s390x)
> 
> [seth.forshee@canonical.com: remove i386 special case.]
> BugLink: https://bugs.launchpad.net/bugs/1863116
> Signed-off-by: Andy Whitcroft <apw@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
> ---

The bug report should contain a filled in justification template. Mind adding
that? I have added nominations for focal and groovy which were missing, too.

-Stefan

>  debian/scripts/misc/kernelconfig | 79 +++++++++++++++++++-------------
>  1 file changed, 47 insertions(+), 32 deletions(-)
> 
> diff --git a/debian/scripts/misc/kernelconfig b/debian/scripts/misc/kernelconfig
> index fc50c48df3b7..dd45d2f2b085 100755
> --- a/debian/scripts/misc/kernelconfig
> +++ b/debian/scripts/misc/kernelconfig
> @@ -39,6 +39,8 @@ if [ "$mode" = "genconfigs" ]; then
>  	test -d CONFIGS || mkdir CONFIGS
>  fi
>  
> +warning_partial=
> +
>  for arch in $archs; do
>  	rm -rf build
>  	mkdir build
> @@ -64,9 +66,15 @@ for arch in $archs; do
>  	# Environment variables for 'make *config'. We omit CROSS_COMPILE
>  	# for i386 since it is no longer supported after 19.04, however
>  	# we maintain the configs for hwe.
> +	modify_config=true
>  	env="ARCH=$kernarch"
> -	if [ "$arch" != "i386" ]; then
> +	compiler_path=$(which "${cross_compile}gcc" || true)
> +	if [ "$compiler_path" != '' ]; then
>  		env="$env CROSS_COMPILE=$cross_compile"
> +	else
> +		echo "WARNING: ${cross_compile}gcc not installed"
> +		modify_config=
> +		warning_partial="$warning_partial $arch"
>  	fi
>  
>  	archconfdir=$confdir/$arch
> @@ -100,38 +108,39 @@ for arch in $archs; do
>  			fullconf="$tmpdir/$arch-$config-full"
>  			cat "$fullconf" > build/.config
>  			# Call oldconfig or menuconfig
> -			case "$mode" in
> -			    editconfigs)
> -				# Interactively edit config parameters
> -				while : ; do
> -					echo -n "Do you want to edit config: $arch/$config? [Y/n] "
> -					read choice
> -					
> -					case "$choice" in
> -					y* | Y* | "" )
> -						make O=`pwd`/build $env menuconfig
> -						break ;;
> -					n* | N* )
> -						# 'syncconfig' prevents
> -						# errors for '-' options set
> -						# in common config fragments
> -						make O=`pwd`/build $env syncconfig
> -						break ;;
> -					*)
> -						echo "Entry not valid"
> -					esac
> -				done
> -				;;
> -			    *)
> -				echo "* Run $mode (yes=$yes) on $arch/$config ..."
> -				if [ "$yes" -eq 1 ]; then
> -					yes "" | make O=`pwd`/build $env "$mode"
> -				else
> -					make O=`pwd`/build $env "$mode"
> -				fi ;;
> -			esac
> +			if [ "$modify_config" ]; then
> +				case "$mode" in
> +				    editconfigs)
> +					# Interactively edit config parameters
> +					while : ; do
> +						echo -n "Do you want to edit config: $arch/$config? [Y/n] "
> +						read choice
> +						case "$choice" in
> +						y* | Y* | "" )
> +							make O=`pwd`/build $env menuconfig
> +							break ;;
> +						n* | N* )
> +							# 'syncconfig' prevents
> +							# errors for '-' options set
> +							# in common config fragments
> +							make O=`pwd`/build $env syncconfig
> +							break ;;
> +						*)
> +							echo "Entry not valid"
> +						esac
> +					done
> +					;;
> +				    *)
> +					echo "* Run $mode (yes=$yes) on $arch/$config ..."
> +					if [ "$yes" -eq 1 ]; then
> +						yes "" | make O=`pwd`/build $env "$mode"
> +					else
> +						make O=`pwd`/build $env "$mode"
> +					fi ;;
> +				esac
> +			fi
>  			cat build/.config > $archconfdir/$config
> -			cat build/.config > "$tmpdir/CONFIGS/$arch-$config"
> +			[ "$modify_config" ] && cat build/.config >"$tmpdir/CONFIGS/$arch-$config"
>  			if [ "$keep" = "1" ]; then
>  				cat build/.config > CONFIGS/$arch-$config
>  			fi
> @@ -176,6 +185,7 @@ for arch in $archs; do
>  		flavour="${config##*.}"
>  		if [ -f $archconfdir/$config ]; then
>  			fullconf="$tmpdir/CONFIGS/$arch-$config"
> +			[ ! -f "$fullconf" ] && continue
>  			"$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" "0" || let "fail=$fail+1"
>  		fi
>  	done
> @@ -189,3 +199,8 @@ fi
>  
>  rm -rf build
>  
> +if [ "$warning_partial" ]; then
> +	echo ""
> +	echo "WARNING: configuration operation applied only to a subset of architectures (skipped$warning_partial)" 1>&2
> +	echo ""
> +fi
>
Frank Heimes Sept. 23, 2020, 2:08 p.m. UTC | #3
I'm going to add the SRU Justification (since I initially raised the bug
...)

On Wed, Sep 23, 2020 at 3:36 PM Stefan Bader <stefan.bader@canonical.com>
wrote:

> On 12.08.20 23:28, Andy Whitcroft wrote:
> > We can only rebuild, edit, or update a configuration for an architecture
> > nativly on that architecture or using a compatible cross-compiler for
> > that architecture.  Skip architectures for which we do not have an
> > apropriate compiler.  When we do not perform the requested operation on
> > all architectures report those which have been skipped clearly at the
> > bottom of the output.
> >
> >     WARNING: configuration operation applied only to a subset of
> >         architectures (skipped i386 armhf arm64 ppc64el s390x)
> >
> > [seth.forshee@canonical.com: remove i386 special case.]
> > BugLink: https://bugs.launchpad.net/bugs/1863116
> > Signed-off-by: Andy Whitcroft <apw@canonical.com>
> Acked-by: Stefan Bader <stefan.bader@canonical.com>
> > ---
>
> The bug report should contain a filled in justification template. Mind
> adding
> that? I have added nominations for focal and groovy which were missing,
> too.
>
> -Stefan
>
> >  debian/scripts/misc/kernelconfig | 79 +++++++++++++++++++-------------
> >  1 file changed, 47 insertions(+), 32 deletions(-)
> >
> > diff --git a/debian/scripts/misc/kernelconfig
> b/debian/scripts/misc/kernelconfig
> > index fc50c48df3b7..dd45d2f2b085 100755
> > --- a/debian/scripts/misc/kernelconfig
> > +++ b/debian/scripts/misc/kernelconfig
> > @@ -39,6 +39,8 @@ if [ "$mode" = "genconfigs" ]; then
> >       test -d CONFIGS || mkdir CONFIGS
> >  fi
> >
> > +warning_partial=
> > +
> >  for arch in $archs; do
> >       rm -rf build
> >       mkdir build
> > @@ -64,9 +66,15 @@ for arch in $archs; do
> >       # Environment variables for 'make *config'. We omit CROSS_COMPILE
> >       # for i386 since it is no longer supported after 19.04, however
> >       # we maintain the configs for hwe.
> > +     modify_config=true
> >       env="ARCH=$kernarch"
> > -     if [ "$arch" != "i386" ]; then
> > +     compiler_path=$(which "${cross_compile}gcc" || true)
> > +     if [ "$compiler_path" != '' ]; then
> >               env="$env CROSS_COMPILE=$cross_compile"
> > +     else
> > +             echo "WARNING: ${cross_compile}gcc not installed"
> > +             modify_config=
> > +             warning_partial="$warning_partial $arch"
> >       fi
> >
> >       archconfdir=$confdir/$arch
> > @@ -100,38 +108,39 @@ for arch in $archs; do
> >                       fullconf="$tmpdir/$arch-$config-full"
> >                       cat "$fullconf" > build/.config
> >                       # Call oldconfig or menuconfig
> > -                     case "$mode" in
> > -                         editconfigs)
> > -                             # Interactively edit config parameters
> > -                             while : ; do
> > -                                     echo -n "Do you want to edit
> config: $arch/$config? [Y/n] "
> > -                                     read choice
> > -
> > -                                     case "$choice" in
> > -                                     y* | Y* | "" )
> > -                                             make O=`pwd`/build $env
> menuconfig
> > -                                             break ;;
> > -                                     n* | N* )
> > -                                             # 'syncconfig' prevents
> > -                                             # errors for '-' options
> set
> > -                                             # in common config
> fragments
> > -                                             make O=`pwd`/build $env
> syncconfig
> > -                                             break ;;
> > -                                     *)
> > -                                             echo "Entry not valid"
> > -                                     esac
> > -                             done
> > -                             ;;
> > -                         *)
> > -                             echo "* Run $mode (yes=$yes) on
> $arch/$config ..."
> > -                             if [ "$yes" -eq 1 ]; then
> > -                                     yes "" | make O=`pwd`/build $env
> "$mode"
> > -                             else
> > -                                     make O=`pwd`/build $env "$mode"
> > -                             fi ;;
> > -                     esac
> > +                     if [ "$modify_config" ]; then
> > +                             case "$mode" in
> > +                                 editconfigs)
> > +                                     # Interactively edit config
> parameters
> > +                                     while : ; do
> > +                                             echo -n "Do you want to
> edit config: $arch/$config? [Y/n] "
> > +                                             read choice
> > +                                             case "$choice" in
> > +                                             y* | Y* | "" )
> > +                                                     make O=`pwd`/build
> $env menuconfig
> > +                                                     break ;;
> > +                                             n* | N* )
> > +                                                     # 'syncconfig'
> prevents
> > +                                                     # errors for '-'
> options set
> > +                                                     # in common config
> fragments
> > +                                                     make O=`pwd`/build
> $env syncconfig
> > +                                                     break ;;
> > +                                             *)
> > +                                                     echo "Entry not
> valid"
> > +                                             esac
> > +                                     done
> > +                                     ;;
> > +                                 *)
> > +                                     echo "* Run $mode (yes=$yes) on
> $arch/$config ..."
> > +                                     if [ "$yes" -eq 1 ]; then
> > +                                             yes "" | make
> O=`pwd`/build $env "$mode"
> > +                                     else
> > +                                             make O=`pwd`/build $env
> "$mode"
> > +                                     fi ;;
> > +                             esac
> > +                     fi
> >                       cat build/.config > $archconfdir/$config
> > -                     cat build/.config > "$tmpdir/CONFIGS/$arch-$config"
> > +                     [ "$modify_config" ] && cat build/.config
> >"$tmpdir/CONFIGS/$arch-$config"
> >                       if [ "$keep" = "1" ]; then
> >                               cat build/.config > CONFIGS/$arch-$config
> >                       fi
> > @@ -176,6 +185,7 @@ for arch in $archs; do
> >               flavour="${config##*.}"
> >               if [ -f $archconfdir/$config ]; then
> >                       fullconf="$tmpdir/CONFIGS/$arch-$config"
> > +                     [ ! -f "$fullconf" ] && continue
> >                       "$bindir/../config-check" "$fullconf" "$arch"
> "$flavour" "$confdir" "0" "0" || let "fail=$fail+1"
> >               fi
> >       done
> > @@ -189,3 +199,8 @@ fi
> >
> >  rm -rf build
> >
> > +if [ "$warning_partial" ]; then
> > +     echo ""
> > +     echo "WARNING: configuration operation applied only to a subset of
> architectures (skipped$warning_partial)" 1>&2
> > +     echo ""
> > +fi
> >
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
Frank Heimes Sept. 23, 2020, 2:52 p.m. UTC | #4
A SRU Justification is now added to the LP bug.


On Wed, Sep 23, 2020 at 4:08 PM Frank Heimes <frank.heimes@canonical.com>
wrote:

> I'm going to add the SRU Justification (since I initially raised the bug
> ...)
>
> On Wed, Sep 23, 2020 at 3:36 PM Stefan Bader <stefan.bader@canonical.com>
> wrote:
>
>> On 12.08.20 23:28, Andy Whitcroft wrote:
>> > We can only rebuild, edit, or update a configuration for an architecture
>> > nativly on that architecture or using a compatible cross-compiler for
>> > that architecture.  Skip architectures for which we do not have an
>> > apropriate compiler.  When we do not perform the requested operation on
>> > all architectures report those which have been skipped clearly at the
>> > bottom of the output.
>> >
>> >     WARNING: configuration operation applied only to a subset of
>> >         architectures (skipped i386 armhf arm64 ppc64el s390x)
>> >
>> > [seth.forshee@canonical.com: remove i386 special case.]
>> > BugLink: https://bugs.launchpad.net/bugs/1863116
>> > Signed-off-by: Andy Whitcroft <apw@canonical.com>
>> Acked-by: Stefan Bader <stefan.bader@canonical.com>
>> > ---
>>
>> The bug report should contain a filled in justification template. Mind
>> adding
>> that? I have added nominations for focal and groovy which were missing,
>> too.
>>
>> -Stefan
>>
>> >  debian/scripts/misc/kernelconfig | 79 +++++++++++++++++++-------------
>> >  1 file changed, 47 insertions(+), 32 deletions(-)
>> >
>> > diff --git a/debian/scripts/misc/kernelconfig
>> b/debian/scripts/misc/kernelconfig
>> > index fc50c48df3b7..dd45d2f2b085 100755
>> > --- a/debian/scripts/misc/kernelconfig
>> > +++ b/debian/scripts/misc/kernelconfig
>> > @@ -39,6 +39,8 @@ if [ "$mode" = "genconfigs" ]; then
>> >       test -d CONFIGS || mkdir CONFIGS
>> >  fi
>> >
>> > +warning_partial=
>> > +
>> >  for arch in $archs; do
>> >       rm -rf build
>> >       mkdir build
>> > @@ -64,9 +66,15 @@ for arch in $archs; do
>> >       # Environment variables for 'make *config'. We omit CROSS_COMPILE
>> >       # for i386 since it is no longer supported after 19.04, however
>> >       # we maintain the configs for hwe.
>> > +     modify_config=true
>> >       env="ARCH=$kernarch"
>> > -     if [ "$arch" != "i386" ]; then
>> > +     compiler_path=$(which "${cross_compile}gcc" || true)
>> > +     if [ "$compiler_path" != '' ]; then
>> >               env="$env CROSS_COMPILE=$cross_compile"
>> > +     else
>> > +             echo "WARNING: ${cross_compile}gcc not installed"
>> > +             modify_config=
>> > +             warning_partial="$warning_partial $arch"
>> >       fi
>> >
>> >       archconfdir=$confdir/$arch
>> > @@ -100,38 +108,39 @@ for arch in $archs; do
>> >                       fullconf="$tmpdir/$arch-$config-full"
>> >                       cat "$fullconf" > build/.config
>> >                       # Call oldconfig or menuconfig
>> > -                     case "$mode" in
>> > -                         editconfigs)
>> > -                             # Interactively edit config parameters
>> > -                             while : ; do
>> > -                                     echo -n "Do you want to edit
>> config: $arch/$config? [Y/n] "
>> > -                                     read choice
>> > -
>> > -                                     case "$choice" in
>> > -                                     y* | Y* | "" )
>> > -                                             make O=`pwd`/build $env
>> menuconfig
>> > -                                             break ;;
>> > -                                     n* | N* )
>> > -                                             # 'syncconfig' prevents
>> > -                                             # errors for '-' options
>> set
>> > -                                             # in common config
>> fragments
>> > -                                             make O=`pwd`/build $env
>> syncconfig
>> > -                                             break ;;
>> > -                                     *)
>> > -                                             echo "Entry not valid"
>> > -                                     esac
>> > -                             done
>> > -                             ;;
>> > -                         *)
>> > -                             echo "* Run $mode (yes=$yes) on
>> $arch/$config ..."
>> > -                             if [ "$yes" -eq 1 ]; then
>> > -                                     yes "" | make O=`pwd`/build $env
>> "$mode"
>> > -                             else
>> > -                                     make O=`pwd`/build $env "$mode"
>> > -                             fi ;;
>> > -                     esac
>> > +                     if [ "$modify_config" ]; then
>> > +                             case "$mode" in
>> > +                                 editconfigs)
>> > +                                     # Interactively edit config
>> parameters
>> > +                                     while : ; do
>> > +                                             echo -n "Do you want to
>> edit config: $arch/$config? [Y/n] "
>> > +                                             read choice
>> > +                                             case "$choice" in
>> > +                                             y* | Y* | "" )
>> > +                                                     make
>> O=`pwd`/build $env menuconfig
>> > +                                                     break ;;
>> > +                                             n* | N* )
>> > +                                                     # 'syncconfig'
>> prevents
>> > +                                                     # errors for '-'
>> options set
>> > +                                                     # in common
>> config fragments
>> > +                                                     make
>> O=`pwd`/build $env syncconfig
>> > +                                                     break ;;
>> > +                                             *)
>> > +                                                     echo "Entry not
>> valid"
>> > +                                             esac
>> > +                                     done
>> > +                                     ;;
>> > +                                 *)
>> > +                                     echo "* Run $mode (yes=$yes) on
>> $arch/$config ..."
>> > +                                     if [ "$yes" -eq 1 ]; then
>> > +                                             yes "" | make
>> O=`pwd`/build $env "$mode"
>> > +                                     else
>> > +                                             make O=`pwd`/build $env
>> "$mode"
>> > +                                     fi ;;
>> > +                             esac
>> > +                     fi
>> >                       cat build/.config > $archconfdir/$config
>> > -                     cat build/.config >
>> "$tmpdir/CONFIGS/$arch-$config"
>> > +                     [ "$modify_config" ] && cat build/.config
>> >"$tmpdir/CONFIGS/$arch-$config"
>> >                       if [ "$keep" = "1" ]; then
>> >                               cat build/.config > CONFIGS/$arch-$config
>> >                       fi
>> > @@ -176,6 +185,7 @@ for arch in $archs; do
>> >               flavour="${config##*.}"
>> >               if [ -f $archconfdir/$config ]; then
>> >                       fullconf="$tmpdir/CONFIGS/$arch-$config"
>> > +                     [ ! -f "$fullconf" ] && continue
>> >                       "$bindir/../config-check" "$fullconf" "$arch"
>> "$flavour" "$confdir" "0" "0" || let "fail=$fail+1"
>> >               fi
>> >       done
>> > @@ -189,3 +199,8 @@ fi
>> >
>> >  rm -rf build
>> >
>> > +if [ "$warning_partial" ]; then
>> > +     echo ""
>> > +     echo "WARNING: configuration operation applied only to a subset
>> of architectures (skipped$warning_partial)" 1>&2
>> > +     echo ""
>> > +fi
>> >
>>
>>
>> --
>> kernel-team mailing list
>> kernel-team@lists.ubuntu.com
>> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>>
>
Ian May Oct. 2, 2020, 10:37 p.m. UTC | #5
Applied to Focal/master-next.  Thanks!

Ian

On 2020-08-12 22:28:28 , Andy Whitcroft wrote:
> We can only rebuild, edit, or update a configuration for an architecture
> nativly on that architecture or using a compatible cross-compiler for
> that architecture.  Skip architectures for which we do not have an
> apropriate compiler.  When we do not perform the requested operation on
> all architectures report those which have been skipped clearly at the
> bottom of the output.
> 
>     WARNING: configuration operation applied only to a subset of
>         architectures (skipped i386 armhf arm64 ppc64el s390x)
> 
> [seth.forshee@canonical.com: remove i386 special case.]
> BugLink: https://bugs.launchpad.net/bugs/1863116
> Signed-off-by: Andy Whitcroft <apw@canonical.com>
> ---
>  debian/scripts/misc/kernelconfig | 79 +++++++++++++++++++-------------
>  1 file changed, 47 insertions(+), 32 deletions(-)
> 
> diff --git a/debian/scripts/misc/kernelconfig b/debian/scripts/misc/kernelconfig
> index fc50c48df3b7..dd45d2f2b085 100755
> --- a/debian/scripts/misc/kernelconfig
> +++ b/debian/scripts/misc/kernelconfig
> @@ -39,6 +39,8 @@ if [ "$mode" = "genconfigs" ]; then
>  	test -d CONFIGS || mkdir CONFIGS
>  fi
>  
> +warning_partial=
> +
>  for arch in $archs; do
>  	rm -rf build
>  	mkdir build
> @@ -64,9 +66,15 @@ for arch in $archs; do
>  	# Environment variables for 'make *config'. We omit CROSS_COMPILE
>  	# for i386 since it is no longer supported after 19.04, however
>  	# we maintain the configs for hwe.
> +	modify_config=true
>  	env="ARCH=$kernarch"
> -	if [ "$arch" != "i386" ]; then
> +	compiler_path=$(which "${cross_compile}gcc" || true)
> +	if [ "$compiler_path" != '' ]; then
>  		env="$env CROSS_COMPILE=$cross_compile"
> +	else
> +		echo "WARNING: ${cross_compile}gcc not installed"
> +		modify_config=
> +		warning_partial="$warning_partial $arch"
>  	fi
>  
>  	archconfdir=$confdir/$arch
> @@ -100,38 +108,39 @@ for arch in $archs; do
>  			fullconf="$tmpdir/$arch-$config-full"
>  			cat "$fullconf" > build/.config
>  			# Call oldconfig or menuconfig
> -			case "$mode" in
> -			    editconfigs)
> -				# Interactively edit config parameters
> -				while : ; do
> -					echo -n "Do you want to edit config: $arch/$config? [Y/n] "
> -					read choice
> -					
> -					case "$choice" in
> -					y* | Y* | "" )
> -						make O=`pwd`/build $env menuconfig
> -						break ;;
> -					n* | N* )
> -						# 'syncconfig' prevents
> -						# errors for '-' options set
> -						# in common config fragments
> -						make O=`pwd`/build $env syncconfig
> -						break ;;
> -					*)
> -						echo "Entry not valid"
> -					esac
> -				done
> -				;;
> -			    *)
> -				echo "* Run $mode (yes=$yes) on $arch/$config ..."
> -				if [ "$yes" -eq 1 ]; then
> -					yes "" | make O=`pwd`/build $env "$mode"
> -				else
> -					make O=`pwd`/build $env "$mode"
> -				fi ;;
> -			esac
> +			if [ "$modify_config" ]; then
> +				case "$mode" in
> +				    editconfigs)
> +					# Interactively edit config parameters
> +					while : ; do
> +						echo -n "Do you want to edit config: $arch/$config? [Y/n] "
> +						read choice
> +						case "$choice" in
> +						y* | Y* | "" )
> +							make O=`pwd`/build $env menuconfig
> +							break ;;
> +						n* | N* )
> +							# 'syncconfig' prevents
> +							# errors for '-' options set
> +							# in common config fragments
> +							make O=`pwd`/build $env syncconfig
> +							break ;;
> +						*)
> +							echo "Entry not valid"
> +						esac
> +					done
> +					;;
> +				    *)
> +					echo "* Run $mode (yes=$yes) on $arch/$config ..."
> +					if [ "$yes" -eq 1 ]; then
> +						yes "" | make O=`pwd`/build $env "$mode"
> +					else
> +						make O=`pwd`/build $env "$mode"
> +					fi ;;
> +				esac
> +			fi
>  			cat build/.config > $archconfdir/$config
> -			cat build/.config > "$tmpdir/CONFIGS/$arch-$config"
> +			[ "$modify_config" ] && cat build/.config >"$tmpdir/CONFIGS/$arch-$config"
>  			if [ "$keep" = "1" ]; then
>  				cat build/.config > CONFIGS/$arch-$config
>  			fi
> @@ -176,6 +185,7 @@ for arch in $archs; do
>  		flavour="${config##*.}"
>  		if [ -f $archconfdir/$config ]; then
>  			fullconf="$tmpdir/CONFIGS/$arch-$config"
> +			[ ! -f "$fullconf" ] && continue
>  			"$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" "0" || let "fail=$fail+1"
>  		fi
>  	done
> @@ -189,3 +199,8 @@ fi
>  
>  rm -rf build
>  
> +if [ "$warning_partial" ]; then
> +	echo ""
> +	echo "WARNING: configuration operation applied only to a subset of architectures (skipped$warning_partial)" 1>&2
> +	echo ""
> +fi
> -- 
> 2.27.0
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff mbox series

Patch

diff --git a/debian/scripts/misc/kernelconfig b/debian/scripts/misc/kernelconfig
index fc50c48df3b7..dd45d2f2b085 100755
--- a/debian/scripts/misc/kernelconfig
+++ b/debian/scripts/misc/kernelconfig
@@ -39,6 +39,8 @@  if [ "$mode" = "genconfigs" ]; then
 	test -d CONFIGS || mkdir CONFIGS
 fi
 
+warning_partial=
+
 for arch in $archs; do
 	rm -rf build
 	mkdir build
@@ -64,9 +66,15 @@  for arch in $archs; do
 	# Environment variables for 'make *config'. We omit CROSS_COMPILE
 	# for i386 since it is no longer supported after 19.04, however
 	# we maintain the configs for hwe.
+	modify_config=true
 	env="ARCH=$kernarch"
-	if [ "$arch" != "i386" ]; then
+	compiler_path=$(which "${cross_compile}gcc" || true)
+	if [ "$compiler_path" != '' ]; then
 		env="$env CROSS_COMPILE=$cross_compile"
+	else
+		echo "WARNING: ${cross_compile}gcc not installed"
+		modify_config=
+		warning_partial="$warning_partial $arch"
 	fi
 
 	archconfdir=$confdir/$arch
@@ -100,38 +108,39 @@  for arch in $archs; do
 			fullconf="$tmpdir/$arch-$config-full"
 			cat "$fullconf" > build/.config
 			# Call oldconfig or menuconfig
-			case "$mode" in
-			    editconfigs)
-				# Interactively edit config parameters
-				while : ; do
-					echo -n "Do you want to edit config: $arch/$config? [Y/n] "
-					read choice
-					
-					case "$choice" in
-					y* | Y* | "" )
-						make O=`pwd`/build $env menuconfig
-						break ;;
-					n* | N* )
-						# 'syncconfig' prevents
-						# errors for '-' options set
-						# in common config fragments
-						make O=`pwd`/build $env syncconfig
-						break ;;
-					*)
-						echo "Entry not valid"
-					esac
-				done
-				;;
-			    *)
-				echo "* Run $mode (yes=$yes) on $arch/$config ..."
-				if [ "$yes" -eq 1 ]; then
-					yes "" | make O=`pwd`/build $env "$mode"
-				else
-					make O=`pwd`/build $env "$mode"
-				fi ;;
-			esac
+			if [ "$modify_config" ]; then
+				case "$mode" in
+				    editconfigs)
+					# Interactively edit config parameters
+					while : ; do
+						echo -n "Do you want to edit config: $arch/$config? [Y/n] "
+						read choice
+						case "$choice" in
+						y* | Y* | "" )
+							make O=`pwd`/build $env menuconfig
+							break ;;
+						n* | N* )
+							# 'syncconfig' prevents
+							# errors for '-' options set
+							# in common config fragments
+							make O=`pwd`/build $env syncconfig
+							break ;;
+						*)
+							echo "Entry not valid"
+						esac
+					done
+					;;
+				    *)
+					echo "* Run $mode (yes=$yes) on $arch/$config ..."
+					if [ "$yes" -eq 1 ]; then
+						yes "" | make O=`pwd`/build $env "$mode"
+					else
+						make O=`pwd`/build $env "$mode"
+					fi ;;
+				esac
+			fi
 			cat build/.config > $archconfdir/$config
-			cat build/.config > "$tmpdir/CONFIGS/$arch-$config"
+			[ "$modify_config" ] && cat build/.config >"$tmpdir/CONFIGS/$arch-$config"
 			if [ "$keep" = "1" ]; then
 				cat build/.config > CONFIGS/$arch-$config
 			fi
@@ -176,6 +185,7 @@  for arch in $archs; do
 		flavour="${config##*.}"
 		if [ -f $archconfdir/$config ]; then
 			fullconf="$tmpdir/CONFIGS/$arch-$config"
+			[ ! -f "$fullconf" ] && continue
 			"$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" "0" || let "fail=$fail+1"
 		fi
 	done
@@ -189,3 +199,8 @@  fi
 
 rm -rf build
 
+if [ "$warning_partial" ]; then
+	echo ""
+	echo "WARNING: configuration operation applied only to a subset of architectures (skipped$warning_partial)" 1>&2
+	echo ""
+fi