#!/bin/bash

#
# Формирование deb-пакета для aisexpert
#
package_dir=$script_dir/build/${build_subdir}/deb/aisexpert
echo -e "\npackage_dir: $package_dir"

package_name="aisexpert-${package_vers}-${package_date}git${gitrev}-${os_id}${os_ver}-${os_arch}.deb"
echo "package_name: $package_name"

rm -rf $package_dir

mkdir -p $package_dir/DEBIAN
mkdir -p $package_dir/etc/aisexpert
mkdir -p $package_dir/etc/cron.d
mkdir -p $package_dir/etc/systemd/system
mkdir -p $package_dir/opt/aisexpert/bin
mkdir -p $package_dir/opt/aisexpert/lib
mkdir -p $package_dir/var/opt/aisexpert/database
mkdir -p $package_dir/var/opt/aisexpert/database-upgrade
mkdir -p $package_dir/var/opt/aisexpert/log
mkdir -p $package_dir/var/opt/aisexpert/reportfed
mkdir -p $package_dir/var/opt/aisexpert/dump
mkdir -p $package_dir/var/opt/aisexpert/state
mkdir -p $package_dir/usr/share/doc/aisexpert

cp $script_dir/setup/deb/aisexpert/DEBIAN/*      $package_dir/DEBIAN
cp $script_dir/setup/aisexpert.cron              $package_dir/etc/cron.d/aisexpert
cp $script_dir/config/aisexpert.conf             $package_dir/etc/aisexpert
cp $script_dir/config/aisexpert.logger.conf      $package_dir/etc/aisexpert
cp $script_dir/config/foms-emulator.conf         $package_dir/etc/aisexpert
cp $script_dir/config/userspool.conf             $package_dir/etc/aisexpert
cp $script_dir/config/userspool.conf             $package_dir/etc/aisexpert

#cp $script_dir/COPYRIGHT                        $package_dir/usr/share/doc/aisexpert/copyright

cp $build_dir/bin/*                              $package_dir/opt/aisexpert/bin
cp $script_dir/database/database-index-update    $package_dir/opt/aisexpert/bin
cp $script_dir/database/database-backup          $package_dir/opt/aisexpert/bin
cp $script_dir/setup/remove-biglog               $package_dir/opt/aisexpert/bin
cp $script_dir/systemd/systemd-notify.py         $package_dir/opt/aisexpert/bin
cp $script_dir/database/aisexpert-empty.fbk      $package_dir/var/opt/aisexpert/database
cp $script_dir/database-upgrade/*                $package_dir/var/opt/aisexpert/database-upgrade

cp $script_dir/systemd/aisexpert.service         $package_dir/etc/systemd/system
cp $script_dir/systemd/userspool.service         $package_dir/etc/systemd/system
cp $script_dir/systemd/aisexpert-notify.service  $package_dir/etc/systemd/system


GLOBIGNORE="*-gdb.py"
for f in $(cat ${build_dir}/package_build_info); do
    [ -n "$f" ] && cp -P $f $package_dir/opt/aisexpert/lib
done
unset GLOBIGNORE

chmod -R go-w        $package_dir
chmod    u=rwx,go=rx $package_dir/DEBIAN/post*
chmod    u=rwx,go=rx $package_dir/DEBIAN/pre*
chmod    u=rw,go=r   $package_dir/DEBIAN/conffiles
chmod    u=rwX,go=rX $package_dir/etc/aisexpert
chmod -R u=rwX,go=rX $package_dir/opt/aisexpert
chmod    u=rwx,go=rx $package_dir/opt/aisexpert/bin/*
chmod    u=rw,go=r   $package_dir/var/opt/aisexpert/database/*
chmod    u=rw,go=r   $package_dir/var/opt/aisexpert/database-upgrade/*
chmod    u=rwx,go=rx $package_dir/var/opt/aisexpert/database-upgrade/show-db-version
chmod    u=rwx,go=rx $package_dir/var/opt/aisexpert/database-upgrade/update-db
chmod -R u=rwX,go=rX $package_dir/usr/share/doc/aisexpert

set +e
chmod   u=rw,go=r    $package_dir/opt/aisexpert/lib/*
set -e

# Прописываем в хранимую процедуру версию БД
sed -e "s/%DB_VERSION%/${dbase_vers}/" -i $package_dir/DEBIAN/postinst

function strip_debug_info()
{
    if [ ! -L $1 ]; then
        res=$(file $1 | grep -E 'LSB +shared object|ar archive|LSB +relocatable')
        if [ -n "$res" ]; then
            echo "Stripped: $1"
            strip --strip-debug --strip-unneeded $1
            return
        fi

        res=$(file $1 | grep -E 'LSB +executable')
        if [ -n "$res" ]; then
            echo "Stripped: $1"
            strip --strip-debug --strip-unneeded $1
        fi
    fi
}

# if [ "$build_mode" = "release" ]; then
#     set +e
#     echo "Removing debug info ... "
#     for f in $(find $package_dir/opt/aisexpert/lib -type f); do strip_debug_info $f; done
#     for f in $(find $package_dir/opt/aisexpert/bin -type f); do strip_debug_info $f; done
#     set -e
# fi

# Размер пакета
installed_size=$(du -s $package_dir | sed -r 's/([0-9]+).*/\1/')
echo "installed_size: $installed_size"

