|
Michal Marek |
3c2527 |
#!/bin/bash
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
#############################################################################
|
|
Michal Marek |
3c2527 |
# Copyright (c) 2003-2009 Novell, Inc.
|
|
Michal Marek |
3c2527 |
# All Rights Reserved.
|
|
Michal Marek |
3c2527 |
#
|
|
Michal Marek |
3c2527 |
# This program is free software; you can redistribute it and/or
|
|
Michal Marek |
3c2527 |
# modify it under the terms of version 2 of the GNU General Public License as
|
|
Michal Marek |
3c2527 |
# published by the Free Software Foundation.
|
|
Michal Marek |
3c2527 |
#
|
|
Michal Marek |
3c2527 |
# This program is distributed in the hope that it will be useful,
|
|
Michal Marek |
3c2527 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Michal Marek |
3c2527 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Michal Marek |
3c2527 |
# GNU General Public License for more details.
|
|
Michal Marek |
3c2527 |
#
|
|
Michal Marek |
3c2527 |
# You should have received a copy of the GNU General Public License
|
|
Michal Marek |
3c2527 |
# along with this program; if not, contact Novell, Inc.
|
|
Michal Marek |
3c2527 |
#
|
|
Michal Marek |
3c2527 |
# To contact Novell about this file by physical or electronic mail,
|
|
Michal Marek |
3c2527 |
# you may find current contact information at www.novell.com
|
|
Michal Marek |
3c2527 |
#############################################################################
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
#########################################################
|
|
Michal Marek |
3c2527 |
# dirty scroll region tricks ...
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
88963d |
use_region=false
|
|
Michal Kubecek |
0d0454 |
if test -f scripts/kconfig/Makefile && \
|
|
Michal Kubecek |
0d0454 |
grep -q syncconfig scripts/kconfig/Makefile; then
|
|
Michal Kubecek |
0d0454 |
syncconfig="syncconfig"
|
|
Michal Kubecek |
0d0454 |
else
|
|
Michal Kubecek |
0d0454 |
syncconfig="silentoldconfig"
|
|
Michal Kubecek |
0d0454 |
fi
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
function _region_init_ () {
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b[H\033[J' # clear screen
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b[4;0r' # setup scroll region
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b[4;0H' # move cursor
|
|
Michal Marek |
3c2527 |
}
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
function _region_fini_ () {
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b7' # save cursor
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b[0;0r' # del scroll region
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b8' # restore cursor
|
|
Michal Marek |
3c2527 |
}
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
function _region_msg_ () {
|
|
Michal Marek |
3c2527 |
local msg="$*"
|
|
Michal Marek |
1caa97 |
if $silent; then
|
|
Michal Marek |
1caa97 |
return
|
|
Michal Marek |
1caa97 |
fi
|
|
Michal Marek |
88963d |
if $use_region; then
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b7' # save cursor
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b[0;0H' # move cursor
|
|
Michal Marek |
3c2527 |
echo -e "##\x1b[K" # message
|
|
Michal Marek |
3c2527 |
echo -e "## $msg\x1b[K" # message
|
|
Michal Marek |
3c2527 |
echo -e "##\x1b[K" # message
|
|
Michal Marek |
3c2527 |
echo -ne '\x1b8' # restore cursor
|
|
Michal Marek |
3c2527 |
else
|
|
Michal Marek |
3c2527 |
echo -e "##"
|
|
Michal Marek |
3c2527 |
echo -e "## $msg"
|
|
Michal Marek |
3c2527 |
echo -e "##"
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
3c2527 |
}
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
1caa97 |
info()
|
|
Michal Marek |
1caa97 |
{
|
|
Michal Marek |
1caa97 |
if $silent; then
|
|
Michal Marek |
1caa97 |
return
|
|
Michal Marek |
1caa97 |
fi
|
|
Michal Marek |
1caa97 |
echo "$@"
|
|
Michal Marek |
1caa97 |
}
|
|
Michal Marek |
1caa97 |
|
|
Michal Marek |
3c2527 |
set_var()
|
|
Michal Marek |
3c2527 |
{
|
|
Jan Kara |
565fa2 |
local name=$1 val=$2 config config_files
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
name="${name%%=*}"
|
|
Michal Marek |
3c2527 |
case "$name" in
|
|
Michal Marek |
3c2527 |
CONFIG_*) ;;
|
|
Michal Marek |
3c2527 |
*) name="CONFIG_$name" ;;
|
|
Michal Marek |
3c2527 |
esac
|
|
Jeff Mahoney |
afd169 |
config_files=$(${scripts}/guards $CONFIG_SYMBOLS < ${prefix}config.conf)
|
|
Jan Kara |
565fa2 |
if [ -n "$set_flavor" ] ; then
|
|
Michal Marek |
1caa97 |
info "appending $name=$val to all -$set_flavor config files listed in config.conf"
|
|
Jan Kara |
565fa2 |
config_files=$(printf "%s\n" $config_files | grep "/$set_flavor\$")
|
|
Jan Kara |
565fa2 |
else
|
|
Michal Marek |
1caa97 |
info "appending $name=$val to all config files listed in config.conf"
|
|
Jan Kara |
565fa2 |
fi
|
|
Jan Kara |
565fa2 |
for config in $config_files; do
|
|
Michal Marek |
3c2527 |
if test -L "${prefix}config/$config"; then
|
|
Michal Marek |
3c2527 |
continue
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
838fb1 |
# do not change trimmed configs unless requested
|
|
Michal Marek |
838fb1 |
if test -z "$set_flavor" && ! \
|
|
Michal Marek |
5d1b33 |
grep -q '^CONFIG_MMU=' "${prefix}config/$config"; then
|
|
Michal Marek |
5d1b33 |
continue
|
|
Michal Marek |
5d1b33 |
fi
|
|
Michal Marek |
3c2527 |
sed -i "/\\<$name[ =]/d" "${prefix}config/$config"
|
|
Michal Marek |
3c2527 |
case "$val" in
|
|
Michal Marek |
3c2527 |
n) echo "# $name is not set" ;;
|
|
Michal Kubecek |
9c449c |
*) echo "$name=$val" ;;
|
|
Michal Marek |
3c2527 |
esac >> ${prefix}config/$config
|
|
Michal Marek |
3c2527 |
done
|
|
Michal Marek |
3c2527 |
}
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
function _cleanup_() {
|
|
Michal Marek |
3c2527 |
test -d "$TMPDIR" && rm -rf $TMPDIR
|
|
Michal Marek |
88963d |
if $use_region; then
|
|
Michal Marek |
88963d |
_region_fini_
|
|
Michal Marek |
88963d |
fi
|
|
Michal Marek |
3c2527 |
}
|
|
Michal Marek |
3c2527 |
TMPDIR=
|
|
Michal Marek |
3c2527 |
trap _cleanup_ EXIT
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
#########################################################
|
|
Michal Marek |
3c2527 |
# main
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
cpu_arch=
|
|
Michal Marek |
e6deb4 |
mode=oldconfig
|
|
Michal Marek |
e6deb4 |
option=
|
|
Michal Marek |
e6deb4 |
value=
|
|
Michal Marek |
1caa97 |
silent=false
|
|
Michal Marek |
ff0e55 |
check=false
|
|
Matthias Brugger |
06b809 |
current=false
|
|
Michal Marek |
3c2527 |
until [ "$#" = "0" ] ; do
|
|
Michal Marek |
e6deb4 |
case "$1" in
|
|
|
6ad211 |
y|-y|--yes|o|-o|--olddefconfig)
|
|
Michal Marek |
e6deb4 |
mode=yes
|
|
Michal Marek |
e6deb4 |
shift
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
01a0c7 |
--mod)
|
|
Michal Marek |
01a0c7 |
mode=allmodconfig
|
|
Michal Marek |
01a0c7 |
shift
|
|
Michal Marek |
01a0c7 |
;;
|
|
Michal Marek |
e6deb4 |
a|-a|--arch)
|
|
Michal Marek |
e6deb4 |
cpu_arch=$2
|
|
Michal Marek |
e6deb4 |
shift 2
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
m|-m|--menuconfig)
|
|
Michal Marek |
e6deb4 |
mode=menuconfig
|
|
Michal Marek |
e6deb4 |
shift
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
-nco-y|--new-config-option-yes)
|
|
Michal Marek |
e6deb4 |
mode=single
|
|
Michal Marek |
e6deb4 |
option=$2
|
|
Michal Marek |
e6deb4 |
value=y
|
|
Michal Marek |
e6deb4 |
shift 2
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
-nco-m|--new-config-option-mod)
|
|
Michal Marek |
e6deb4 |
mode=single
|
|
Michal Marek |
e6deb4 |
option=$2
|
|
Michal Marek |
e6deb4 |
value=m
|
|
Michal Marek |
e6deb4 |
shift 2
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
-nco-n|--new-config-option-no|-dco|--disable-config-option)
|
|
Michal Marek |
e6deb4 |
mode=single
|
|
Michal Marek |
e6deb4 |
option=$2
|
|
Michal Marek |
e6deb4 |
value=n
|
|
Michal Marek |
e6deb4 |
shift 2
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Kubecek |
9c449c |
-nco|--new-config-option)
|
|
Michal Kubecek |
9c449c |
mode=single
|
|
Michal Kubecek |
9c449c |
option="${2%%=*}"
|
|
Michal Kubecek |
9c449c |
value="${2#*=}"
|
|
Michal Kubecek |
9c449c |
shift 2
|
|
Michal Kubecek |
9c449c |
;;
|
|
Michal Marek |
e6deb4 |
--flavor)
|
|
Michal Marek |
e6deb4 |
set_flavor="$2"
|
|
Michal Marek |
e6deb4 |
shift 2
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
--vanilla)
|
|
Michal Marek |
e6deb4 |
set_flavor="vanilla"
|
|
Michal Marek |
e6deb4 |
shift
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
ff0e55 |
--check)
|
|
Michal Marek |
ff0e55 |
check=true
|
|
Michal Marek |
ff0e55 |
shift
|
|
Michal Marek |
ff0e55 |
;;
|
|
Matthias Brugger |
06b809 |
-c|--current)
|
|
Matthias Brugger |
06b809 |
current=true
|
|
Matthias Brugger |
06b809 |
shift
|
|
Matthias Brugger |
06b809 |
;;
|
|
Michal Marek |
1caa97 |
-s|--silent)
|
|
Michal Marek |
1caa97 |
silent=true
|
|
Michal Marek |
1caa97 |
shift
|
|
Michal Marek |
1caa97 |
;;
|
|
Michal Marek |
e6deb4 |
-h|--help)
|
|
Michal Marek |
e6deb4 |
cat <
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
${0##*/} does either:
|
|
Michal Marek |
3c2527 |
* run make oldconfig to clean up the .config files
|
|
Michal Marek |
88f96b |
* modify kernel .config files in the GIT tree
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
run it with no options in your SCRATCH_AREA $SCRATCH_AREA, like
|
|
Michal Marek |
3c2527 |
patches/scripts/${0##*/}
|
|
Michal Marek |
3c2527 |
possible options in this mode:
|
|
Michal Marek |
3c2527 |
called with no option will run just make oldconfig interactive
|
|
|
6ad211 |
y|-y|--yes to run 'yes "" | make oldconfig' - equivalent to
|
|
|
6ad211 |
'make olddefconfig' on newer kernels
|
|
|
6ad211 |
o|-o|--olddefconfig same as '--yes'
|
|
Michal Marek |
01a0c7 |
--mod to set all new options to 'm' (booleans to 'y')
|
|
Michal Marek |
3c2527 |
a|-a|--arch to run make oldconfig only for the given arch
|
|
Michal Marek |
3c2527 |
m|-m|--menuconfig to run make menuconfig instead of oldconfig
|
|
Jan Kara |
565fa2 |
--flavor <flavor> to run only for configs of specified flavor
|
|
Jan Kara |
565fa2 |
--vanilla an alias for "--flavor vanilla"
|
|
Michal Marek |
ff0e55 |
--check just check if configs are up to date
|
|
Matthias Brugger |
06b809 |
-c|--current uset tmp/current for checks
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
run it with one of the following options to modify all .config files listed
|
|
Michal Marek |
3c2527 |
in config.conf:
|
|
Michal Marek |
3c2527 |
-nco-y|--new-config-option-yes compile something into the kernel
|
|
Michal Marek |
3c2527 |
-nco-m|--new-config-option-mod compile something as a module
|
|
Michal Marek |
3c2527 |
-nco-n|--new-config-option-no disable a kernel .config option
|
|
Michal Marek |
3c2527 |
-dco|--disable-config-option alias for -nco-n
|
|
Michal Marek |
3c2527 |
each of them takes a second argument, which can be either
|
|
Michal Marek |
3c2527 |
FOO
|
|
Michal Marek |
3c2527 |
FOO=X
|
|
Michal Marek |
3c2527 |
CONFIG_FOO
|
|
Michal Marek |
3c2527 |
CONFIG_FOO=X
|
|
Michal Kubecek |
9c449c |
run with the following to modify option taking a value:
|
|
Michal Kubecek |
9c449c |
-nco|--new-config-option OPTION=VALUE
|
|
Michal Kubecek |
9c449c |
as above, OPTION can be used with or without the CONFIG_ prefix; for string
|
|
Michal Kubecek |
9c449c |
options requiring double quotes, these must be used in argument (and shell
|
|
Michal Kubecek |
9c449c |
escaped)
|
|
Michal Marek |
1caa97 |
|
|
Michal Marek |
1caa97 |
Run with -s|--silent in both modes to suppress most output
|
|
Michal Marek |
3c2527 |
EOF
|
|
Michal Marek |
e6deb4 |
exit 1
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
*)
|
|
Michal Marek |
e6deb4 |
echo ugh
|
|
Michal Marek |
e6deb4 |
exit 1
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
esac
|
|
Michal Marek |
3c2527 |
done
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
if [ -f patches/scripts/arch-symbols ] ; then
|
|
Michal Marek |
3c2527 |
prefix=patches/
|
|
Michal Marek |
3c2527 |
elif [ -f scripts/arch-symbols ] ; then
|
|
Michal Marek |
3c2527 |
prefix=
|
|
Michal Marek |
3c2527 |
else
|
|
Michal Marek |
3c2527 |
echo "no arch-symbols found"
|
|
Michal Marek |
3c2527 |
exit 1
|
|
Michal Marek |
3c2527 |
fi
|
|
Matthias Brugger |
647115 |
|
|
Matthias Brugger |
647115 |
if $current; then
|
|
Matthias Brugger |
647115 |
prefix=../../$prefix
|
|
Matthias Brugger |
647115 |
cd tmp/current
|
|
Matthias Brugger |
647115 |
fi
|
|
Matthias Brugger |
647115 |
|
|
Jeff Mahoney |
afd169 |
scripts="${prefix}scripts"
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
e4ad2b |
if test -e "${prefix}rpm/config.sh"; then
|
|
Michal Marek |
e4ad2b |
source "$_"
|
|
Michal Marek |
e4ad2b |
fi
|
|
Michal Marek |
03d110 |
if test -z "$set_flavor" && test "$VANILLA_ONLY" = 1 -o -e .is_vanilla; then
|
|
Michal Marek |
e4ad2b |
set_flavor=vanilla
|
|
Michal Marek |
e4ad2b |
fi
|
|
Michal Marek |
e4ad2b |
|
|
Michal Marek |
3c2527 |
if [ -z "$cpu_arch" ]; then
|
|
Michal Marek |
1c2401 |
CONFIG_SYMBOLS=$(
|
|
Jeff Mahoney |
afd169 |
for arch in $(${scripts}/arch-symbols --list); do
|
|
Jeff Mahoney |
afd169 |
${scripts}/arch-symbols $arch
|
|
Michal Marek |
1c2401 |
done
|
|
Michal Marek |
1c2401 |
)
|
|
Michal Marek |
3c2527 |
else
|
|
Jeff Mahoney |
afd169 |
CONFIG_SYMBOLS=$(${scripts}/arch-symbols $cpu_arch)
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
e6deb4 |
case "$mode" in
|
|
Michal Marek |
e6deb4 |
single)
|
|
Michal Marek |
e6deb4 |
set_var "$option" "$value"
|
|
Michal Marek |
3c2527 |
exit 0
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
menuconfig)
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
e6deb4 |
*)
|
|
Michal Marek |
d558fc |
if test "$set_flavor" = "vanilla" -a -z "$VANILLA_ONLY" -a \
|
|
Michal Marek |
d558fc |
! -e .is_vanilla; then
|
|
Michal Marek |
d558fc |
echo "run_oldconfig.sh --vanilla only works in a tree created with" >&2
|
|
Michal Marek |
d558fc |
echo -n "sequence-patch.sh --vanilla. Do you really want to continue? [yN] " >&2
|
|
Michal Marek |
d558fc |
read
|
|
Michal Marek |
d558fc |
case "$REPLY" in
|
|
Michal Marek |
d558fc |
"" | [Nn]*)
|
|
Michal Marek |
d558fc |
exit 1
|
|
Michal Marek |
d558fc |
esac
|
|
Michal Marek |
d558fc |
fi
|
|
Michal Marek |
d558fc |
|
|
Michal Marek |
3c2527 |
case "$TERM" in
|
|
Michal Marek |
3c2527 |
linux* | xterm* | screen*)
|
|
Michal Marek |
1caa97 |
if tty -s && ! $silent; then
|
|
Michal Marek |
3aad40 |
use_region=true
|
|
Michal Marek |
3aad40 |
_region_init_
|
|
Michal Marek |
3aad40 |
fi
|
|
Michal Marek |
3c2527 |
esac
|
|
Michal Marek |
e6deb4 |
esac
|
|
Michal Marek |
3c2527 |
|
|
Jeff Mahoney |
afd169 |
config_files=$(${scripts}/guards $CONFIG_SYMBOLS < ${prefix}config.conf)
|
|
Michal Marek |
3c2527 |
|
|
Jan Kara |
565fa2 |
if [ -z "$set_flavor" ] ; then
|
|
Michal Marek |
3c2527 |
config_files=$(printf "%s\n" $config_files | grep -v vanilla)
|
|
Michal Marek |
3c2527 |
else
|
|
Jan Kara |
565fa2 |
config_files=$(printf "%s\n" $config_files | grep "/$set_flavor\$")
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
TMPDIR=$(mktemp -td ${0##*/}.XXXXXX)
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
EXTRA_SYMBOLS=
|
|
Michal Marek |
3c2527 |
if [ -s extra-symbols ]; then
|
|
Michal Marek |
3c2527 |
EXTRA_SYMBOLS="$(cat extra-symbols)"
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
3c2527 |
|
|
Jeff Mahoney |
afd169 |
${scripts}/guards $EXTRA_SYMBOLS < ${prefix}series.conf \
|
|
Michal Marek |
3c2527 |
> $TMPDIR/applied-patches
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
EXTRA_SYMBOLS="$(echo $EXTRA_SYMBOLS | sed -e 's# *[Rr][Tt] *##g')"
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
aecea1 |
mkdir $TMPDIR/reuse
|
|
Michal Marek |
aecea1 |
|
|
Michal Marek |
aecea1 |
ask_reuse_config()
|
|
Michal Marek |
aecea1 |
{
|
|
Michal Marek |
aecea1 |
local old=$1 new=$2
|
|
Michal Marek |
aecea1 |
|
|
Michal Marek |
aecea1 |
# if the user either asked to never reuse the config or if this config
|
|
Michal Marek |
aecea1 |
# already reused something, do nothing
|
|
Michal Marek |
aecea1 |
for f in $TMPDIR/reuse/{never,all,$cpu_arch-all,all-$flavor}; do
|
|
Michal Marek |
aecea1 |
if test -e "$f"; then
|
|
Michal Marek |
aecea1 |
return
|
|
Michal Marek |
aecea1 |
fi
|
|
Michal Marek |
aecea1 |
done
|
|
Michal Marek |
aecea1 |
diff $old $new | awk >$TMPDIR/reuse/diff '
|
|
Michal Marek |
aecea1 |
/< .*CONFIG_/ { x[substr($0, 3)]--; }
|
|
Michal Marek |
aecea1 |
/> .*CONFIG_/ { x[substr($0, 3)]++; }
|
|
Michal Marek |
aecea1 |
END {
|
|
Michal Marek |
aecea1 |
for (l in x)
|
|
Michal Marek |
cdf4a4 |
if (x[l] > 0 && l !~ /^CONFIG_LOCALVERSION\>/)
|
|
Michal Marek |
aecea1 |
print l;
|
|
Michal Marek |
aecea1 |
}'
|
|
Michal Marek |
aecea1 |
|
|
Michal Marek |
aecea1 |
if test ! -s $TMPDIR/reuse/diff; then
|
|
Michal Marek |
aecea1 |
return
|
|
Michal Marek |
aecea1 |
fi
|
|
Michal Marek |
aecea1 |
while :; do
|
|
Michal Marek |
aecea1 |
echo
|
|
Michal Marek |
aecea1 |
cat $TMPDIR/reuse/diff | sed 's/^/ /'
|
|
Michal Marek |
aecea1 |
echo
|
|
Michal Marek |
aecea1 |
echo "Use these settings for other configurations?"
|
|
Michal Marek |
aecea1 |
read -p "[Y]es/for [A]rch $cpu_arch/for [F]lavor $flavor/[N]o/[E]dit/ne[V]er "
|
|
Michal Marek |
aecea1 |
case "$REPLY" in
|
|
Michal Marek |
aecea1 |
[Yy] | "")
|
|
Michal Marek |
aecea1 |
mv $TMPDIR/reuse/diff $TMPDIR/reuse/all
|
|
Michal Marek |
aecea1 |
break ;;
|
|
Michal Marek |
aecea1 |
[Aa])
|
|
Michal Marek |
aecea1 |
mv $TMPDIR/reuse/diff $TMPDIR/reuse/$cpu_arch-all
|
|
Michal Marek |
aecea1 |
break ;;
|
|
Michal Marek |
aecea1 |
[Ff])
|
|
Michal Marek |
aecea1 |
mv $TMPDIR/reuse/diff $TMPDIR/reuse/all-$flavor
|
|
Michal Marek |
aecea1 |
break ;;
|
|
Michal Marek |
aecea1 |
[Ee])
|
|
Michal Marek |
aecea1 |
${VISUAL:-${EDITOR:-vi}} $TMPDIR/reuse/diff
|
|
Michal Marek |
aecea1 |
;;
|
|
Michal Marek |
aecea1 |
[Nn])
|
|
Michal Marek |
aecea1 |
rm $TMPDIR/reuse/diff
|
|
Michal Marek |
aecea1 |
break ;;
|
|
Michal Marek |
aecea1 |
[Vv])
|
|
Michal Marek |
aecea1 |
rm $TMPDIR/reuse/diff
|
|
Michal Marek |
aecea1 |
touch $TMPDIR/reuse/never
|
|
Michal Marek |
aecea1 |
break ;;
|
|
Michal Marek |
aecea1 |
esac
|
|
Michal Marek |
aecea1 |
done
|
|
Michal Marek |
aecea1 |
}
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
ff0e55 |
filter_config()
|
|
Michal Marek |
ff0e55 |
{
|
|
Michal Suchanek |
c585f2 |
sed -e '/CONFIG_GCC_VERSION/ d' -e '/CONFIG_LD_VERSION/ d' -e '/CONFIG_CC_VERSION_TEXT/ d' -e '/CONFIG_PAHOLE_VERSION/ d' -e '/^# .* is not set$/p' -e '/^$\|^#/d' "$@" | sort
|
|
Michal Marek |
ff0e55 |
}
|
|
Michal Marek |
ff0e55 |
|
|
Michal Marek |
608c23 |
# Keep these in the -vanilla fragment even if -default has the same values.
|
|
Michal Marek |
608c23 |
# This allows the spec file to read them from the fragment without calling
|
|
Michal Marek |
608c23 |
# kconfig
|
|
Michal Marek |
608c23 |
precious_options=($(sed -n 's/^%define config_vars //p' "${prefix}rpm/kernel-binary.spec.in"))
|
|
Michal Marek |
ff0e55 |
err=0
|
|
Michal Marek |
3c2527 |
for config in $config_files; do
|
|
Michal Marek |
3c2527 |
cpu_arch=${config%/*}
|
|
Michal Marek |
3c2527 |
flavor=${config#*/}
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
if test -L "${prefix}config/$config"; then
|
|
Michal Marek |
3c2527 |
continue
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
3c2527 |
set -- kernel-$flavor $flavor $(case $flavor in (rt|rt_*) echo RT ;; esac)
|
|
Jeff Mahoney |
afd169 |
${scripts}/guards $* $EXTRA_SYMBOLS \
|
|
Michal Marek |
3c2527 |
< ${prefix}series.conf > $TMPDIR/patches
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
3c2527 |
if ! diff -q $TMPDIR/applied-patches $TMPDIR/patches > /dev/null; then
|
|
Michal Marek |
3c2527 |
echo "Not all patches for $config are applied; skipping"
|
|
Michal Marek |
3c2527 |
diff -u $TMPDIR/applied-patches $TMPDIR/patches
|
|
Michal Marek |
3c2527 |
continue
|
|
Michal Marek |
3c2527 |
fi
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
5d6f14 |
case $config in
|
|
Michal Marek |
a4c200 |
ppc*/*)
|
|
Jeff Mahoney |
b60c89 |
MAKE_ARGS="ARCH=powerpc"
|
|
Michal Marek |
5d6f14 |
;;
|
|
Michal Marek |
5d6f14 |
s390x/*)
|
|
Michal Marek |
5d6f14 |
MAKE_ARGS="ARCH=s390"
|
|
Michal Marek |
5d6f14 |
;;
|
|
Alexander Graf |
0e5148 |
arm64/*)
|
|
Alexander Graf |
0e5148 |
MAKE_ARGS="ARCH=arm64"
|
|
Alexander Graf |
0e5148 |
;;
|
|
Alexander Graf |
0e5148 |
armv*/*)
|
|
Alexander Graf |
7c25e1 |
MAKE_ARGS="ARCH=arm"
|
|
Alexander Graf |
7c25e1 |
;;
|
|
Andreas Schwab |
6c1fcb |
riscv*/*)
|
|
Andreas Schwab |
6c1fcb |
MAKE_ARGS="ARCH=riscv"
|
|
Andreas Schwab |
6c1fcb |
;;
|
|
Michal Marek |
5d6f14 |
*/um)
|
|
Michal Marek |
5d6f14 |
MAKE_ARGS="ARCH=um SUBARCH=$cpu_arch"
|
|
Michal Marek |
5d6f14 |
;;
|
|
Michal Marek |
5d6f14 |
*)
|
|
Michal Marek |
5d6f14 |
MAKE_ARGS="ARCH=$cpu_arch"
|
|
Michal Marek |
5d6f14 |
;;
|
|
Michal Marek |
3c2527 |
esac
|
|
Michal Suchanek |
2b6883 |
if [ -d scripts/dummy-tools ] ; then
|
|
Michal Suchanek |
2b6883 |
MAKE_ARGS="$MAKE_ARGS CROSS_COMPILE=scripts/dummy-tools/"
|
|
Jiri Slaby |
a9e6b6 |
if [ -e scripts/dummy-tools/pahole ]; then
|
|
Jiri Slaby |
a9e6b6 |
MAKE_ARGS="$MAKE_ARGS PAHOLE=scripts/dummy-tools/pahole"
|
|
Jiri Slaby |
a9e6b6 |
fi
|
|
Michal Suchanek |
d3f1ae |
chmod 755 scripts/dummy-tools/*
|
|
Michal Suchanek |
17cad6 |
chmod 755 scripts/*
|
|
Michal Suchanek |
2b6883 |
fi
|
|
Jiri Slaby |
8149db |
MAKE_ARGS="$MAKE_ARGS RUSTC=/nothing/nowhere"
|
|
Michal Marek |
1caa97 |
if $silent; then
|
|
Michal Suchanek |
2b6883 |
MAKE_ARGS="$MAKE_ARGS -s"
|
|
Michal Marek |
1caa97 |
fi
|
|
Michal Marek |
3c2527 |
config="${prefix}config/$config"
|
|
Jeff Mahoney |
32677c |
config_orig="config-orig"
|
|
Jeff Mahoney |
32677c |
|
|
Michal Marek |
838fb1 |
config_base=
|
|
Michal Marek |
838fb1 |
if ! grep -q CONFIG_MMU= "$config"; then
|
|
Jeff Mahoney |
32677c |
if [ "$cpu_arch" = "i386" ]; then
|
|
Michal Marek |
838fb1 |
config_base="$(dirname "$config")/pae"
|
|
Jeff Mahoney |
32677c |
else
|
|
Michal Marek |
838fb1 |
config_base="$(dirname "$config")/default"
|
|
Jeff Mahoney |
32677c |
fi
|
|
Michal Suchanek |
e1353b |
if ! [ -f "$config_base" ] && [ -n "$VARIANT" ] ; then
|
|
Michal Suchanek |
e1353b |
config_base="$(dirname "$config")/${VARIANT#-}"
|
|
Michal Suchanek |
e1353b |
fi
|
|
Michal Marek |
838fb1 |
${scripts}/config-merge "$config_base" "$config" >$config_orig
|
|
Jeff Mahoney |
32677c |
else
|
|
Jeff Mahoney |
32677c |
cp "$config" $config_orig
|
|
Jeff Mahoney |
32677c |
fi
|
|
Jeff Mahoney |
32677c |
|
|
Jeff Mahoney |
32677c |
cp $config_orig .config
|
|
Michal Marek |
3c2527 |
|
|
Michal Marek |
98d115 |
for cfg in "CONFIG_LOCALVERSION=\"-$flavor\"" "CONFIG_SUSE_KERNEL=y" \
|
|
Michal Marek |
98d115 |
"CONFIG_DEBUG_INFO=y"; do
|
|
Michal Marek |
2acabd |
if ! grep -q "^$cfg\$" .config; then
|
|
Michal Marek |
2acabd |
echo "$cfg" >>.config
|
|
Michal Marek |
2acabd |
fi
|
|
Michal Marek |
2acabd |
done
|
|
Michal Marek |
aecea1 |
for f in $TMPDIR/reuse/{all,$cpu_arch-all,all-$flavor}; do
|
|
Michal Marek |
aecea1 |
if test -e "$f"; then
|
|
Michal Marek |
1caa97 |
info "Reusing choice for ${f##*/}"
|
|
Michal Marek |
aecea1 |
cat "$f" >>.config
|
|
Michal Marek |
aecea1 |
fi
|
|
Michal Marek |
aecea1 |
done
|
|
Michal Marek |
e6deb4 |
export KCONFIG_NOTIMESTAMP=1
|
|
Michal Marek |
e6deb4 |
case "$mode" in
|
|
Michal Marek |
e6deb4 |
menuconfig)
|
|
Michal Marek |
e6deb4 |
make $MAKE_ARGS menuconfig
|
|
Michal Marek |
e6deb4 |
;;
|
|
Michal Marek |
3c2527 |
yes)
|
|
Michal Marek |
e6deb4 |
_region_msg_ "working on $config"
|
|
Michal Marek |
e6deb4 |
yes '' | make $MAKE_ARGS oldconfig
|
|
Michal Marek |
aecea1 |
touch $TMPDIR/reuse/never
|
|
Michal Marek |
3c2527 |
;;
|
|
Michal Marek |
01a0c7 |
allmodconfig)
|
|
Michal Marek |
01a0c7 |
_region_msg_ "working on $config"
|
|
Michal Marek |
01a0c7 |
cp .config config-old
|
|
Michal Marek |
01a0c7 |
KCONFIG_ALLCONFIG=config-old make $MAKE_ARGS allmodconfig
|
|
Michal Marek |
01a0c7 |
rm config-old
|
|
Michal Marek |
aecea1 |
touch $TMPDIR/reuse/never
|
|
Michal Marek |
01a0c7 |
;;
|
|
Michal Marek |
3c2527 |
*)
|
|
Michal Marek |
3c2527 |
_region_msg_ "working on $config"
|
|
Michal Marek |
ff0e55 |
if $check; then
|
|
Michal Kubecek |
0d0454 |
if ! make $MAKE_ARGS $syncconfig
|
|
Michal Marek |
ff0e55 |
echo "${config#$prefix} is out of date"
|
|
Michal Marek |
ff0e55 |
err=1
|
|
Jeff Mahoney |
32677c |
rm $config_orig
|
|
Michal Marek |
ff0e55 |
continue
|
|
Michal Marek |
ff0e55 |
fi
|
|
Michal Marek |
ff0e55 |
else
|
|
Michal Marek |
ff0e55 |
make $MAKE_ARGS oldconfig
|
|
Michal Marek |
ff0e55 |
fi
|
|
Michal Marek |
3c2527 |
esac
|
|
Michal Marek |
ff0e55 |
if ! $check; then
|
|
Jeff Mahoney |
32677c |
ask_reuse_config $config_orig .config
|
|
Michal Marek |
838fb1 |
if [ -n "$config_base" ]; then
|
|
Jeff Mahoney |
32677c |
# We need to diff and re-merge to compare to the original,
|
|
Jeff Mahoney |
32677c |
# otherwise we'll see the differences between default
|
|
Jeff Mahoney |
32677c |
# and vanilla in addition to the changes made during this run.
|
|
Michal Marek |
838fb1 |
${scripts}/config-diff "$config_base" .config > config-new.diff
|
|
Michal Marek |
608c23 |
for opt in "${precious_options[@]}"; do
|
|
Michal Marek |
608c23 |
if ! grep -q -w "$opt" config-new.diff; then
|
|
Michal Marek |
608c23 |
grep -w "$opt" .config >>config-new.diff
|
|
Michal Marek |
608c23 |
fi
|
|
Michal Marek |
608c23 |
done
|
|
Michal Marek |
838fb1 |
${scripts}/config-merge "$config_base" config-new.diff > config-new
|
|
Jeff Mahoney |
32677c |
if ! $silent; then
|
|
Jeff Mahoney |
32677c |
diff -U0 $config_orig config-new|grep -v ^@@
|
|
Jeff Mahoney |
32677c |
fi
|
|
Jeff Mahoney |
32677c |
mv config-new.diff "$config"
|
|
Jeff Mahoney |
32677c |
rm -f config-new
|
|
Jeff Mahoney |
32677c |
|
|
Jeff Mahoney |
32677c |
else
|
|
Jeff Mahoney |
32677c |
if ! $silent; then
|
|
Jeff Mahoney |
32677c |
diff -U0 $config_orig .config|grep -v ^@@
|
|
Jeff Mahoney |
32677c |
fi
|
|
Jeff Mahoney |
32677c |
cp .config "$config"
|
|
Jeff Mahoney |
32677c |
fi
|
|
Jeff Mahoney |
32677c |
rm -f $config_orig
|
|
Michal Marek |
ff0e55 |
continue
|
|
Michal Marek |
ff0e55 |
fi
|
|
Michal Marek |
ff0e55 |
differences="$(
|
|
Jeff Mahoney |
32677c |
diff -bU0 <(filter_config $config_orig) <(filter_config .config) | \
|
|
Michal Marek |
ff0e55 |
grep '^[-+][^-+]'
|
|
Michal Marek |
ff0e55 |
)"
|
|
Michal Marek |
ff0e55 |
if echo "$differences" | grep -q '^+' ; then
|
|
Michal Marek |
ff0e55 |
echo "Changes in ${config#$prefix} after running make oldconfig:"
|
|
Michal Marek |
ff0e55 |
echo "$differences"
|
|
Michal Marek |
ff0e55 |
err=1
|
|
Michal Marek |
1caa97 |
fi
|
|
Jeff Mahoney |
32677c |
rm $config_orig
|
|
Michal Marek |
3c2527 |
done
|
|
Michal Marek |
ff0e55 |
|
|
Michal Marek |
ff0e55 |
exit $err
|