#! /bin/sh
# file://~/bin/editor.sh
#------------------------------------------------------------------------------
# @author:  http://www.Philippe.COVAL.online.fr -- Rev: $Author$
# @licence: GPL http://rzr.online.fr/licence.htm
#------------------------------------------------------------------------------
VERSION=0.0.20061002
LANG=C && export LANG

#init_() {

DATE=$(date +%Y%m%d)
DATEID=$(date +%Y%m%d%s)
DATE8=$(date +%m%d%H%M)
DATE12=$(date +%Y%m%d%H%M)
LOADLINDIR=/mnt/d/l
NAME=${HOSTNAME}
#$DATE$USER$(date +%s)
LOG=${TMPDIR}/tmp/log.txt
#

# export VERSION=2.6.14.2
# export REVISION=-k7-amiloa
# export KVER=${VERSION}${REVISION}


[ -z ${KVER} ] && KVER=`uname -r`
#VMA=2
#VMI=4
#VRE=22
#VXT=""
#VMI=5
#VRE=67
#VDOT=$VMA.$VMI.$VRE
#VSCORE=$VMA_$VMI_$VRE

NUM=0.${DATE12}

#$(date +%Y%m%d%H%M)
SNDCARD=via8233
PREEXEC="fakeroot time " 
#"PREEXEC -n+10"
ARCH=i386
#set -e

### -------------------------------------------------------------------

do_()
{
echo "$*"
$*
}
fpause()
{
echo "press return"
read t
}

infos_() 
{
echo ${NUM}
fpause
echo "--- cat /proc/ioports "
cat /proc/ioports
fpause
echo "--- cat /proc/interrupts "
cat /proc/interrupts
cat /dev/sndstat
fpause
echo "--- cat /proc/dma "
cat /proc/dma
fpause
dmesg 
fpause
pnpdump
#cat /proc/isapnp
#fpause
}

check_()
{
echo "+ check_ $*"
[ ! -r Makefile ] && cd /usr/src/linux
[ ! -r Makefile ] && read t
TMP=$(tempfile)
head -4 Makefile | tr -d ' ' > $TMP | tee
. $TMP
cat $TMP
echo $VERSION
echo $PATCHLEVEL
echo $SUBLEVEL
echo $EXTRAVERSION
VMA=$VERSION
VMI=$PATCHLEVEL
VRE=$SUBLEVEL

KVER=${VMA}.${VMI}.${VRE}${EXTRAVERSION}
#VDOT=${VMA}.${VMI}.${VRE}${EXTRAVERSION}
#VSCORE=${VMA}_${VMI}_${VRE}_${EXTRAVERSION}
NUM=0.${DATE12}
}
#----------------------------------------------------------

make_classic_()
{
echo "+make_classic"
check_ $*
# make clean
${PREEXEC} make menuconfig  #checkconfig
#${PREEXEC} time make dep modules modules_install bzImage bzdisk
${PREEXEC} time make modules bzImage bzdisk modules_install 
}


make_debian_ () 
{
echo "+make_debian_: $*"
check_ $*
rm -rf debian stamp-*
# ${PREEXEC} time make-kpkg  kernel_image --revision=${HOSTNAME}.${NUM} 
mkdir -p $(dirname ${LOG})
${PREEXEC} time make-kpkg  kernel_image --revision=${HOSTNAME}.${NUM} --initrd | tee ${LOG} # should be w 2.6
# 
# make clean ?
echo "$? ... make modules ?"
#cd /usr/src/linux || exit
#$? && 
# ${PREEXEC} fakeroot make-kpkg --revision=${HOSTNAME}.$NUM  clean modules_image # modules_install
${PREEXEC} fakeroot make-kpkg --revision=${HOSTNAME}.$NUM  modules_image # modules_install
#echo "make_debian_/ $? $*"
}


debian_ ()
{
check_ $*
make menuconfig 
#make bzImage modules
make_debian_
#apt-cache search kernel-image
#$? && mv /lib/modules/${VDOT} /lib/modules/${VDOT}-$(date +%s)
# cd ..
#dpkg -i kernel-image*${HOSTNAME}*${NUM}*${ARCH}*.deb 
sudo dpkg -i ../*${HOSTNAME}*${NUM}*${ARCH}*.deb 
}

debian_install_()
{
echo $VDOT $NAME $ARCH
# mv /lib/modules/$VDOT /lib/modules/bak-$VDOT-$(date +%s) 
sudo dpkg -i /usr/src/kernel-image*${VDOT}*${NAME}*${ARCH}*.deb 
sudo dpkg -i /usr/src/*drm*${VDOT}*${NAME}*${ARCH}*.deb 
sudo dpkg -i /usr/src/alsa-modules*${VDOT}*${NAME}*${ARCH}*.deb 

# mv /lib/modules/$VDOT  /lib/modules/$VDOT-$DATEID && ln -fs   /lib/modules/$VDOT-$DATEID  /lib/modules/$VDOT
#depmod
}

#----------------------------------------------------------
loadlin_() 
{
read t && ( \
   cp arch/i386/boot/bzImage  ${LOADLINDIR}/kernels/test.bin  && \
   sed -e "s/\(.*\)/#\1/g" /usr/src/linux/include/linux/version.h \
   ${LOADLINDIR}/kernels/test.cfg && \
   cat /usr/src/linux/.config >> ${LOADLINDIR}/kernels/test.cfg  ) 

}


alsa_()
{
cd  /usr/src/alsa-*/driver
./snddevices
modprobe snd-$SNDCARD; modprobe snd-pcm-oss ; modprobe snd-mixer-oss ; modprobe snd-$SNDCARD ; modprobe snd-seq-oss
}



# MODLIST="snd-ac97-codec snd-mixer-oss snd-pcm-oss snd-via8233 soundcore snd"
alsa_setup_() 
{
#cd  /usr/local/src/alsa-driver-*
#/usr/src/modules/alsa-driver/snddevices

killall esd mpg321 mpg123 alsad alsamixer alsamixer-0.9 xmms wine
rmmod -v -a  snd-ac97-codec snd-mixer-oss snd-pcm-oss snd-via8233 soundcore snd
lsmod
#read t
/etc/init.d/alsa restart
modprobe -v snd-via8233  $(MODLIST)
modprobe -v snd-pcm-oss 
modprobe -v snd-mixer-oss  
modprobe -v snd-seq-oss
#alsactl restore

amixer sset Master,0 80%,80% unmute
amixer sset PCM,0 80%,80% unmute
#alsamixer

mpg321 /test.mp3
}



alsa_()
{
#cd  /usr/local/src/alsa-driver-*
#/usr/src/modules/alsa-driver/snddevices

#killall esd xmms mpg321 mpg123 alsad
#rmmod snd-via8233 soundcore snd
/etc/init.d/alsa restart
#modprobe -v snd-via8233 
#modprobe -v snd-pcm-oss 
#modprobe -v snd-mixer-oss  
#modprobe -v snd-seq-oss
#alsactl restore

amixer sset Master,0 80%,80% unmute
amixer sset PCM,0 80%,80% unmute
#alsamixer

mpg321 /test.mp3
}


play_() 
{
date > /dev/audio
mpg321 /root/tmp/tmp.mp3
cat /usr/share/sndconfig/*.au > /dev/audio 
}


download_()
{
cd /usr/src
lynx -dump http://www.kernel.org | grep "latest stable" 


wget -c http://www.kernel.org/pub/linux/kernel/v$VMA.$VMI/linux-$VMA.$VMI.$VRE.tar.bz2 
#tar xvfj linux-$VMA.$VMI.$VRE.tar.bz2
#mv /usr/src/linux  /usr/src/linux-$(date %s) 
#ln -fs kernel* /usr/src/linux
}

### -------------------------------------------------------------------

### --- http://www.Alsa-Project.org ------------------------------------
alsa_debian_install_()
{
set -e
apt-get install alsa-source alsa-base alsa-utils alsa-headers 

./configure \
 --with-oss=yes  --with-cards=via8233   --with-sequencer=yes  --with-isapnp=no \
\
 && make && make install


}
alsa_download_() {
cd /usr/src
wget -c ftp://ftp.alsa-project.org/pub/driver/alsa-driver-0.9.1.tar.bz2
}
alsa_download_cvs_() {
MODULE_LOC="$HOME/usr/src/alsa-sources-cvs"
mv $MODULE_LOC $MODULE_LOC-$(date +%s)
mkdir -p "$MODULE_LOC"
cd "$MODULE_LOC" || exit

cvs -d ':pserver:anonymous@cvs.alsa-project.org:/cvsroot/alsa' login && \
 cvs -z3 -d ':pserver:anonymous@cvs.alsa-project.org:/cvsroot/alsa' co -P .
tar cvfz /usr/src/alsa-sources-cvs-$DATE8.tgz $MODULE_LOC
}

tarball_()
{
cd /usr/src/
unp $1
}

alsa_make_() 
{
echo "... make_alsa_ : downloading"
MODULE_LOC="$HOME/usr/src/alsa-sources-cvs"

cd "$MODULE_LOC" || exit
ALSA_CARDS=via82xx && export ALSA_CARDS
ALSA_NOPNP=yes && export ALSA_NOPNP
${PREEXEC} make clean build
#./build all
#make
#read t
#rm config.cache 
#make clean 
#./configure --with-cards=$SNDCARD --with-sequencer=yes && make  && make install
echo "... make_alsa_/"
}

make_alsa_debian_() 
{
MODULE_LOC=/usr/src/alsa-sources-cvs/alsa-driver #echo "... This does not works"
MODULE_LOC=/usr/src/alsa-driver
export MODULE_LOC
ALSA_CARDS=via8233 && export ALSA_CARDS 
ALSA_NOPNP=yes && export ALSA_NOPNP
cd ${MODULE_LOC} || exit
ls ./debian || deb-make
$PREEXEC ./debian/rules
$PREEXEC ./debian/rules binary
cd /usr/src/linux || exit
$PREEXEC make-kpkg  modules_image  --revision=${HOSTNAME}.${NUM}
}

### --- http://www.DEBIAN.org/ -------------------------------------------------


debian_modules_ ()
{
cd /usr/src/linux || exit
MODULE_LOC=/usr/src/modules && export MODULES_LOC
ALSA_CARDS=via8233 && export ALSA_CARDS
ALSA_NOPNP=y && export ALSA_PNP
 # /etc/modutils/aliases update-modules
[ -d "$MODULE_LOC" ] || exit
#cd  "$MODULE_LOC"
#make_alsa_debian_
$PREEXEC make-kpkg clean modules_image  --revision=${HOSTNAME}.$NUM  
}

### --- Loadlin ----------------------------------------------------------

loadlin_install_()
{
echo ... copying files PR:
#read t

KDIR=/mnt/D/l
mv $KDIR/kernels/unstable.bin $KDIR/kernels/$DATE8.bin 
mv $KDIR/kernels/unstable.img $KDIR/kernels/$DATE8.img 
mv $KDIR/kernels/unstable.cfg $KDIR/kernels/$DATE8.cfg 
mv $KDIR/kernels/unstable.txt $KDIR/kernels/$DATE8.txt 
echo "backuped to $DATE8"

cp -a /boot/vmlinuz-$VDOT    /boot/unstable.bin
cp -a /boot/initrd.img-$VDOT /boot/unstable.img
cp -a /usr/src/linux/.config /boot/unstable.cfg

cp -a /boot/unstable.* $KDIR/kernels/
ls -l  $KDIR/kernels/unstable.*
#cp -a /vmlinuz $KDIR/$DATE.bin && \
# cp -a /vmlinuz $KDIR/unstable.bin

echo "/ $? $*"
}

backup_()
{
DIR=$HOME/bak-linux-${HOSTNAME}
mv $DIR $DIR-$DATE
mkdir -p $DIR
cd $HOME/bak-linux-${HOSTNAME} || exit
dd if=/dev/hda of=mbr-hda.txt bs=512 count=1
fdisk -l /dev/hda > fdisk-hda.txt
fdisk -l -u /dev/hda >> fdisk-hda.txt

cp /etc/X11/XF86Config-4 ./
cp /etc/fstab ./

echo "backup_ $* "
}

#-----------------------------------------------------------------------------


# 1st recompile kernel W/out sound support (no M , no * )


info_() 
{
do_ cat /etc/modules.conf
}
misc_() {
cat<<EOF
Debian Woody 3r0.0 
--------------------------------------------------------
alsapackage 0.9b doesnt has support for 
VIA 8233 chipset (only 82Cxxx)
--------------------------------------------------------
MSI K7T266Pro MS-6380 has a VIA8233 soundchip

Via 686a audio driver 1.9.1
ac97_codec: AC97 Audio codec, id: 0x4943:0x4511 (ICE1232)
via82cxxx: board #1 at 0xD800, IRQ 10
via_audio: ignoring drain playback error -512
--------------------------------------------------------
Makesure that user is run the audio group :
usermod -g audio rzr

and run alsamixer
--------------------------------------------------------
updates-modules
modconf

EOF

echo "$NUM"

}

main_classic_()
{
cd /usr/src/linux || exit
make menuconfig  modules modules_install bzdisk
}

cd_kernel_()
{
t=Makefile
[ -r $t ] && return
[ -r /usr/src/linux ] && return
[ -r /usr/src/kernel-${KVER} ]  && return
exit
}

main_debian_()
{
cd_kernel_
debian_
dsdt_ # initrd ... CHECK
}

dsdt_()
{
[ -z $KVER ] && KVER=$(uname -r)
# AML=/etc/dsdt-${HOSTNAME}.aml
AML=/etc/DSDT.aml
[ -r $AML ] || return


INITRD_ORIG=/boot/initrd.img-${KVER}
INITRD=${INITRD_ORIG}-${HOSTNAME}
mv -v $INITRD $INITRD-bak-$(date +%s).bak

cp -fv $INITRD_ORIG $INITRD  # custom version that include dsdt
echo -n "INITRDDSDT123DSDT123" >> $INITRD # start block mark ( dsdt block)
cat $AML >> $INITRD # custom fixed table
echo -n "INITRDDSDT321DSDT321" >> $INITRD # end block mark

strings $INITRD | grep DSDT
# INITRDDSDT123DSDT123DSDT/-
# INITRDDSDT321DSDT321
}

test_main_debian_()
{
cd /usr/src/ || exit
#[ -f "linux" ] || download_
cd /usr/src/linux || exit
# t="/usr/src/linux-$VDOT" 
# [ -e $t ] || exit
# echo "$t"

do_ make_debian_  
echo "??? PR"
read t
debian_modules_
debian_install_
loadlin_install_

#alsa_make_

#echo make_alsa_
#read t

#read t
#modules_upgrade

#setup_
#play_

echo "... press yes to reboot"
read t
[ "$t" == "yes" ] && reboot
}



main_()
{
[ -r /etc/debian_version ] && main_debian_
}

echo "### main  -------------------------------------------------------"
b=$(date )
[ -f "$1" ] && ( tarball_ $*  ; shift )
[ -z "$1" ] && main_ 
$*
echo " ${NAME} build over"
echo "start time : $b"
echo "finish time : $(date)"
#printf "\aover (started at $b)"

#eof "$Id: rzr -- http://rzr.online.fr/contrib.htm $"