All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rick Hohensee <humbubba@smarty.smart.net>
To: linux-kernel@vger.kernel.org
Subject: one step up from   vi .config
Date: Sun, 15 Apr 2001 00:28:37 -0400 (EDT)	[thread overview]
Message-ID: <200104150428.AAA31247@smarty.smart.net> (raw)

This is an example of a minimalist kernel config script using what I call
"subtractive synthesis", rather than the additive synthesis method of
make config and friends. This generates white-noise and then you filter
it, rather than painstakingly constructing your timbre one sinewave at a
time. Kinda. This example is for MCA-related pink noise, so to speak.
I think this may be related in a degenerate-case way to declarative
programming.

This leaves a lot to the user. It is based on the idea that hopefully
people with hardware with configuration interdependancies will be somewhat
cognizant of them.

I think this is close to a minimum for something that can generate any
desired config. I may have broken this somewhat tweaking it a bit to post,
but It's pretty handy when it works.

This is hereby public-domain-ified.

Rick Hohensee
:; cLIeNUX /dev/tty10  16:07:45   /
:;echo $DISTRO
cLIeNUX


.........................................................................

##              cLIeNUX Cheap Quick Dirty kernel config
##              MAD (Microchannel Affection Disorder) example

## dependancies         Linux sources and...
## sh, awk, clear, ed, your $VISUAL editor, rm, ls, mv, date
##   The usual /tmp is /.tm in cLIeNUX

# function declaration

swap () {               ## Last field, CONFIG_*, to second, after #
awk -- '
      {
      ORS=""
      print "\n# "  $NF
      for ( i = 1 ; i < NF ; i++ )  print " "$i
      } ' $1
}

# declarations
ARCH=i386
MCA=ONLY
C_INCLUDE_PATH=$C_INCLUDE_PATH:/source/kernel/$1
DATE=`date`

clear
echo -e "\t\t\tcLIeNUX linux/config\n\n\n\n
\ncollating base config data\n\n"

#### if a bla/Config.in file isn't in this list variable you won't see
###               the options that Config.in file contains.
##                Season to taste.
configlist="
arch/i386/config.in
fs/Config.in
drivers/char/Config.in
drivers/block/Config.in
drivers/scsi/Config.in
drivers/net/Config.in
fs/nls/Config.in
net/ipv4/Config.in
net/Config.in
net/sched/Config.in
net/irda/Config.in
net/irda/compressors/Config.in
drivers/net/hamradio/Config.in
drivers/net/irda/Config.in
drivers/block/paride/Config.in
drivers/char/ftape/Config.in
drivers/char/hfmodem/Config.in
drivers/char/joystick/Config.in
drivers/sound/lowlevel/Config.in
drivers/sound/Config.in
drivers/isdn/Config.in
drivers/video/Config.in
drivers/fc4/Config.in
fs/ncpfs/Config.in
net/ax25/Config.in
net/ipx/Config.in
"

##                      EXCLUDED from the above
## drivers/pnp/Config.in            ## put this back if not MCA
## drivers/cdrom/Config.in          ## put this back if not MCA
## drivers/usb/Config.in
## net/irda/irlpt/Config.in
## net/irda/ircomm/Config.in
## net/irda/irlan/Config.in
## net/irda/irlpt/Config.in
## net/irda/ircomm/Config.in
## net/irda/irlan/Config.in
## net/irda/irlpt/Config.in
## drivers/acorn/net/Config.in          Acorn
## drivers/acorn/scsi/Config.in
## drivers/acorn/block/Config.in
## drivers/acorn/char/Config.in
## drivers/sgi/Config.in                SGI
## drivers/sbus/char/Config.in          Mac
## drivers/sbus/audio/Config.in
## net/ipv6/Config.in
## drivers/fc4/Config.in                Fiber channel

cd linux

###MMMMMMMMMMMAAAAAAAAAAAAAIIIIIIIIIIINNNNNNNNNNNNNNN

echo > /.tm/BASE

## generate bulk CONFIG_ list.
#
for CF in $configlist
do
      echo -en  "\n# CONFIG\n# CONFIG " $CF "# CONFIG\n"  >> /.tm/BASE
      cat $CF >> /.tm/BASE
done

## format, then prune. Prune out experimental up front.
#
swap /.tm/BASE |grep "^# CONFIG" | grep -v -i "XPERIMEN" \
      | cut -b 1-74 >  /.tm/BASE2

rm /.tm/BASE

echo -e "\n\n\npruning...\n\n\n"

## convert choice types to "=y" and "=ym", then prune
#
ed <<HEREDOC   /.tm/BASE2
,s/ tristate '/=ym      #/
,s/ bool '/=y     #/
,s/'$//
g/Sun /d
g/Atari/d
g/Mac /d
g/Sparc/d
g/Amiga/d
wq
HEREDOC

## pro-Microchannel extreme prejudice
#
if test "$MCA" = "ONLY"
then
      ed <<HEREDOC   /.tm/BASE2
      g/PCI/d
      g/IDE/d
      g/PNP/d
      g/ISA/d
      g/_APM_/d
      wq
HEREDOC

fi

## header and assemble CONFIG
#
#
echo "##  " `date` >   CONFIG
cat  <<HEREDOC >>  CONFIG
#
# Assuming you are seeing this via the cqdconfig script, what you do
# now is uncomment (remove the leftmost # from) the kernel options you
# want. Nothing is on now. The variables that are activated by you
# in here are then asserted as kernel sourcecode, and the
# kernel will be built accordingly. Variables can be =y or completely
# unset, and module options can also be m. If an option in here is =y you
# just have to uncomment it to assert it. If it's =ym you have to decide
# if you want it as a module or in the base kernel and pick y or m, IF you
# enable modules, and want that option. These options are additive.
# You can for example build a useless x86 kernel with just CONFIG_M386 and
# maybe a memsize option. In a useful kernel there may be some option
# interdependancies. Your only automated check on them with this
# non-rigorous config method is compiling and running the result. Most
# things that aren't non-interdependant single options will probably be
# known to people that have them. If you have problems use  make config  ,
# or read Documentation/Configuration.help.
#
# The cqdconfig script that generated this file is part of your
# configuration options in and of itself. You can
# tweak it to not include any options here that you're not interested in
# if you have a working knowledge of regular expression match patterns.
# see regex. All that really matters is that the end result be valid. You
# are actually modifying the kernel code when you edit this file, to
# stretch a point a bit, but if you don't use modules, and you don't mind
# an enormous list of options, all you have to know about shell scripting
# is that "#" starts a comment.
#
#                Break a leg   :o)
#                                         Rick
HEREDOC

cat /.tm/BASE2 >> CONFIG

## call an editor, then do what "make config" does to assert the config
#

$VISUAL CONFIG

clear
echo "Clobbering .config.old and linux/include/linux/autoconf.h,
        which asserts your configuration choices.

        make dep    is probably your next move.

"

mv .config .config.old
cp  CONFIG .config
cp .config include/linux/autoconf.h

.......................................................................

                 reply	other threads:[~2001-04-15  4:21 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200104150428.AAA31247@smarty.smart.net \
    --to=humbubba@smarty.smart.net \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.