#!/bin/bash

# important: you need to use the most general CFLAGS to build the packages:
#  * for x86  : CFLAGS="-march=i586 -mtune=generic -O2 -pipe -g"
#  * for amd64: CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -g"

# What you can set:
VERSION="3.6.3.2"
BINVERSION="3.6.3.2"
OPTS="-q"
USEFILE="/etc/portage/package.use/libreo"
MYPKGDIR="$( portageq pkgdir )"
################################################

die() {
        echo "${1}"
        exit 1
}

if [ "$( uname -m )" = "x86_64" ] ; then
	MYFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -g"
	ARCH="amd64"
elif [ "$( uname -m )" = "i686" ] ; then
	MYFLAGS="-march=i586 -mtune=generic -O2 -pipe -g"
	ARCH="x86"
else
	die "Arch not supported"
fi

for i in \
	"/bin/echo" \
	"/bin/mkdir" \
	"/bin/mv" \
	"/bin/rm" \
	"/bin/sed" \
	"/bin/tar" \
	"/usr/bin/emerge" \
	"/usr/bin/portageq" \
	"/usr/bin/quickpkg"
do
	if [ ! -e "${i}" ] ; then
		die "Missing something in your system"
	fi
done

# first the default subset of useflags
IUSES_BASE="bash-completion branding cups dbus gstreamer gtk python vba webdav -aqua -binfilter -jemalloc -mysql -odk -opengl -postgres -svg"

ENABLE_EXTENSIONS="presenter-console presenter-minimizer"
DISABLE_EXTENSIONS="nlpsolver pdfimport scripting-beanshell scripting-javascript wiki-publisher"

for lo_xt in ${ENABLE_EXTENSIONS}; do
        IUSES_BASE+=" libreoffice_extensions_${lo_xt}"
done
for lo_xt in ${DISABLE_EXTENSIONS}; do
        IUSES_BASE+=" -libreoffice_extensions_${lo_xt}"
done
unset lo_xt

# now for the options
IUSES_J="java"
IUSES_NJ="-java"
IUSES_G="gnome eds"
IUSES_NG="-gnome -eds"
IUSES_K="kde"
IUSES_NK="-kde"

if [ -f /etc/portage/package.use ] ; then
	die "Please save your package.use and make it as a directory"
fi

mkdir -p /etc/portage/package.use/

if [ -z "${MYPKGDIR}" -o ! -d "${MYPKGDIR}" ] ; then
	die "Anything goes wrong"
fi

# compile the flavor
echo "Base"
echo "app-office/libreoffice ${IUSES_BASE} ${IUSES_NJ} ${IUSES_NG} ${IUSES_NK}" > ${USEFILE}
CFLAGS="${MYFLAGS}" CXXFLAGS="${MYFLAGS}" emerge ${OPTS} =libreoffice-${VERSION} || die "emerge failed"
quickpkg libreoffice --include-config=y
mv ${MYPKGDIR}/app-office/libreoffice-${VERSION}.tbz2 ./libreoffice-base-${BINVERSION}.tbz2  || die "Moving package failed"

echo "Base - java"
echo "app-office/libreoffice ${IUSES_BASE} ${IUSES_J} ${IUSES_NG} ${IUSES_NK}" > ${USEFILE}
CFLAGS="${MYFLAGS}" CXXFLAGS="${MYFLAGS}" emerge ${OPTS} =libreoffice-${VERSION} || die "emerge failed"
quickpkg libreoffice --include-config=y
mv ${MYPKGDIR}/app-office/libreoffice-${VERSION}.tbz2 ./libreoffice-base-java-${BINVERSION}.tbz2  || die "Moving package failed"

# kde flavor
echo "KDE"
echo "app-office/libreoffice ${IUSES_BASE} ${IUSES_NJ} ${IUSES_NG} ${IUSES_K}" > ${USEFILE}
CFLAGS="${MYFLAGS}" CXXFLAGS="${MYFLAGS}" emerge ${OPTS} =libreoffice-${VERSION} || die "emerge failed"
quickpkg libreoffice --include-config=y
mv ${MYPKGDIR}/app-office/libreoffice-${VERSION}.tbz2 ./libreoffice-kde-${BINVERSION}.tbz2  || die "Moving package failed"

echo "KDE - java"
echo "app-office/libreoffice ${IUSES_BASE} ${IUSES_J} ${IUSES_NG} ${IUSES_K}" > ${USEFILE}
CFLAGS="${MYFLAGS}" CXXFLAGS="${MYFLAGS}" emerge ${OPTS} =libreoffice-${VERSION} || die "emerge failed"
quickpkg libreoffice --include-config=y
mv ${MYPKGDIR}/app-office/libreoffice-${VERSION}.tbz2 ./libreoffice-kde-java-${BINVERSION}.tbz2  || die "Moving package failed"

# gnome flavor
echo "Gnome"
echo "app-office/libreoffice ${IUSES_BASE} ${IUSES_NJ} ${IUSES_G} ${IUSES_NK}" > ${USEFILE}
CFLAGS="${MYFLAGS}" CXXFLAGS="${MYFLAGS}" emerge ${OPTS} =libreoffice-${VERSION} || die "emerge failed"
quickpkg libreoffice --include-config=y
mv ${MYPKGDIR}/app-office/libreoffice-${VERSION}.tbz2 ./libreoffice-gnome-${BINVERSION}.tbz2  || die "Moving package failed"

echo "Gnome -java"
echo "app-office/libreoffice ${IUSES_BASE} ${IUSES_J} ${IUSES_G} ${IUSES_NK}" > ${USEFILE}
CFLAGS="${MYFLAGS}" CXXFLAGS="${MYFLAGS}" emerge ${OPTS} =libreoffice-${VERSION} || die "emerge failed"
quickpkg libreoffice --include-config=y
mv ${MYPKGDIR}/app-office/libreoffice-${VERSION}.tbz2 ./libreoffice-gnome-java-${BINVERSION}.tbz2  || die "Moving package failed"


for name in ./libreoffice-*-${BINVERSION}.tbz2 ; do

  BN=`basename $name .tbz2`

  rm -rf tmp.lo
  mkdir -vp tmp.lo/p1 tmp.lo/p2
  cd tmp.lo/p1

  echo "Unpacking complete archive $BN.tbz2"
  tar xfvjp ../../$BN.tbz2

  echo "Moving debug info"
  mkdir -vp ../p2/usr/lib
  mv -v usr/lib/debug ../p2/usr/lib/

  echo "Re-packing program"
  tar cfvJ ../../$ARCH-bin-$BN.tar.xz --owner root --group root ./*

  echo "Re-packing debug info"
  cd ../p2
  tar cfvJ ../../$ARCH-debug-$BN.tar.xz --owner root --group root ./*

  echo "Removing unpacked files"
  cd ../..
  rm -rf tmp.lo

  echo "Done with $BN.tbz2"

done

rm -fr ${USEFILE}

rm -fr libreoffice*${VERSION}*.tbz2