packet_depends=$(cat << EOS
    libc6, adduser, systemd, pixz, libqtcore4, libqt4-network, libqt4-sql, \
    libqt4-xml, heirloom-mailx|s-nail, python3-yaml, zip, libldap-2.4-2, \
    libssl1.0.0, libsasl2-2
EOS
)
#if [ "$os_id" = "ubuntu" -a "$os_ver" = "16.04" ]; then
#    packet_depends="${packet_depends}, libvpx3"
#fi
# if [ "${os_arch:0:3}" = "arm" ]; then
#     packet_depends="${packet_depends}, cpufrequtils, libvpx3"
# fi

os_arch_control=$os_arch
[ "${os_arch:0:3}" = "arm" ] && os_arch_control=armhf
sed -e "s/%VERSION%/${package_vers}-${package_date}git${gitrev}/" \
    -e "s/%ARCHITECTURE%/${os_arch_control}/" \
    -e "s/%INSTALLED_SIZE%/${installed_size}/" \
    -e "s/%DEPENDS%/${packet_depends}/" \
    -i $package_dir/DEBIAN/control

# Контрольные суммы файлов пакета
cd $package_dir
md5deep -rl -o f etc >> DEBIAN/md5sums
md5deep -rl -o f opt >> DEBIAN/md5sums
md5deep -rl -o f var >> DEBIAN/md5sums
md5deep -rl -o f usr >> DEBIAN/md5sums
chmod  0644 DEBIAN/md5sums
cd $script_dir

# Создание deb-пакета
fakeroot dpkg-deb --build $package_dir ${build_dir}/$package_name

# Проверка deb-пакета
echo "Start 'lintian'"
set +e
lintian --suppress-tags \
hardening-no-relro,\
binary-or-shlib-defines-rpath,\
dir-or-file-in-opt,\
bad-package-name,\
package-not-lowercase,\
systemd-service-file-outside-lib,\
maintainer-script-calls-systemctl,\
file-in-etc-not-marked-as-conffile,\
maintainer-script-ignores-errors,\
maintainer-script-empty,\
file-in-unusual-dir \
${build_dir}/$package_name
set -e

if [ "$build_deb_package" = "yes" ]; then
    cd $script_dir
    mkdir -p packages
    echo "Copying the file $package_name to directory ./packages"
    cp -f ${build_dir}/$package_name ./packages
fi

if [ "$install_aisexpert" = "yes" ]; then
    echo "Install AisExpert..."
    sudo dpkg -i ${build_dir}/$package_name
    echo "AisExpert installation is complete"
fi
