#!/bin/bash
set -xe
#####################################################
# Configure extension creation parameters            #
######################################################
S=$(basename $0)
PACKAGE=${S%%.build}

VERSION=1.4.22
SRCNAM=$PACKAGE-$VERSION.tar.bz2
WRKDIR=$PACKAGE-$VERSION
EXTNAM=$PACKAGE
TMPDIR=/tmp/$PACKAGE-$VERSION
OUTDIR=$PWD/../../build/$(version)

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

# Remove dirs and files left from previous creation

rm -r -f $WRKDIR
rm -r -f $TMPDIR
rm -r -f $TMPDIR-doc
rm -r -f $TMPDIR-tools

# Crete temporary directory
mkdir -p $TMPDIR

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

# Export variables needed for compilation
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
export CPPFLAGS="-I/usr/local/include -I/usr/include"
export CFLAGS="-Os -pipe -march=i486 -mtune=i686"
export CXXFLAGS="-Os -pipe -fno-exceptions -fno-rtti -march=i486 -mtune=i686"
export LDFLAGS="-Wl,-Os"

# Unpack source in to WRK directory
tar -xf $SRCNAM
pushd $WRKDIR

# Configure,Compile,Check,Install in base temp dir
./configure --prefix=/usr/local --enable-twinserial
make
make install DESTDIR=$TMPDIR

# INSTALLATION
# INS: udev rule
install -m644 -D src/92_pcscd_ccid.rules $TMPDIR/usr/local/etc/udev/rules.d/92-pcscd_ccid.rules

# docs
install -dD $TMPDIR/usr/local/share/doc/$PACKAGE
install -m644 SCARDGETATTRIB.txt ChangeLog INSTALL AUTHORS COPYING NEWS README $TMPDIR/usr/local/share/doc/$PACKAGE/

# tools
install -sD contrib/RSA_SecurID/RSA_SecurID_getpasswd $TMPDIR/usr/local/bin/RSA_SecurID_getpasswd
install -dD $TMPDIR/usr/local/share/man/man1
gzip -c contrib/RSA_SecurID/RSA_SecurID_getpasswd.1 >$TMPDIR/usr/local/share/man/man1/RSA_SecurID_getpasswd.1.gz

install -sD contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch $TMPDIR/usr/local/sbin/Kobil_mIDentity_switch
install -dD $TMPDIR/usr/local/share/man/man8
gzip -c contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch.8 >$TMPDIR/usr/local/share/man/man8/Kobil_mIDentity_switch.8.gz

install -Dm644 contrib/Kobil_mIDentity_switch/README_Kobil_mIDentity_switch.txt $TMPDIR/usr/local/share/doc/$PACKAGE/README_Kobil_mIDentity_switch.txt
install -m664 -D src/towitoko/COPYING $TMPDIR/usr/local/share/doc/$PACKAGE/COPYING-towitoko
install -Dm644 src/towitoko/README $TMPDIR/usr/local/share/doc/$PACKAGE/README-towitoko
install -Dm644 src/openct/LICENSE $TMPDIR/usr/local/share/doc/$PACKAGE/LICENSE-openct

# Delete compilation work directory
popd
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

# tools
install -dD $TMPDIR-tools/usr/local/bin
mv $TMPDIR/usr/local/bin/RSA_SecurID_getpasswd $TMPDIR-tools/usr/local/bin/RSA_SecurID_getpasswd
install -dD $TMPDIR-tools/usr/local/sbin
mv $TMPDIR/usr/local/sbin/Kobil_mIDentity_switch $TMPDIR-tools/usr/local/sbin/Kobil_mIDentity_switch
rmdir $TMPDIR/usr/local/bin $TMPDIR/usr/local/sbin
install -dD $TMPDIR-tools/usr/local/etc/udev/rules.d
mv $TMPDIR/usr/local/etc/udev/rules.d/92-pcscd_ccid.rules $TMPDIR-tools/usr/local/etc/udev/rules.d/92-pcscd_ccid.rules
install -dD $TMPDIR-tools/usr/local/share
mv $TMPDIR/usr/local/share/man $TMPDIR-tools/usr/local/share/
install -dD $TMPDIR-tools/usr/local/share/doc/$PACKAGE
mv $TMPDIR/usr/local/share/doc/$PACKAGE/README_Kobil_mIDentity_switch.txt $TMPDIR-tools/usr/local/share/doc/$PACKAGE

# Move files to doc extension
install -dD $TMPDIR-doc/usr/local/share/doc
mv $TMPDIR/usr/local/share/doc/$PACKAGE $TMPDIR-doc/usr/local/share/doc/

# wipe empty dirs
rmdir --ignore-fail-on-non-empty -p $TMPDIR/usr/local/etc/udev/rules.d
rmdir --ignore-fail-on-non-empty -p $TMPDIR/usr/local/share/doc

###################################################
# Create base extension in temp dir               #
###################################################
mksquashfs $TMPDIR $OUTDIR/$EXTNAM.tcz -noappend -no-xattrs -all-root
mksquashfs $TMPDIR-doc $OUTDIR/$EXTNAM-doc.tcz -noappend -no-xattrs -all-root
mksquashfs $TMPDIR-tools $OUTDIR/$EXTNAM-tools.tcz -noappend -no-xattrs -all-root

rm -rf $TMPDIR
rm -rf $TMPDIR-doc
rm -rf $TMPDIR-tools

###################################################
# Update info/tree/dep/build-dep
cp $EXTNAM.tcz.build-dep $OUTDIR/
for INFO in *.tcz.info; do
        TCZ=${INFO%%.info}
        SIZE=$(ls -sh "$OUTDIR/$TCZ" | cut -f1 -d' ')
        sed -re "s/\{SIZE\}/$SIZE/g" -e "s/\{TITLE\}/$TCZ/g" -e "s/\{VERSION\}/$VERSION/g" <$INFO >$OUTDIR/$INFO
        if [ -f $TCZ.tree ]; then
                cp $TCZ.tree $OUTDIR/$TCZ.tree
                cat $TCZ.tree | grep -wv "$TCZ" | sed -re 's/^[ \t]+//' | sort | uniq > $OUTDIR/$TCZ.dep
        fi
done

###################################################
# submitqc
pushd $OUTDIR
submitqc --libs --tcz=$EXTNAM.tcz
submitqc --libs --tcz=$EXTNAM-doc.tcz
submitqc --libs --tcz=$EXTNAM-tools.tcz
popd
