Message ID | 20230509142951.62580-1-juerg.haefliger@canonical.com |
---|---|
State | New |
Headers | show |
Series | [Unstable] UBUNTU: [Packaging] Drop support of old config handling | expand |
On 5/9/23 8:29 AM, Juerg Haefliger wrote: > All kernels and their derivatives have been migrated to the new annotations > scheme by now so clean up the tree and drop the support of the old config > handling. > > Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com> > --- > debian/rules.d/1-maintainer.mk | 22 --- > debian/rules.d/4-checks.mk | 10 +- > debian/scripts/checks/config-check | 163 ------------------ > debian/scripts/misc/migrate-annotations | 35 ---- > debian/scripts/misc/old-kernelconfig | 218 ------------------------ > 5 files changed, 2 insertions(+), 446 deletions(-) > delete mode 100755 debian/scripts/checks/config-check > delete mode 100755 debian/scripts/misc/migrate-annotations > delete mode 100644 debian/scripts/misc/old-kernelconfig > > diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk > index 6eded3eb4626..2b72ffc56e72 100644 > --- a/debian/rules.d/1-maintainer.mk > +++ b/debian/rules.d/1-maintainer.mk > @@ -10,7 +10,6 @@ help: > @echo " defaultconfigs : Update core arch configs using defaults" > @echo " genconfigs : Generate core arch configs in CONFIGS/*" > @echo " editconfigs : Edit core arch configs" > - @echo " migrateconfigs : Automatically import old configs into annotations" > @echo " printchanges : Print the current changelog entries (from git)" > @echo " insertchanges : Insert current changelog entries (from git)" > @echo " startnewrelease : Start a new changelog set" > @@ -25,34 +24,13 @@ help: > printdebian: > @echo "$(DEBIAN)" > > -.PHONY: migrateconfigs > -migrateconfigs: > -ifneq ($(wildcard $(DEBIAN)/config/config.common.ubuntu),) > - dh_testdir > - conc_level=$(conc_level) $(SHELL) $(DROOT)/scripts/misc/old-kernelconfig genconfigs > - rm -rf build > - mkdir build > - mv $(DEBIAN)/config/annotations build/.annotations > - mv $(DEBIAN)/config/README.rst build/.README.rst 2>/dev/null || true > - rm -rf $(DEBIAN)/config > - mkdir -p $(DEBIAN)/config > - debian/scripts/misc/migrate-annotations < build/.annotations > $(DEBIAN)/config/annotations > - mv build/.README.rst $(DEBIAN)/config/README.rst 2>/dev/null || true > - rm -rf build > - kmake='$(kmake)' conc_level=$(conc_level) $(SHELL) $(DROOT)/scripts/misc/kernelconfig updateconfigs > -endif > - > configs-targets := updateconfigs defaultconfigs genconfigs editconfigs > > .PHONY: $(configs-targets) > $(configs-targets): > dh_testdir > -ifneq ($(wildcard $(DEBIAN)/config/config.common.ubuntu),) > - conc_level=$(conc_level) $(SHELL) $(DROOT)/scripts/misc/old-kernelconfig $@ > -else > kmake='$(kmake)' skip_checks=$(do_skip_checks) conc_level=$(conc_level) \ > $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ > -endif > > .PHONY: printenv > printenv: > diff --git a/debian/rules.d/4-checks.mk b/debian/rules.d/4-checks.mk > index 2f7853fd51e5..34b343189de5 100644 > --- a/debian/rules.d/4-checks.mk > +++ b/debian/rules.d/4-checks.mk > @@ -31,12 +31,6 @@ checks-%: module-check-% module-signature-check-% abi-check-% retpoline-check-% > config-prepare-check-%: $(stampdir)/stamp-prepare-tree-% > @echo Debug: $@ > ifneq ($(do_skip_checks),true) > - if [ -e $(commonconfdir)/config.common.ubuntu ]; then \ > - perl -f $(DROOT)/scripts/checks/config-check \ > - $(builddir)/build-$*/.config "$(arch)" "$*" "$(commonconfdir)" \ > - "$(skipconfig)" "$(do_enforce_all)"; \ > - else \ > - python3 $(DROOT)/scripts/misc/annotations -f $(commonconfdir)/annotations \ > - --arch $(arch) --flavour $* --check $(builddir)/build-$*/.config; \ > - fi > + python3 $(DROOT)/scripts/misc/annotations -f $(commonconfdir)/annotations \ > + --arch $(arch) --flavour $* --check $(builddir)/build-$*/.config > endif > diff --git a/debian/scripts/checks/config-check b/debian/scripts/checks/config-check > deleted file mode 100755 > index 845a649db7af..000000000000 > --- a/debian/scripts/checks/config-check > +++ /dev/null > @@ -1,163 +0,0 @@ > -#!/usr/bin/perl > -# > -# check-config -- check the current config for issues > -# > -use strict; > -use File::Basename; > -use File::Spec; > - > -my $P = 'check-config'; > - > -my $test = -1; > -if ($ARGV[0] eq '--test') { > - $test = $ARGV[1] + 0; > -} elsif ($#ARGV != 5) { > - die "Usage: $P <config> <arch> <flavour> <commonconfig> <warn-only> <enforce-all>\n"; > -} > - > -my ($configfile, $arch, $flavour, $commonconfig, $warn_only, $enforce_all) = @ARGV; > - > -my %values = (); > - > -# If we are in overridden then still perform the checks and emit the messages > -# but do not return failure. Those items marked FATAL will alway trigger > -# failure. > -my $fail_exit = 1; > -$fail_exit = 0 if ($warn_only eq 'true' || $warn_only eq '1'); > -my $exit_val = 0; > - > -$enforce_all = 0 if $enforce_all eq "no" or $enforce_all eq "false"; > - > -# Load up the current configuration values -- FATAL if this fails > -print "$P: $configfile: loading config\n"; > -open(CONFIG, "<$configfile") || die "$P: $configfile: open failed -- $! -- aborting\n"; > -while (<CONFIG>) { > - # Pull out values. > - /^#*\s*(CONFIG_\w+)[\s=](.*)$/ or next; > - if ($2 eq 'is not set') { > - $values{$1} = 'n'; > - } else { > - $values{$1} = $2; > - } > -} > -close(CONFIG); > - > -sub read_annotations { > - my ($filename) = @_; > - my %annot; > - my $form = 1; > - my ($config, $value, $options); > - > - # Keep track of the configs that shouldn't be appended because > - # they were include_annot from another annotations file. > - # That's a hash of undefs, aka a set. > - my %noappend; > - > - print "$P: $filename loading annotations\n"; > - open(my $fd, "<$filename") || > - die "$P: $filename: open failed -- $! -- aborting\n"; > - while (<$fd>) { > - if (/^# FORMAT: (\S+)/) { > - die "$P: $1: unknown annotations format\n" if ($1 != 2 && $1 != 3 && $1 != 4); > - $form = $1; > - } > - > - # Format #3 adds the include directive on top of format #2: > - if ($form == 3 && /^\s*include(\s|$)/) { > - # Include quoted or unquoted files: > - if (/^\s*include\s+"(.*)"\s*$/ || /^\s*include\s+(.*)$/) { > - # The include is relative to the current file > - my $include_filename = File::Spec->join(dirname($filename), $1); > - # Append the include files > - my %include_annot = read_annotations($include_filename); > - %annot = ( %annot, %include_annot ); > - # And marked them to not be appended: > - my %included_noappend; > - # Discard the values and keep only the keys > - @included_noappend{keys %include_annot} = (); > - %noappend = ( %noappend, %included_noappend ); > - next; > - } else { > - die "$P: Invalid include: $_"; > - } > - } > - > - /^#/ && next; > - chomp; > - /^$/ && next; > - /^CONFIG_/ || next; > - > - if ($form == 1) { > - ($config, $value, $options) = split(' ', $_, 3); > - } elsif ($form >= 2) { > - ($config, $options) = split(' ', $_, 2); > - } > - > - if (exists $noappend{$config}) { > - delete $annot{$config}; > - delete $noappend{$config}; > - } > - $annot{$config} = $annot{$config} . ' ' . $options; > - } > - close($fd); > - return %annot; > -} > - > -# ANNOTATIONS: check any annotations marked for enforcement > -my $annotations = "$commonconfig/annotations"; > -my %annot = read_annotations($annotations); > - > -my $pass = 0; > -my $total = 0; > -my ($config, $value, $options, $option, $check, $policy); > -for $config (keys %annot) { > - $check = $enforce_all; > - $options = $annot{$config}; > - > - $policy = undef; > - while ($options =~ /\s*([^\s<]+)<(.*?)?>/g) { > - ($option, $value) = ($1, $2); > - > - if ($option eq 'mark' && $value eq 'ENFORCED') { > - $check = 1; > - > - } elsif ($option eq 'policy') { > - if ($value =~ /^{/) { > - $value =~ s/:/=>/g; > - $policy = eval($value); > - warn "$config: $@" if ($@); > - } else { > - $policy = undef; > - } > - } > - } > - if ($check == 1 && !defined($policy)) { > - print "$P: INVALID POLICY (use policy<{...}>) $config$options\n"; > - $total++; > - $check = 0; > - } > - if ($check) { > - # CONFIG_VERSION_SIGNATURE is dynamically set during the build > - next if ($config eq "CONFIG_VERSION_SIGNATURE"); > - my $is = '-'; > - $is = $values{$config} if (defined $values{$config}); > - > - my $value = '-'; > - for my $which ("$arch-$flavour", "$arch-*", "*-$flavour", "$arch", "*") { > - if (defined $policy->{$which}) { > - $value = $policy->{$which}; > - last; > - } > - } > - if ($is eq $value) { > - $pass++; > - } else { > - print "$P: FAIL ($is != $value): $config$options\n"; > - $exit_val = $fail_exit; > - } > - $total++; > - } > -} > - > -print "$P: $pass/$total checks passed -- exit $exit_val\n"; > -exit $exit_val; > diff --git a/debian/scripts/misc/migrate-annotations b/debian/scripts/misc/migrate-annotations > deleted file mode 100755 > index dc313c6d6c3d..000000000000 > --- a/debian/scripts/misc/migrate-annotations > +++ /dev/null > @@ -1,35 +0,0 @@ > -#!/bin/bash > - > -. debian/debian.env > - > -# We have to be in the top level kernel source directory > -if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then > - echo "This does not appear to be the kernel source directory." 1>&2 > - exit 1 > -fi > - > -. ${DEBIAN}/etc/kernelconfig > - > -ARCH=$(echo $archs | tr " " "\n" | sort -u) > -FLAVOUR=$(for arch in ${ARCH}; do > - flavours=$(sed -ne 's/^flavours\s*=\s*\(.*\)$/\1/p' ${DEBIAN}/rules.d/${arch}.mk) > - for flavour in ${flavours}; do > - echo ${arch}-${flavour} > - done > -done | tr " " "\n" | sort -u) > - > -while read line; do > - (echo $line | grep -q '^#') || break > -done > - > -cat << EOF > -# Menu: HEADER > -# FORMAT: 4 > -# ARCH: $(echo ${ARCH}) > -# FLAVOUR: $(echo ${FLAVOUR}) > - > -EOF > - > -while read line; do > - echo ${line} > -done > diff --git a/debian/scripts/misc/old-kernelconfig b/debian/scripts/misc/old-kernelconfig > deleted file mode 100644 > index b68676ea85c6..000000000000 > --- a/debian/scripts/misc/old-kernelconfig > +++ /dev/null > @@ -1,218 +0,0 @@ > -#!/bin/bash > - > -. debian/debian.env > - > -# Script to merge all configs and run 'make syncconfig' on it to wade out bad juju. > -# Then split the configs into distro-commmon and flavour-specific parts > - > -# We have to be in the top level kernel source directory > -if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then > - echo "This does not appear to be the kernel source directory." 1>&2 > - exit 1 > -fi > - > -mode=${1:?"Usage: $0 (oldconfig|editconfig) [do_enforce_all]"} > -do_enforce_all=${2:-0} > -yes=0 > -case "$mode" in > - update*configs) mode='syncconfig' ;; > - default*configs) mode='oldconfig'; yes=1 ;; > - edit*configs) ;; # All is good > - gen*configs) mode='genconfigs' ;; # All is good > - dump*configs) mode='config'; yes=1 ;; > - *) echo "$0 called with invalid mode" 1>&2 > - exit 1 ;; > -esac > - > -if [ -z "$gcc" ]; then > - echo "ERROR: gcc environment variable must be set" > - exit 1 > -fi > - > -kerneldir="`pwd`" > -confdir="$kerneldir/${DEBIAN}/config" > -variant="$2" > - > -. $DEBIAN/etc/kernelconfig > - > -bindir="`pwd`/${DROOT}/scripts/misc" > -common_conf="$confdir/config.common.ubuntu" > -tmpdir=`mktemp -d` > -mkdir "$tmpdir/CONFIGS" > - > -if [ "$mode" = "genconfigs" ]; then > - keep=1 > - mode="oldconfig" > - test -d CONFIGS || mkdir CONFIGS > -fi > - > -warning_partial= > - > -for arch in $archs; do > - rm -rf build > - mkdir build > - > - # Map debian archs to kernel archs > - case "$arch" in > - ppc64|ppc64el) kernarch="powerpc" ;; > - amd64) kernarch="x86_64" ;; > - lpia) kernarch="x86" ;; > - sparc) kernarch="sparc64" ;; > - armel|armhf) kernarch="arm" ;; > - s390x) kernarch="s390" ;; > - riscv64) kernarch="riscv" ;; > - *) kernarch="$arch" ;; > - esac > - > - # Determine cross toolchain to use for Kconfig compiler tests > - cross_compile="$(dpkg-architecture -qDEB_HOST_GNU_TYPE -a$arch 2>/dev/null)-" > - > - # Arch-specific compiler, if any > - archgcc=$(echo -e "show-%:\n\t@echo \$(\$*)\ninclude $DEBIAN/rules.d/$arch.mk" | make -s -f - show-gcc) > - > - # 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 DEB_ARCH=$arch" > - compiler_path=$(which "${cross_compile}${archgcc:-$gcc}" || true) > - if [ "$compiler_path" != '' ]; then > - env="$env CROSS_COMPILE=$cross_compile CC=$compiler_path" > - else > - echo "WARNING: ${cross_compile}gcc not installed" > - modify_config= > - warning_partial="$warning_partial $arch" > - fi > - > - archconfdir=$confdir/$arch > - flavourconfigs=$(cd $archconfdir && ls config.flavour.*) > - > - # Merge configs > - # We merge config.common.ubuntu + config.common.<arch> + > - # config.flavour.<flavour> > - > - for config in $flavourconfigs; do > - fullconf="$tmpdir/$arch-$config-full" > - case $config in > - *) > - : >"$fullconf" > - if [ -f $common_conf ]; then > - cat $common_conf >> "$fullconf" > - fi > - if [ -f $archconfdir/config.common.$arch ]; then > - cat $archconfdir/config.common.$arch >> "$fullconf" > - fi > - cat "$archconfdir/$config" >>"$fullconf" > - if [ -f $confdir/OVERRIDES ]; then > - cat $confdir/OVERRIDES >> "$fullconf" > - fi > - ;; > - esac > - done > - > - for config in $flavourconfigs; do > - if [ -f $archconfdir/$config ]; then > - fullconf="$tmpdir/$arch-$config-full" > - cat "$fullconf" > build/.config > - # Call oldconfig or menuconfig > - 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 $conc_level $env menuconfig > - break ;; > - n* | N* ) > - # 'syncconfig' prevents > - # errors for '-' options set > - # in common config fragments > - make O=`pwd`/build $conc_level $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 $conc_level $env "$mode" > - else > - make O=`pwd`/build $conc_level $env "$mode" > - fi ;; > - esac > - fi > - cat build/.config > $archconfdir/$config > - [ "$modify_config" ] && cat build/.config >"$tmpdir/CONFIGS/$arch-$config" > - if [ "$keep" = "1" ]; then > - cat build/.config > CONFIGS/$arch-$config > - fi > - else > - echo "!! Config not found $archconfdir/$config..." > - fi > - done > - > - echo "Running splitconfig.pl for $arch" > - echo > - > - # Can we make this more robust by avoiding $tmpdir completely? > - # This approach was used for now because I didn't want to change > - # splitconfig.pl > - (cd $archconfdir; $bindir/splitconfig.pl config.flavour.*; mv config.common \ > - config.common.$arch; cp config.common.$arch $tmpdir) > -done > - > -rm -f $common_conf > - > -# Now run splitconfig.pl on all the config.common.<arch> copied to > -# $tmpdir > -(cd $tmpdir; $bindir/splitconfig.pl *) > -( > - cd $confdir; > - rm -f *-full > - grep -v 'is UNMERGABLE' <$tmpdir/config.common >$common_conf > - for arch in $archs; do > - grep -v 'is UNMERGABLE' <$tmpdir/config.common.$arch \ > - >$arch/config.common.$arch > - done > -) > - > -echo "" > -echo "Running config-check for all configurations ..." > -echo "" > -fail=0 > -for arch in $archs; do > - archconfdir=$confdir/$arch > - flavourconfigs=$(cd $archconfdir && ls config.flavour.*) > - for config in $flavourconfigs; do > - flavour="${config##*.}" > - if [ -f $archconfdir/$config ]; then > - fullconf="$tmpdir/CONFIGS/$arch-$config" > - [ ! -f "$fullconf" ] && continue > - "$bindir/../checks/config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" "$do_enforce_all" || let "fail=$fail+1" > - fi > - done > -done > - > -rc=0 > -if [ "$fail" != 0 ]; then > - rc=1 > - echo "" > - echo "*** ERROR: $fail config-check failures detected" > - echo "" > -fi > - > -rm -rf build > - > -if [ "$warning_partial" ]; then > - rc=1 > - echo "" > - echo "WARNING: configuration operation applied only to a subset of architectures (skipped$warning_partial)" 1>&2 > - echo "" > -fi > - > -exit "${rc}" Acked-by: Tim Gardner <tim.gardner@canonical.com> Nice cleanup
On Tue, May 09, 2023 at 04:29:51PM +0200, Juerg Haefliger wrote: > All kernels and their derivatives have been migrated to the new annotations > scheme by now so clean up the tree and drop the support of the old config > handling. > > Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com> > --- Applied to mantic/linux-unstable. Thanks, -Andrea
diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk index 6eded3eb4626..2b72ffc56e72 100644 --- a/debian/rules.d/1-maintainer.mk +++ b/debian/rules.d/1-maintainer.mk @@ -10,7 +10,6 @@ help: @echo " defaultconfigs : Update core arch configs using defaults" @echo " genconfigs : Generate core arch configs in CONFIGS/*" @echo " editconfigs : Edit core arch configs" - @echo " migrateconfigs : Automatically import old configs into annotations" @echo " printchanges : Print the current changelog entries (from git)" @echo " insertchanges : Insert current changelog entries (from git)" @echo " startnewrelease : Start a new changelog set" @@ -25,34 +24,13 @@ help: printdebian: @echo "$(DEBIAN)" -.PHONY: migrateconfigs -migrateconfigs: -ifneq ($(wildcard $(DEBIAN)/config/config.common.ubuntu),) - dh_testdir - conc_level=$(conc_level) $(SHELL) $(DROOT)/scripts/misc/old-kernelconfig genconfigs - rm -rf build - mkdir build - mv $(DEBIAN)/config/annotations build/.annotations - mv $(DEBIAN)/config/README.rst build/.README.rst 2>/dev/null || true - rm -rf $(DEBIAN)/config - mkdir -p $(DEBIAN)/config - debian/scripts/misc/migrate-annotations < build/.annotations > $(DEBIAN)/config/annotations - mv build/.README.rst $(DEBIAN)/config/README.rst 2>/dev/null || true - rm -rf build - kmake='$(kmake)' conc_level=$(conc_level) $(SHELL) $(DROOT)/scripts/misc/kernelconfig updateconfigs -endif - configs-targets := updateconfigs defaultconfigs genconfigs editconfigs .PHONY: $(configs-targets) $(configs-targets): dh_testdir -ifneq ($(wildcard $(DEBIAN)/config/config.common.ubuntu),) - conc_level=$(conc_level) $(SHELL) $(DROOT)/scripts/misc/old-kernelconfig $@ -else kmake='$(kmake)' skip_checks=$(do_skip_checks) conc_level=$(conc_level) \ $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ -endif .PHONY: printenv printenv: diff --git a/debian/rules.d/4-checks.mk b/debian/rules.d/4-checks.mk index 2f7853fd51e5..34b343189de5 100644 --- a/debian/rules.d/4-checks.mk +++ b/debian/rules.d/4-checks.mk @@ -31,12 +31,6 @@ checks-%: module-check-% module-signature-check-% abi-check-% retpoline-check-% config-prepare-check-%: $(stampdir)/stamp-prepare-tree-% @echo Debug: $@ ifneq ($(do_skip_checks),true) - if [ -e $(commonconfdir)/config.common.ubuntu ]; then \ - perl -f $(DROOT)/scripts/checks/config-check \ - $(builddir)/build-$*/.config "$(arch)" "$*" "$(commonconfdir)" \ - "$(skipconfig)" "$(do_enforce_all)"; \ - else \ - python3 $(DROOT)/scripts/misc/annotations -f $(commonconfdir)/annotations \ - --arch $(arch) --flavour $* --check $(builddir)/build-$*/.config; \ - fi + python3 $(DROOT)/scripts/misc/annotations -f $(commonconfdir)/annotations \ + --arch $(arch) --flavour $* --check $(builddir)/build-$*/.config endif diff --git a/debian/scripts/checks/config-check b/debian/scripts/checks/config-check deleted file mode 100755 index 845a649db7af..000000000000 --- a/debian/scripts/checks/config-check +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/perl -# -# check-config -- check the current config for issues -# -use strict; -use File::Basename; -use File::Spec; - -my $P = 'check-config'; - -my $test = -1; -if ($ARGV[0] eq '--test') { - $test = $ARGV[1] + 0; -} elsif ($#ARGV != 5) { - die "Usage: $P <config> <arch> <flavour> <commonconfig> <warn-only> <enforce-all>\n"; -} - -my ($configfile, $arch, $flavour, $commonconfig, $warn_only, $enforce_all) = @ARGV; - -my %values = (); - -# If we are in overridden then still perform the checks and emit the messages -# but do not return failure. Those items marked FATAL will alway trigger -# failure. -my $fail_exit = 1; -$fail_exit = 0 if ($warn_only eq 'true' || $warn_only eq '1'); -my $exit_val = 0; - -$enforce_all = 0 if $enforce_all eq "no" or $enforce_all eq "false"; - -# Load up the current configuration values -- FATAL if this fails -print "$P: $configfile: loading config\n"; -open(CONFIG, "<$configfile") || die "$P: $configfile: open failed -- $! -- aborting\n"; -while (<CONFIG>) { - # Pull out values. - /^#*\s*(CONFIG_\w+)[\s=](.*)$/ or next; - if ($2 eq 'is not set') { - $values{$1} = 'n'; - } else { - $values{$1} = $2; - } -} -close(CONFIG); - -sub read_annotations { - my ($filename) = @_; - my %annot; - my $form = 1; - my ($config, $value, $options); - - # Keep track of the configs that shouldn't be appended because - # they were include_annot from another annotations file. - # That's a hash of undefs, aka a set. - my %noappend; - - print "$P: $filename loading annotations\n"; - open(my $fd, "<$filename") || - die "$P: $filename: open failed -- $! -- aborting\n"; - while (<$fd>) { - if (/^# FORMAT: (\S+)/) { - die "$P: $1: unknown annotations format\n" if ($1 != 2 && $1 != 3 && $1 != 4); - $form = $1; - } - - # Format #3 adds the include directive on top of format #2: - if ($form == 3 && /^\s*include(\s|$)/) { - # Include quoted or unquoted files: - if (/^\s*include\s+"(.*)"\s*$/ || /^\s*include\s+(.*)$/) { - # The include is relative to the current file - my $include_filename = File::Spec->join(dirname($filename), $1); - # Append the include files - my %include_annot = read_annotations($include_filename); - %annot = ( %annot, %include_annot ); - # And marked them to not be appended: - my %included_noappend; - # Discard the values and keep only the keys - @included_noappend{keys %include_annot} = (); - %noappend = ( %noappend, %included_noappend ); - next; - } else { - die "$P: Invalid include: $_"; - } - } - - /^#/ && next; - chomp; - /^$/ && next; - /^CONFIG_/ || next; - - if ($form == 1) { - ($config, $value, $options) = split(' ', $_, 3); - } elsif ($form >= 2) { - ($config, $options) = split(' ', $_, 2); - } - - if (exists $noappend{$config}) { - delete $annot{$config}; - delete $noappend{$config}; - } - $annot{$config} = $annot{$config} . ' ' . $options; - } - close($fd); - return %annot; -} - -# ANNOTATIONS: check any annotations marked for enforcement -my $annotations = "$commonconfig/annotations"; -my %annot = read_annotations($annotations); - -my $pass = 0; -my $total = 0; -my ($config, $value, $options, $option, $check, $policy); -for $config (keys %annot) { - $check = $enforce_all; - $options = $annot{$config}; - - $policy = undef; - while ($options =~ /\s*([^\s<]+)<(.*?)?>/g) { - ($option, $value) = ($1, $2); - - if ($option eq 'mark' && $value eq 'ENFORCED') { - $check = 1; - - } elsif ($option eq 'policy') { - if ($value =~ /^{/) { - $value =~ s/:/=>/g; - $policy = eval($value); - warn "$config: $@" if ($@); - } else { - $policy = undef; - } - } - } - if ($check == 1 && !defined($policy)) { - print "$P: INVALID POLICY (use policy<{...}>) $config$options\n"; - $total++; - $check = 0; - } - if ($check) { - # CONFIG_VERSION_SIGNATURE is dynamically set during the build - next if ($config eq "CONFIG_VERSION_SIGNATURE"); - my $is = '-'; - $is = $values{$config} if (defined $values{$config}); - - my $value = '-'; - for my $which ("$arch-$flavour", "$arch-*", "*-$flavour", "$arch", "*") { - if (defined $policy->{$which}) { - $value = $policy->{$which}; - last; - } - } - if ($is eq $value) { - $pass++; - } else { - print "$P: FAIL ($is != $value): $config$options\n"; - $exit_val = $fail_exit; - } - $total++; - } -} - -print "$P: $pass/$total checks passed -- exit $exit_val\n"; -exit $exit_val; diff --git a/debian/scripts/misc/migrate-annotations b/debian/scripts/misc/migrate-annotations deleted file mode 100755 index dc313c6d6c3d..000000000000 --- a/debian/scripts/misc/migrate-annotations +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -. debian/debian.env - -# We have to be in the top level kernel source directory -if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then - echo "This does not appear to be the kernel source directory." 1>&2 - exit 1 -fi - -. ${DEBIAN}/etc/kernelconfig - -ARCH=$(echo $archs | tr " " "\n" | sort -u) -FLAVOUR=$(for arch in ${ARCH}; do - flavours=$(sed -ne 's/^flavours\s*=\s*\(.*\)$/\1/p' ${DEBIAN}/rules.d/${arch}.mk) - for flavour in ${flavours}; do - echo ${arch}-${flavour} - done -done | tr " " "\n" | sort -u) - -while read line; do - (echo $line | grep -q '^#') || break -done - -cat << EOF -# Menu: HEADER -# FORMAT: 4 -# ARCH: $(echo ${ARCH}) -# FLAVOUR: $(echo ${FLAVOUR}) - -EOF - -while read line; do - echo ${line} -done diff --git a/debian/scripts/misc/old-kernelconfig b/debian/scripts/misc/old-kernelconfig deleted file mode 100644 index b68676ea85c6..000000000000 --- a/debian/scripts/misc/old-kernelconfig +++ /dev/null @@ -1,218 +0,0 @@ -#!/bin/bash - -. debian/debian.env - -# Script to merge all configs and run 'make syncconfig' on it to wade out bad juju. -# Then split the configs into distro-commmon and flavour-specific parts - -# We have to be in the top level kernel source directory -if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then - echo "This does not appear to be the kernel source directory." 1>&2 - exit 1 -fi - -mode=${1:?"Usage: $0 (oldconfig|editconfig) [do_enforce_all]"} -do_enforce_all=${2:-0} -yes=0 -case "$mode" in - update*configs) mode='syncconfig' ;; - default*configs) mode='oldconfig'; yes=1 ;; - edit*configs) ;; # All is good - gen*configs) mode='genconfigs' ;; # All is good - dump*configs) mode='config'; yes=1 ;; - *) echo "$0 called with invalid mode" 1>&2 - exit 1 ;; -esac - -if [ -z "$gcc" ]; then - echo "ERROR: gcc environment variable must be set" - exit 1 -fi - -kerneldir="`pwd`" -confdir="$kerneldir/${DEBIAN}/config" -variant="$2" - -. $DEBIAN/etc/kernelconfig - -bindir="`pwd`/${DROOT}/scripts/misc" -common_conf="$confdir/config.common.ubuntu" -tmpdir=`mktemp -d` -mkdir "$tmpdir/CONFIGS" - -if [ "$mode" = "genconfigs" ]; then - keep=1 - mode="oldconfig" - test -d CONFIGS || mkdir CONFIGS -fi - -warning_partial= - -for arch in $archs; do - rm -rf build - mkdir build - - # Map debian archs to kernel archs - case "$arch" in - ppc64|ppc64el) kernarch="powerpc" ;; - amd64) kernarch="x86_64" ;; - lpia) kernarch="x86" ;; - sparc) kernarch="sparc64" ;; - armel|armhf) kernarch="arm" ;; - s390x) kernarch="s390" ;; - riscv64) kernarch="riscv" ;; - *) kernarch="$arch" ;; - esac - - # Determine cross toolchain to use for Kconfig compiler tests - cross_compile="$(dpkg-architecture -qDEB_HOST_GNU_TYPE -a$arch 2>/dev/null)-" - - # Arch-specific compiler, if any - archgcc=$(echo -e "show-%:\n\t@echo \$(\$*)\ninclude $DEBIAN/rules.d/$arch.mk" | make -s -f - show-gcc) - - # 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 DEB_ARCH=$arch" - compiler_path=$(which "${cross_compile}${archgcc:-$gcc}" || true) - if [ "$compiler_path" != '' ]; then - env="$env CROSS_COMPILE=$cross_compile CC=$compiler_path" - else - echo "WARNING: ${cross_compile}gcc not installed" - modify_config= - warning_partial="$warning_partial $arch" - fi - - archconfdir=$confdir/$arch - flavourconfigs=$(cd $archconfdir && ls config.flavour.*) - - # Merge configs - # We merge config.common.ubuntu + config.common.<arch> + - # config.flavour.<flavour> - - for config in $flavourconfigs; do - fullconf="$tmpdir/$arch-$config-full" - case $config in - *) - : >"$fullconf" - if [ -f $common_conf ]; then - cat $common_conf >> "$fullconf" - fi - if [ -f $archconfdir/config.common.$arch ]; then - cat $archconfdir/config.common.$arch >> "$fullconf" - fi - cat "$archconfdir/$config" >>"$fullconf" - if [ -f $confdir/OVERRIDES ]; then - cat $confdir/OVERRIDES >> "$fullconf" - fi - ;; - esac - done - - for config in $flavourconfigs; do - if [ -f $archconfdir/$config ]; then - fullconf="$tmpdir/$arch-$config-full" - cat "$fullconf" > build/.config - # Call oldconfig or menuconfig - 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 $conc_level $env menuconfig - break ;; - n* | N* ) - # 'syncconfig' prevents - # errors for '-' options set - # in common config fragments - make O=`pwd`/build $conc_level $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 $conc_level $env "$mode" - else - make O=`pwd`/build $conc_level $env "$mode" - fi ;; - esac - fi - cat build/.config > $archconfdir/$config - [ "$modify_config" ] && cat build/.config >"$tmpdir/CONFIGS/$arch-$config" - if [ "$keep" = "1" ]; then - cat build/.config > CONFIGS/$arch-$config - fi - else - echo "!! Config not found $archconfdir/$config..." - fi - done - - echo "Running splitconfig.pl for $arch" - echo - - # Can we make this more robust by avoiding $tmpdir completely? - # This approach was used for now because I didn't want to change - # splitconfig.pl - (cd $archconfdir; $bindir/splitconfig.pl config.flavour.*; mv config.common \ - config.common.$arch; cp config.common.$arch $tmpdir) -done - -rm -f $common_conf - -# Now run splitconfig.pl on all the config.common.<arch> copied to -# $tmpdir -(cd $tmpdir; $bindir/splitconfig.pl *) -( - cd $confdir; - rm -f *-full - grep -v 'is UNMERGABLE' <$tmpdir/config.common >$common_conf - for arch in $archs; do - grep -v 'is UNMERGABLE' <$tmpdir/config.common.$arch \ - >$arch/config.common.$arch - done -) - -echo "" -echo "Running config-check for all configurations ..." -echo "" -fail=0 -for arch in $archs; do - archconfdir=$confdir/$arch - flavourconfigs=$(cd $archconfdir && ls config.flavour.*) - for config in $flavourconfigs; do - flavour="${config##*.}" - if [ -f $archconfdir/$config ]; then - fullconf="$tmpdir/CONFIGS/$arch-$config" - [ ! -f "$fullconf" ] && continue - "$bindir/../checks/config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" "$do_enforce_all" || let "fail=$fail+1" - fi - done -done - -rc=0 -if [ "$fail" != 0 ]; then - rc=1 - echo "" - echo "*** ERROR: $fail config-check failures detected" - echo "" -fi - -rm -rf build - -if [ "$warning_partial" ]; then - rc=1 - echo "" - echo "WARNING: configuration operation applied only to a subset of architectures (skipped$warning_partial)" 1>&2 - echo "" -fi - -exit "${rc}"
All kernels and their derivatives have been migrated to the new annotations scheme by now so clean up the tree and drop the support of the old config handling. Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com> --- debian/rules.d/1-maintainer.mk | 22 --- debian/rules.d/4-checks.mk | 10 +- debian/scripts/checks/config-check | 163 ------------------ debian/scripts/misc/migrate-annotations | 35 ---- debian/scripts/misc/old-kernelconfig | 218 ------------------------ 5 files changed, 2 insertions(+), 446 deletions(-) delete mode 100755 debian/scripts/checks/config-check delete mode 100755 debian/scripts/misc/migrate-annotations delete mode 100644 debian/scripts/misc/old-kernelconfig