#!/bin/bash

export LD_LIBRARY_PATH=$HOSTTOOLS_DIR/libelf/lib:$LD_LIBRARY_PATH 
source $KERNEL_DIR/.config

TARGETS_DIR=`pwd`

if [ "$INSTALL_DIR" == "" ]; then
    INSTALL_DIR=./$PROFILE/fs.install
fi

if [ -d $PROFILE/fs ]; then
  ROOTFS=$PROFILE/fs
else # Alternative path for DESKTOP_LINUX
  ROOTFS=$PROFILE/fs.install
fi

USERSPACE_DL_MODULES_BEEP_DIR=$BUILD_DIR/userspace/dlModules/beep
EEMNGR_DIR=$BUILD_DIR/userspace/private/apps/exampleEE2
USERSPACE_DL_MODULES_EEMNGR_DIR=$EEMNGR_DIR/exampleEE2Dir

EXE=exampleEE2
PACKAGE_NAME=exampleEE2
BEEP_MANIFEST_SUFIX=.manifest
BEEP_PKT_INFO_SUFIIX=-pkginfo.txt
BEEPPKG_INFO=$PACKAGE_NAME$BEEP_PKT_INFO_SUFIIX
BEEPPKG_MANIFEST=$EXE$BEEP_MANIFEST_SUFIX

#generate exampleEE2 package only if exampleEE2 exists
if [ -f $EEMNGR_DIR/objs/exampleEE2 ]; then

if [ "$USER_ARCH" == "aarch64" ]; then
	LIBDIR_NAME="lib64"
else
	LIBDIR_NAME="lib"
fi

#construct EXAMPLEEE base filesystem
echo "construct EXAMPLEEE base filesystem"
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/data
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/dev
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/etc/data
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/lib
if [ "$USER_ARCH" == "aarch64" ]; then
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/lib64
fi
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/local
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/mnt
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/proc
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/sbin
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/sys
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/tmp
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/usr/bin
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/usr/sbin
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/var
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/libexec
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/run
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/share
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/include
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/opt
mkdir -p $USERSPACE_DL_MODULES_EEMNGR_DIR/du

#change etc directory mode to 777 so that passwd file can be created.
chmod 777 $USERSPACE_DL_MODULES_EEMNGR_DIR/etc

cp -av $TARGETS_DIR/$ROOTFS/bin/busybox $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/dhcpclient $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/bash $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/cat $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/chmod $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/cp $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/echo $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/gunzip $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/ip $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/kill $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/ln $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/ls $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/mkdir $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/mknod $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/mount $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/ping $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/ps $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/pwd $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/rm $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/sh $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/sleep $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/su $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/tar $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/umount $USERSPACE_DL_MODULES_EEMNGR_DIR/bin
cp -av $TARGETS_DIR/$ROOTFS/bin/uname $USERSPACE_DL_MODULES_EEMNGR_DIR/bin

cp -av $TARGETS_DIR/$ROOTFS/usr/bin/timeout $USERSPACE_DL_MODULES_EEMNGR_DIR/usr/bin
cp -av $TARGETS_DIR/$ROOTFS/usr/bin/du $USERSPACE_DL_MODULES_EEMNGR_DIR/usr/bin
cp -av $TARGETS_DIR/$ROOTFS/usr/bin/killall $USERSPACE_DL_MODULES_EEMNGR_DIR/usr/bin
cp -av $TARGETS_DIR/$ROOTFS/usr/bin/busybox $USERSPACE_DL_MODULES_EEMNGR_DIR/usr/bin

cp -av $TARGETS_DIR/$ROOTFS/sbin/init $USERSPACE_DL_MODULES_EEMNGR_DIR/sbin
cp -av $TARGETS_DIR/$ROOTFS/sbin/init.lxc $USERSPACE_DL_MODULES_EEMNGR_DIR/sbin
cp -av $TARGETS_DIR/$ROOTFS/sbin/getcap $USERSPACE_DL_MODULES_EEMNGR_DIR/sbin
cp -av $TARGETS_DIR/$ROOTFS/sbin/setcap $USERSPACE_DL_MODULES_EEMNGR_DIR/sbin

cp -av $TARGETS_DIR/$ROOTFS/lib/ld-linux.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/lib
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libc.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libcrypto.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libdbus-1*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libdl.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libexpat.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libffi.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libgcc_s.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libgio-2*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libglib-2*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libgmodule-2*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libgobject-2*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libgthread-2*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libjson-c.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/liblxc.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libm.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libnss*.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libpthread.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libresolv.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libutil.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libz.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libssl.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libcurl.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libnghttp2.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libbeeputil.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libattr.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libcap.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME
cp -av $TARGETS_DIR/$ROOTFS/$LIBDIR_NAME/libseccomp.so* $USERSPACE_DL_MODULES_EEMNGR_DIR/$LIBDIR_NAME

cp -av $EEMNGR_DIR/objs/exampleEE2 $USERSPACE_DL_MODULES_EEMNGR_DIR/bin

cp -av $EEMNGR_DIR/SYS_OPS/$BEEPPKG_INFO $USERSPACE_DL_MODULES_EEMNGR_DIR/etc
chmod 644 $USERSPACE_DL_MODULES_EEMNGR_DIR/etc/$BEEPPKG_INFO

tar zcf exampleEE2.tar.gz -C $USERSPACE_DL_MODULES_EEMNGR_DIR .
mv exampleEE2.tar.gz $USERSPACE_DL_MODULES_EEMNGR_DIR

cd $EEMNGR_DIR

SYS_DIRS=$(echo SYS_*)
 
for d in $SYS_DIRS
do
   echo "Working on SYS dir $d ..."
   if [ -f $d/$BEEPPKG_INFO ]
   then
     echo "pkginfo.txt file: $d/$BEEPPKG_INFO, pkg manifest file: $d/$BEEPPKG_MANIFEST "
     if [ -f $d/$BEEPPKG_MANIFEST ] 
     then
       echo "pkg manifest file: $d/$BEEPPKG_MANIFEST"
       cp -fav $d/$BEEPPKG_MANIFEST $USERSPACE_DL_MODULES_EEMNGR_DIR
       $HOSTTOOLS_DIR/beep/beepPkgBuilder -f $d/$BEEPPKG_INFO
       rm -f $USERSPACE_DL_MODULES_EEMNGR_DIR/$BEEPPKG_MANIFEST     
     fi
  fi
  
done

mv ./pkg_*_*.tar.gz $USERSPACE_DL_MODULES_BEEP_DIR
$HOSTTOOLS_DIR/beep/reposcan -d $USERSPACE_DL_MODULES_BEEP_DIR
rm -rf $USERSPACE_DL_MODULES_EEMNGR_DIR

fi
