#!/bin/sh
#
######################################################
# Build script for Core 8.2                          #
#                                                    #
# See .info for details                              #
######################################################

# Install Compile tools:                                                           
tce-load -wi compiletc.tcz                                                 
tce-load -wi squashfs-tools.tcz

# Install compile dependencies:
tce-load -wi ipv6-KERNEL
tce-load -wi readline-dev
tce-load -wi perl5.tcz
tce-load -wi libcares-dev.tcz


######################################################
# Configure extension creation parameters            #
######################################################

VERSION=1.2.2
SRCNAM=quagga-${VERSION}.tar.gz
WRKDIR=quagga-${VERSION}
export EXTNAM=quagga
TMPDIR=/tmp/quagga
TODAY=`date +%Y/%m/%d`
DESCRIPTION="Quagga Routing Software Suite"
DOCDESCRIPTION="Documentation part of the Quagga routing software suite"
DEVDESCRIPTION="Development files part of the Quagga routing software suite"
AUTHORS="See Original-site"
HOMEPAGE="http://www.quagga.net"
LICENSE="GPL"
ME="rhermsen"
TAGS="quagga zebra routing"
DOCTAGS="man pages quagga zebra routing"
DEVTAGS="development quagga zebra routing"

######################################################
# Prepare extension creation                         #
######################################################

# Remove dirs and files left from previous creation

rm -r -f $WRKDIR 2>/dev/null

sudo rm -r -f $TMPDIR 2>/dev/null
sudo rm -r -f $TMPDIR-doc 2>/dev/null

######################################################
# Compile extension                                  #
######################################################

# Export variables needed for compilation

export CFLAGS="-O2 -pipe -march=i486 -mtune=i686"
export CXXFLAGS="-O2 -pipe -fno-exceptions -fno-rtti -march=i486 -mtune=i686"
#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

# Download source to current directory

wget http://download.savannah.gnu.org/releases/${EXTNAM}/${EXTNAM}-${VERSION}.tar.gz

# Unpack source in current directory

tar -xf $SRCNAM

# Configure it

cd $WRKDIR
./configure  --prefix=/usr/local \
--sysconfdir=/usr/local/etc/quagga \
--localstatedir=/var/quagga \
--enable-user=tc \
--enable-group=staff \
--enable-vty-group=staff \
--enable-isis-topology

# Compile

make
mkdir -p /tmp/qua/package
make DESTDIR=/tmp/qua/package install

# Install in base temp dir

mkdir -p $TMPDIR/usr/local/bin
mkdir -p $TMPDIR/usr/local/sbin
mkdir -p $TMPDIR/usr/local/lib
mkdir -p $TMPDIR/usr/local/etc/quagga
#mkdir -p $TMPDIR/usr/local/var/quagga
mkdir -p $TMPDIR//usr/local/etc/init.d
mkdir -p $TMPDIR/usr/local/tce.installed

mv /tmp/qua/package/usr/local/bin/* $TMPDIR/usr/local/bin
mv /tmp/qua/package/usr/local/etc/quagga/* $TMPDIR/usr/local/etc/quagga
mv /tmp/qua/package/usr/local/lib/lib*so* $TMPDIR/usr/local/lib
mv /tmp/qua/package/usr/local/sbin/* $TMPDIR/usr/local/sbin
cp /mnt/vda1/tce/quagga.init $TMPDIR/usr/local/etc/init.d/quagga

                                                                              
###################################################                            
# Create info file                                #                            
###################################################                            
cat <<EOF> /tmp/qua/${EXTNAM}.tcz.info
Title:          ${EXTNAM}.tcz
Description:    ${DESCRIPTION}
Version:        ${VERSION}
Author:         ${AUTHORS}
Original-site:  ${HOMEPAGE}
Copying-policy: ${LICENSE}
Size:           ${size}
Extension_by:   ${ME}
Tags:           ${TAGS}
Comments:       Quagga is a routing software suite, providing
                implementations of OSPFv2, OSPFv3, RIP v1 and v2,
                RIPng and BGP-4 for Unix platforms, particularly FreeBSD,
                Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra
                which was developed by Kunihiro Ishiguro.

                The IPv6 kernel modules are not automatically installed.
                If IPv6 is desired, install ipv6-4.8.17-tinycore.tcz via
                the Apps GUI, or cli (tce-load -wi ipv6-KERNEL).
Change-log:     2009/11/11 First version (0.99.15, size 1.0M, Joan Batet)
		2018/01/17, 1.2.2 (rhermsen)
                ${TODAY}, ${VERSION}, no ipv6 dependency (rhermsen)
Current:        ${TODAY}, ${VERSION} (rhermsen)
EOF

###################################################
# Create .dep file                                #
###################################################
cat <<EOF> /tmp/qua/${EXTNAM}.tcz.dep
readline.tcz
libcares.tcz
EOF

###################################################                                 
# Create install script file                      #                                 
###################################################                                 
cat <<EOF> $TMPDIR/usr/local/tce.installed/${EXTNAM}
sudo -u tc mkdir /var/quagga
EOF


# Delete compilation work directory

cd ..
#rm -r -f $WRKDIR

# Adjust directory access rigths

find $TMPDIR/ -type d | xargs chmod -v 755;

# Strip executables

find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded

# Move files to doc extension

mkdir -p $TMPDIR-doc/usr/local/share/man/man1
mkdir -p $TMPDIR-doc/usr/local/share/man/man8
mkdir -p $TMPDIR-doc/usr/local/share/info

mv /tmp/qua/package/usr/local/share/man/man1/* $TMPDIR-doc/usr/local/share/man/man1        
mv /tmp/qua/package/usr/local/share/man/man8/* $TMPDIR-doc/usr/local/share/man/man8 
mv /tmp/qua/package/usr/local/share/info/* $TMPDIR-doc/usr/local/share/info      

###################################################
# Create info file                                #
###################################################
cat <<EOF> /tmp/qua/${EXTNAM}-doc.tcz.info
Title:          ${EXTNAM}-doc.tcz
Description:    ${DOCDESCRIPTION}
Version:        ${VERSION}
Author:         ${AUTHORS}
Original-site:  ${HOMEPAGE}
Copying-policy: ${LICENSE}
Size:           ${size}
Extension_by:   ${ME}
Tags:           ${DOCTAGS}
Comments:       Quagga is a routing software suite, providing
                implementations of OSPFv2, OSPFv3, RIP v1 and v2,
                RIPng and BGP-4 for Unix platforms, particularly FreeBSD,
                Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra
                which was developed by Kunihiro Ishiguro.
Change-log:     2009/11/11 First version (0.99.15, size 1.0M, Joan Batet)
                ${TODAY}, ${VERSION} (rhermsen)
Current:        ${TODAY}, ${VERSION} (rhermsen)
EOF

mkdir -p $TMPDIR-dev/usr/local/lib
mkdir -p $TMPDIR-dev/usr/local/include/quagga                                       

mv /tmp/qua/package/usr/local/lib/lib*a* $TMPDIR-dev/usr/local/lib                                                                                    
mv /tmp/qua/package/usr/local/include/quagga/* $TMPDIR-dev/usr/local/include/quagga/

###################################################                                 
# Create info file                                #                                 
###################################################                                 
cat <<EOF> /tmp/qua/${EXTNAM}-dev.tcz.info                                          
Title:          ${EXTNAM}-dev.tcz                                                   
Description:    ${DEVDESCRIPTION}                                                   
Version:        ${VERSION}                                                          
Author:         ${AUTHORS}                                                          
Original-site:  ${HOMEPAGE}                                                         
Copying-policy: ${LICENSE}                                                          
Size:           ${size}                                                             
Extension_by:   ${ME}                                                               
Tags:           ${DEVTAGS}                                                          
Comments:       Quagga is a routing software suite, providing                       
                implementations of OSPFv2, OSPFv3, RIP v1 and v2,                   
                RIPng and BGP-4 for Unix platforms, particularly FreeBSD,           
                Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra            
                which was developed by Kunihiro Ishiguro.                           
Change-log:     2009/11/11 First version (0.99.15, size 1.0M, Joan Batet)
		2018/01/17, 1.2.2 (rhermsen)
                ${TODAY}, ${VERSION}, add include files (rhermsen)                                     
Current:        ${TODAY}, ${VERSION} (rhermsen)                                     
EOF

###################################################                                 
# Create .dep file                                #                                 
###################################################                                 
cat <<EOF> /tmp/qua/${EXTNAM}-dev.tcz.dep
ipv6-KERNEL.tcz
quagga.tcz
readline-dev.tcz                                                                        
libcares-dev.tcz                                                                        
EOF

###################################################
# Create base extension in temp dir               #
###################################################

cd $TMPDIR
find $TMPDIR -perm 777 -exec chmod 755 {} \;
find $TMPDIR -perm 555 -exec chmod 755 {} \;
find $TMPDIR -perm 444 -exec chmod 644 {} \;
find $TMPDIR -perm 666 -exec chmod 644 {} \;
find $TMPDIR -perm 664 -exec chmod 644 {} \;
sudo chown -R root:root $TMPDIR
sudo chown -R root:staff $TMPDIR/usr/local/tce.installed
sudo chmod -R 775 $TMPDIR/usr/local/tce.installed
sudo chmod -R 775 $TMPDIR/usr/local/etc/init.d/quagga
#sudo chown tc:staff $TMPDIR/usr/local/var/quagga                                   
sudo chown tc:staff $TMPDIR/usr/local/etc/quagga
sudo chown tc:staff $TMPDIR/usr/local/etc/init.d/quagga

cd ..
mksquashfs $TMPDIR $EXTNAM.tcz
cd $TMPDIR
sudo sh -c "find usr -not -type d > $EXTNAM.tcz.list"
sudo mv ../$EXTNAM.tcz .
sudo mv /tmp/qua/$EXTNAM.tcz.info .
sudo mv /tmp/qua/$EXTNAM.tcz.dep .

# Create md5 file

sudo sh -c "md5sum $EXTNAM.tcz > $EXTNAM.tcz.md5.txt"

# Cleanup temp directory

sudo rm -r -f usr

###################################################
# Create doc extension in temp dir                #
###################################################

cd $TMPDIR-doc
find $TMPDIR-doc -perm 777 -exec chmod 755 {} \;
find $TMPDIR-doc -perm 555 -exec chmod 755 {} \;
find $TMPDIR-doc -perm 444 -exec chmod 644 {} \;
find $TMPDIR-doc -perm 666 -exec chmod 644 {} \;
find $TMPDIR-doc -perm 664 -exec chmod 644 {} \;
sudo chown -R root:root $TMPDIR-doc
cd ..
mksquashfs $TMPDIR-doc $EXTNAM-doc.tcz
cd $TMPDIR-doc
sudo sh -c "find usr -not -type d > $EXTNAM-doc.tcz.list"
sudo mv ../$EXTNAM-doc.tcz .
sudo mv /tmp/qua/$EXTNAM-doc.tcz.info .

# Create md5 file

sudo sh -c "md5sum $EXTNAM-doc.tcz > $EXTNAM-doc.tcz.md5.txt"

# Cleanup temp directory

sudo rm -r -f usr

###################################################                                 
# Create dev extension in temp dir                #                                 
###################################################

cd $TMPDIR-dev
find $TMPDIR-dev -perm 777 -exec chmod 755 {} \;
find $TMPDIR-dev -perm 555 -exec chmod 755 {} \;
find $TMPDIR-dev -perm 444 -exec chmod 644 {} \;                                    
find $TMPDIR-dev -perm 666 -exec chmod 644 {} \;                                    
find $TMPDIR-dev -perm 664 -exec chmod 644 {} \;                                    
sudo chown -R root:root $TMPDIR-dev
cd ..                                                                               
mksquashfs $TMPDIR-dev $EXTNAM-dev.tcz                                              
cd $TMPDIR-dev                                                   
sudo sh -c "find usr -not -type d > $EXTNAM-dev.tcz.list"                           
sudo mv ../$EXTNAM-dev.tcz .                                                        
sudo mv /tmp/qua/$EXTNAM-dev.tcz.info .                                             
sudo mv /tmp/qua/$EXTNAM-dev.tcz.dep .
                                                                                    
# Create md5 file                                                                   
                                                                                    
sudo sh -c "md5sum $EXTNAM-dev.tcz > $EXTNAM-dev.tcz.md5.txt"                       
                                                                                    
# Cleanup temp directory                                                            
 
sudo rm -r -f usr
