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

tce-load -i compiletc squashfs-tools git libnl-dev python3.8-dev rsync libgcrypt-dev

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

STARTDIR=$(pwd)
SRCNAM=crda-4.14.tar.gz
WRKDIR=crda-4.14
EXTNAM=crda
TMPDIR=/tmp/$EXTNAM

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

# Remove dirs and files left from previous creation

rm -r -f $WRKDIR

rm -r -f $TMPDIR*

# Crete temporary directory

mkdir -p $TMPDIR

######################################################
# Setup Python Dependancies                          #
######################################################

echo import M2Crypto | python3.8 >/dev/null 2>&1
if [ $? -ne 0 ]; then
	tce-load -i swig
	if [ "$(which pip)" = "" ]; then
		cd /tmp
		wget https://bootstrap.pypa.io/get-pip.py
		sudo python3.8 get-pip.py
	fi
	sudo pip install M2Crypto
fi

######################################################
# Get Regulatory.bin                                 #
######################################################
cd $STARTDIR

[ -d wireless-regdb ] || git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git

#This is just here, as it is required for building crda, will be in different location for crda.tcz
[ -d /usr/lib/crda ] || sudo mkdir -p /usr/lib/crda
sudo cp -f wireless-regdb/regulatory.bin /usr/lib/crda/regulatory.bin

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

# Export variables needed for compilation

export CFLAGS="-O2 -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
export CXXFLAGS="-O2 -pipe -fno-exceptions -fno-rtti -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"

# Unpack source in current directory

tar -xf $SRCNAM

# Patch it

cd $WRKDIR
for i in $(ls -1 ../patches); do
	patch -p1 < ../patches/$i
done

# Configure it


# Compile

PREFIX=/usr/local \
RUNTIME_PUBKEY_DIR=/usr/local/lib/crda/pubkeys \
UDEV_RULE_DIR=/usr/local/share/crda/files \
SBINDIR=/usr/local/sbin/ \
setarch linux32 make

[ $? -ne 0 ] && exit

# Install in base temp dir

PREFIX=/usr/local \
RUNTIME_PUBKEY_DIR=/usr/local/lib/crda/pubkeys \
UDEV_RULE_DIR=/usr/local/share/crda/files \
SBINDIR=/usr/local/sbin/ \
setarch linux32 make install DESTDIR=$TMPDIR

# Remove dev headers,
rm -rf $TMPDIR/usr/local/include

# Copy requried files
mkdir -p $TMPDIR/usr/local/lib/crda/pubkeys
rsync -r -t -v -l pubkeys/ $TMPDIR/usr/local/lib/crda/pubkeys/

mkdir -p $TMPDIR/usr/local/lib/crda
cp $STARTDIR/wireless-regdb/regulatory.bin $TMPDIR/usr/local/lib/crda/regulatory.bin

#Firmeware needed by some WLAN radio firmware
mkdir -p $TMPDIR/lib/firmware
cp $STARTDIR/wireless-regdb/regulatory.db $TMPDIR/lib/firmware/regulatory.db
cp $STARTDIR/wireless-regdb/regulatory.db.p7s $TMPDIR/lib/firmware/regulatory.db.p7s

mkdir -p $TMPDIR/usr/local/tce.installed
cp $STARTDIR/crda.script $TMPDIR/usr/local/tce.installed/crda

chmod 755 $TMPDIR/usr/local/tce.installed/crda

# Delete compilation work directory

cd ..
rm -r -f $WRKDIR
rm -r -f wireless-regdb

# 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
mv $TMPDIR/usr/local/share/man $TMPDIR-doc/usr/local/share

# Move files to dev extension

#mkdir -p $TMPDIR-dev/usr/local/lib
#mv $TMPDIR/usr/local/include $TMPDIR-dev/usr/local
#mv $TMPDIR/usr/local/lib/*.a $TMPDIR-dev/usr/local/lib
#mv $TMPDIR/usr/local/lib/*.la $TMPDIR-dev/usr/local/lib
#mv $TMPDIR/usr/local/lib/pkgconfig $TMPDIR-dev/usr/local/lib

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

cd $TMPDIR
cd ..
mksquashfs $TMPDIR $EXTNAM.tcz
cd $TMPDIR
find * -not -type d > $EXTNAM.tcz.list
mv ../$EXTNAM.tcz .

# Create md5 file

md5sum $EXTNAM.tcz > $EXTNAM.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr
rm -r -f lib

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

#cd $TMPDIR-dev
#cd ..
#mksquashfs $TMPDIR-dev $EXTNAM-dev.tcz
#cd $TMPDIR-dev
#find usr -not -type d > $EXTNAM-dev.tcz.list
#mv ../$EXTNAM-dev.tcz .

# Create md5 file

#md5sum $EXTNAM-dev.tcz > $EXTNAM-dev.tcz.md5.txt

# Cleanup temp directory

#rm -r -f usr

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

cd $TMPDIR-doc
cd ..
mksquashfs $TMPDIR-doc $EXTNAM-doc.tcz
cd $TMPDIR-doc
find usr -not -type d > $EXTNAM-doc.tcz.list
mv ../$EXTNAM-doc.tcz .

# Create md5 file

md5sum $EXTNAM-doc.tcz > $EXTNAM-doc.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr

