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

#tce-load -i compiletc libtirpc-dev cups-dev python-dev perl5 acl-dev

###Needs perl Parse::Yapp

STD_DEPS="compiletc squashfs-tools libtool git gettext libxslt-dev"
BUILD_DEPS="gamin-dev gnutls-dev acl-dev libcap-dev python3.8-dev perl5 jansson-dev libarchive-dev icu-dev talloc-dev"
TCZ_DEPS="gamin gnutls acl libcap jansson libarchive icu talloc"
DEV_TCZ_DEPS=""
FULL_DEPS="$STD_DEPS $BUILD_DEPS"

for deps in $FULL_DEPS; do
        tce-status -i | grep -q ${deps%.*}
        if [ $? -ne 0 ]; then
                tce-load -i $deps >/dev/null 2>&1
                if [ $? -eq 0 ]; then
                echo "Loaded $deps..."
                else
                        echo "Failed to load $deps... exiting"
                        exit 1
                fi
        fi
done

######################################################
# Configure extension creation parameters            #
######################################################
#src=https://www.samba.org

SRCNAM=samba-4.12.6.tar.gz
WRKDIR=samba-4.12.6
EXTNAM=samba4
TMPDIR=/tmp/$EXTNAM
LIBEXT=samba4-lib
LIBTMP=/tmp/$LIBEXT

######################################################
# 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-dev

# Crete temporary directory

mkdir -p $TMPDIR

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

# Export variables needed for compilation

case $(uname -m) in
	armv*)
		export CFLAGS="-Os -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
		export CXXFLAGS="-Os -pipe -fno-exceptions -fno-rtti -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
	;;
	aarch64)
		export CFLAGS="-Os -pipe -march=armv8-a+crc -mtune=cortex-a72"
		export CXXFLAGS="-Os -pipe -fno-exceptions -fno-rtti -march=armv8-a+crc -mtune=cortex-a72"
	;;
esac

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

# Unpack source in current directory

tar -xf $SRCNAM

#Patch it
cd $WRKDIR

# Configure it
[ -f /usr/local/bin/python3 ] || sudo ln -s /usr/local/bin/python3.8 /usr/local/bin/python3
./configure --prefix=/usr/local --enable-fhs --without-gpgme \
    --localstatedir=/usr/local/var --libexecdir=/usr/local/lib/samba \
    --with-piddir=/var/run --without-ad-dc --without-systemd \
    --with-logfilebase=/var/log --without-ldap --without-ads --without-pam --enable-selftest

# Compile
# Set timestamp before compile, since dev files are generated during compile and then just copied to FS.
touch /tmp/mark

make -j4

# Install in base temp dir
sudo make install

find /usr/local -newer /tmp/mark -not -type d > /tmp/list 
tar -T /tmp/list -czvf /tmp/samba4.tar.gz

# Posibly needed in init.d script
#* create /usr/local/etc/samba
#* create /var/lib/samba
#* create /var/lib/samba/private
#* create /var/lib/samba/bind-dns
#* create /var/cache/samba
#* create /var/lock/samba
#* create /var/run/samba

tar xf /tmp/samba4.tar.gz -C $TMPDIR/

# Copy License
if [ -f COPYING ]; then
	cp -f COPYING $TMPDIR/
fi

#Copy smb.conf.default
cp examples/smb.conf.default $TMPDIR/

# 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

#Remove Documentation, for now
rm -rf $TMPDIR/usr/local/share/man

#mkdir -p $TMPDIR-doc/usr/local/share
#mv $TMPDIR/usr/local/share/doc $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/*.sh $TMPDIR-dev/usr/local/lib
mv $TMPDIR/usr/local/lib/pkgconfig $TMPDIR-dev/usr/local/lib
mv $TMPDIR/usr/local/share $TMPDIR-dev/usr/local
#mv $TMPDIR/usr/local/bin $TMPDIR-dev/usr/local

# Move libraries to own extension
mkdir -p $LIBTMP/usr/local
mv $TMPDIR/usr/local/lib $LIBTMP/usr/local

#Remove unneeded python libs
rm -rf $LIBTMP/usr/local/lib/python*

# Move License to main extension

mkdir -p $TMPDIR/usr/local/share/$EXTNAM/files
mv $TMPDIR/COPYING $TMPDIR/usr/local/share/$EXTNAM/
mv $TMPDIR/smb.conf.default $TMPDIR/usr/local/share/$EXTNAM/files

# Copy init.d script to main extension
mkdir -p $TMPDIR/usr/local/etc/init.d
cp samba4.initd $TMPDIR/usr/local/etc/init.d/samba4
chmod 755 $TMPDIR/usr/local/etc/init.d/samba4

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

cd $TMPDIR
cd ..
mksquashfs $TMPDIR $EXTNAM.tcz
cd $TMPDIR
find usr -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

###################################################
# 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

###################################################
# 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 bin extension in temp dir                #
###################################################

cd $LIBTMP
cd ..
mksquashfs $LIBTMP $LIBEXT.tcz
cd $LIBTMP
find usr -not -type d > $LIBEXT.tcz.list
mv ../$LIBEXT.tcz .

# Create md5 file

md5sum $LIBEXT.tcz > $LIBEXT.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr
