#!/bin/bash

SLAX_VERSION="Slax 6.0.4"
SLACKWARE="/mnt/sda8/linux/slack-mirror/slackware-current"
SLAX="/mnt/sda8/linux/slax-packages"
LINUXLIVE=/mnt/sda8/linux/slax/linux-live-6.*
UNION=/mnt/union
BUILDS=/slax-build # make sure there is no trailing slash!
LASTBR=/mnt/empty
INTERNATIONAL=/slax-international
CWD=$(pwd)

. ./func

umount $UNION 2>/dev/null
rm -Rf $UNION
mkdir -p $UNION
mkdir -p $LASTBR
modprobe aufs
if [ $? -ne 0 ]; then exit 1 ; fi
mount -t aufs -o br:/mnt/empty=rw aufs $UNION
rm -Rf $INTERNATIONAL 2>/dev/null
rm -Rf $BUILDS 2>/dev/null

doit 001-core
( cd $LINUXLIVE ; ./install $UNION )
echo $SLAX_VERSION >$UNION/etc/slax-version
touch $UNION/var/lock/deactivatelock # make sure 001-core module will never be deactivated
chmod ago-x $UNION/etc/rc.d/rc.sshd
ln -s /mnt/live/bin/busybox $UNION/usr/bin/vi
doit 002-xorg
chmod ago+x $UNION/etc/rc.d/rc.cups
doit 003-desktop
doit 004-kdeapps
doit 005-koffice
doit 006-devel

. $LINUXLIVE/initrd/addlocaleslib || exit 1

if [ "1" ]; then
echo "Building language modules"
for LANGUAGE in $(cat languages); do
   echo - $LANGUAGE
   LANG=$BUILDS/$LANGUAGE
   mkdir -p $LANG
   copylocales $UNION $LANG $LANGUAGE
   LANGID=$(cat $UNION/usr/share/locale/locale.alias | sed -r "s/#.*//" | grep $LANGUAGE | tr -s "[[:space:]]" " " | cut -d " " -f 2)
   LN=$(echo $LANGID | cut -d _ -f 1 | tr "[[:upper:]]" "[[:lower:]]")
   KB=$(echo $LANGID | cut -d _ -f 2 | cut -d . -f 1 | tr "[[:upper:]]" "[[:lower:]]")
   pkg_install $SLACKWARE kde-i18n-$LN $LANG
   pkg_install $SLACKWARE koffice-l10n-$LN $LANG
   mkdir -p $LANG/usr/share/locale/$LN/LC_MESSAGES
   cp $UNION/usr/share/locale/$LN/LC_MESSAGES/{dialog,k3b,k3bsetup,lynx,mc,parted,rpm,wget,kplayer,kcm_knemo,knemod}.mo $LANG/usr/share/locale/$LN/LC_MESSAGES 2>/dev/null
   mkdir -p $LANG/root/.kde/share/config
   echo -e "[Layout]\nEnableXkbOptions=true\nLayoutList=$KB,us\nUse=true" >$LANG/root/.kde/share/config/kxkbrc
   find $LANG | egrep "[.]ogg|[.]wav" | xargs rm -f
   rm -Rf $LANG/usr/share/doc 2>/dev/null
   rm -Rf $LANG/usr/doc 2>/dev/null
   dir2lzm $LANG $BUILDS/$LANGUAGE.lzm -skipcheck
   rm -Rf $LANG
   mkdir -p $INTERNATIONAL/$LANGUAGE/slax/base/
   mv $BUILDS/$LANGUAGE.lzm $INTERNATIONAL/$LANGUAGE/slax/base/
done

# this requires glibc-18n installed!
for ADDLOCALE in $(cat languages); do
   echo $ADDLOCALE
   mkdir -p $INTERNATIONAL/$ADDLOCALE/boot/
   cd $LINUXLIVE/initrd/
   ./initrd_create slax $ADDLOCALE
   mv initrd.gz $INTERNATIONAL/$ADDLOCALE/boot/
done
fi 

umount $UNION

# cleanup
free=$(freedisk)
echo "Cleanup"
cd $BUILDS
ls -1 | while read LINE; do
   echo "- $LINE"
   $CWD/cleanup $BUILDS/$LINE 2>/dev/null
done
echo freed space: $(($(freedisk) - $free)) KB

free=$(freedisk)
## here we are using the feature that ls sorts files alphabeticaly
echo "removing duplicated files"
ls -1 $BUILDS | while read SNAPSHOT; do
   ls -1 $BUILDS | while read SNAPSHOTDUPL; do
      if [ "$SNAPSHOT" \< "$SNAPSHOTDUPL" ]; then
         remove_duplicates $BUILDS/$SNAPSHOT $BUILDS/$SNAPSHOTDUPL >/dev/null 2>/dev/null
      fi
   done
done
echo freed space: $(($(freedisk) - $free)) KB


free=$(freedisk)
echo "Stripping all .a files (removing debug symbols)"
find $BUILDS -name "*.a" | xargs -n 1 strip -g
echo freed space: $(($(freedisk) - $free)) KB

echo "Copying rootchanges"
ls -1 | while read LINE; do
   echo "- $LINE"
   copyroot $LINE
done

# build lzm
echo "Building LZM files"
ls -1 | while read LINE; do
   echo "- $LINE"
   touch $BUILDS/$LINE # remember the date/time of creation
   dir2lzm $BUILDS/$LINE $BUILDS/$LINE.lzm
done
