# Adapted from Arch Linux
abinfo "Sourcing env.sh to export required environment variables ..."
source "$SRCDIR"/env.sh
OUTPUTDIR="$SRCDIR"/out/linux.amd64/release/bin

abinfo "Copying required sources ..."
mkdir -pv "$PKGDIR"/usr/src/vboxguest-$PKGVER
cp -rv "$OUTPUTDIR"/src/* "$PKGDIR"/usr/src/vboxguest-$PKGVER

abinfo "Installing binaries ..."
install -dv "$PKGDIR"/usr/bin
for i in VBoxClient VBoxControl VBoxDRMClient VBoxService mount.vboxsf; do
    install -vm755 "$OUTPUTDIR/additions/$i" "$PKGDIR"/usr/bin
done
install -Dvm755 $SRCDIR/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
    "$PKGDIR"/usr/bin/VBoxClient-all

abinfo "Installing desktop files ..."
install -Dvm755 $SRCDIR/src/VBox/Additions/x11/Installer/vboxclient.desktop \
    "$PKGDIR"/etc/xdg/autostart/vboxclient.desktop

abinfo "Installing libraries ..."
install -dv "$PKGDIR"/usr/lib/xorg/modules/dri
install -Dvm755 "$OUTPUTDIR"/additions/pam_vbox.so "$PKGDIR"/usr/lib/security/pam_vbox.so

abinfo "Generating dkms related configuration and scripts ..."
cat > "$PKGDIR"/usr/src/vboxguest-$PKGVER/dkms.conf << EOF
PACKAGE_NAME="vboxguest"
PACKAGE_VERSION=$PKGVER
AUTOINSTALL=yes

BUILT_MODULE_NAME[0]="vboxguest"
BUILT_MODULE_LOCATION[0]="vboxguest"
DEST_MODULE_LOCATION[0]="/kernel/misc"

BUILT_MODULE_NAME[1]="vboxsf"
BUILT_MODULE_LOCATION[1]="vboxsf"
DEST_MODULE_LOCATION[1]="/kernel/misc"

BUILT_MODULE_NAME[2]="vboxvideo"
BUILT_MODULE_LOCATION[2]="vboxvideo"
DEST_MODULE_LOCATION[2]="/kernel/misc"
EOF

cat > "$PKGDIR"/usr/src/vboxguest-$PKGVER/do_dkms << EOF
#!/bin/sh

ACTION=
if [ "$1" = "install" ]; then
  ACTION="install"
  MODULE="$2"
  VERSION="$3"
elif [ "$1" = "uninstall" ]; then
  shift
  ACTION="uninstall"
  OLDMODULES="$*"
  break
fi

DKMS=`which dkms 2>/dev/null`
if [ -n "$DKMS" ]
then
    if [ "$ACTION" = "uninstall" ]; then

        echo "Uninstalling modules from DKMS"
        for m in $OLDMODULES
        do
            $DKMS status -m $m | while read line
            # first, remove _any_ old module
            do
                if echo "$line" | grep -q added > /dev/null ||
                   echo "$line" | grep -q built > /dev/null ||
                   echo "$line" | grep -q installed > /dev/null; then
                    # either 'vboxvideo, <version>: added' 
                    # or 'vboxvideo, <version>, ...: installed'
                    version=`echo "$line" | sed "s/$m,\([^,]*\)[,:].*/\1/;t;d"`
                    echo "  removing old DKMS module $m version $PKGVERsion"
                    $DKMS remove -m $m -v $PKGVERsion --all
                fi
            done
        done
        exit 0

    elif [ "$ACTION" = "install" ]; then

        echo "Attempting to install using DKMS"
        if $DKMS add -m $MODULE -v $PKGVERSION &&
            $DKMS build -m $MODULE -v $PKGVERSION &&
            $DKMS install -m $MODULE -v $PKGVERSION --force
        then
            exit 0
        fi
        echo "Failed to install using DKMS, attempting to install without"

    fi
fi

exit 1
EOF

abinfo "Fixing permissions problem for generated dkms scripts ..."
chmod -v +x "$PKGDIR"/usr/src/vboxguest-$PKGVER/do_dkms
