# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

inherit eutils rpm

MY_PV="${PV/_p/-}"

DESCRIPTION="Novell Xtier Base"
HOMEPAGE="http://www.novell.com"
SRC_URI="x86? ( http://${NOVELL_ACCOUNT_USERNAME}:${NOVELL_ACCOUNT_PASSWORD}@cdn.novell.com/prot/21a91ftmUKk~/Novell_Client_SLED10-i386-2007809-CD1.iso
	http://download.opensuse.org/distribution/SL-10.1/inst-source/suse/i586/binutils-2.16.91.0.5-18.i586.rpm )
        amd64? ( http://${NOVELL_ACCOUNT_USERNAME}:${NOVELL_ACCOUNT_PASSWORD}@cdn.novell.com/prot/21a91ftmUKk~/Novell_Client_SLED10-x86_64-2007809-CD1.iso 
	http://download.opensuse.org/distribution/SL-10.1/inst-source/suse/x86_64/binutils-2.16.91.0.5-18.x86_64.rpm )"

LICENSE="Novell-ncl-EULA"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""

DEPEND=">=app-arch/p7zip-4.15"

RDEPEND="virtual/libc
	>=dev-libs/expat-2.0.0
	=net-nds/novell-xtier-core-${PV}
	>=sys-libs/ncurses-5.5
	>=sys-devel/gcc-4.1"

RESTRICT="mirror strip"

src_unpack() {
        cd ${WORKDIR}
        if use x86
        then
            narch=i586
            nlib=lib
            7z x ${DISTDIR}/Novell_Client_SLED10-i386-2007809-CD1.iso
        elif use amd64
        then
            narch=x86_64
            nlib=lib64
            7z x ${DISTDIR}/Novell_Client_SLED10-x86_64-2007809-CD1.iso
        fi
	rpm_unpack ${DISTDIR}/binutils-2.16.91.0.5-18.${narch}.rpm
        mkdir -p ${WORKDIR}/${PN}-${MY_PV}
        cd ${PN}-${MY_PV}
        rpm_unpack ${WORKDIR}/suse/${narch}/${PN}-${MY_PV}.${narch}.rpm
}

src_compile() { :; }

src_install() {
	into /opt/novell/xtier
	# still a hack
	dolib.so "${WORKDIR}"/usr/${nlib}/libbfd-*.so
	dobin ${WORKDIR}/${PN}-${MY_PV}/opt/novell/xtier/bin/*
	dolib.so ${WORKDIR}/${PN}-${MY_PV}/opt/novell/xtier/${nlib}/*
	dodoc ${WORKDIR}/${PN}-${MY_PV}/usr/share/doc/packages/${PN}/*
	dodir /var/opt/novell/xtier/xregd/db
	keepdir /var/opt/novell/xtier/xregd/db
	dodir /etc/opt/novell/xtier/xregd
	keepdir /etc/opt/novell/xtier/xregd
	insinto /etc/opt/novell/xtier/
	doins ${WORKDIR}/${PN}-${MY_PV}/etc/opt/novell/xtier/*

        if use x86
        then
            doenvd "${FILESDIR}"/80novell-xtier
        elif use amd64
        then
            doenvd "${FILESDIR}"/80novell-xtier64
        fi

	newinitd "${FILESDIR}"/novell-xregd20.initd novell-xregd
}

pkg_preinst(){
# ***************************************
# ******* Begin of pre script ***********
# ***************************************
einfo "Running Novell XTier Base pre script..."
# We just want to stop the novell-xregd service and export the XTier registry to a
# temporary file if this is an upgrade.
if [ -e "/etc/init.d/novell-xregd" ]; then
        #echo "Novell XTier Base pre script stoping novell-xregd for upgrade"
        /etc/init.d/novell-xregd stop
fi        
# Check if we need to export the XTier registry
# Note: We export the registry at this time to avoid losing its settings in case
# that we have to rebuild the database.
if [ -e "/var/opt/novell/xtier/xregd/db/xtier_registry.db" ]; then
        einfo "   Exporting Xtier Registry to temporary file..."
        rm -f /var/opt/novell/xtier/xregd/xtier_registry.xml.export
        /opt/novell/xtier/bin/regutil -e /etc/opt/novell/xtier/xtier_registry.xml.export
        einfo "   done exporting Xtier Xml Registry"
fi

einfo "done running Novell XTier Base pre script!"

# Do necessary user and group administration
enewgroup novlxtier
enewuser novlxregd -1 -1 /var/opt/novell/xtier/xregd novlxtier
einfo "done running Novell XTier Base pre script!"
# ***************************************
# ******* End of pre script *************
# ***************************************
}


pkg_postinst(){
# ***************************************
# ******* Begin of post script **********
# ***************************************
echo "Running Novell XTier Base post script..."
# Check if we need to import the XTier registry
if [ ! -e "/var/opt/novell/xtier/xregd/db/xtier_registry.db" ]; then
        einfo "   Importing Xtier Xml Registry..."
                
        # Import the registry.
        # Note: We could be dealing with an upgrade from a Pre-XFlaim registry in which
        # case we would have saved the previous registry contents to let us upgrade to XFlaim based
        # registry without loosing configuration settings.
        einfo "      Using newly installed registry file"
	mkdir -p /var/opt/novell/xtier/xregd/db/
        /opt/novell/xtier/bin/regutil -i /etc/opt/novell/xtier/xtier_registry.xml
        # Make sure that novlxregd has rights to the registry db
        chown -R novlxregd:novlxtier /var/opt/novell/xtier/xregd/db/
        einfo "   done importing Xtier Xml Registry"
else
        # The XTier registry exists, check its integrity.
        /opt/novell/xtier/bin/regutil -c
        if [ "$?" != "0" ]; then
                einfo "   Existing XTier Registry Db Unsupported or Corrupted"
                einfo "   Re-installing XTier Registry Db"
                
                # Import the registry. Use registry file that was exported earlier if present to
                # avoid losing configuration settings that may have been made.
                if [ -e "/etc/opt/novell/xtier/xtier_registry.xml.export" ]; then
                        /opt/novell/xtier/bin/regutil -i /etc/opt/novell/xtier/xregd/xtier_registry.xml.export
                else
                        einfo "   Exported registry file not found"
                        einfo "   Configuration settings stored in the registry after initial install have been lost"
                        /opt/novell/xtier/bin/regutil -i /etc/opt/novell/xtier/xtier_registry.xml
                fi
                # Make sure that novlxregd has rights to the registry db
                chown -R novlxregd:novlxtier /var/opt/novell/xtier/xregd/db/
                einfo "   done importing Xtier Xml Registry"
        fi
fi
# Make sure that we are not leaving the temporary registry xml file around
rm -f /etc/opt/novell/xtier/xtier_registry.xml.export
einfo "done running Novell XTier Base post script!"
# ***************************************
# ******* End of post script ************
# ***************************************
}

pkg_prerm(){
# ***************************************
# ******* Begin of pre-remove script ****
# ***************************************
einfo "Running Novell XTier Base preun script ..."
# Stop novell-xregd
/etc/init.d/novell-xregd stop
# Check if we need to export the XTier registry
if [ -e "/var/opt/novell/xtier/xregd/db/xtier_registry.db" ]; then
        einfo "   Exporting Xtier Xml Registry..."
        rm -f /etc/opt/novell/xtier/xtier_registry.xml.export
        /opt/novell/xtier/bin/regutil -e /etc/opt/novell/xtier/xtier_registry.xml.export
        einfo "   done exporting Xtier Xml Registry"
fi
einfo "done running Novell XTier Base preun script!"
# ***************************************
# ******* End of pre-remove script ******
# ***************************************
}

pkg_postrm(){
# ***************************************
# ******* Begin of postun script ********
# ***************************************
einfo "Running Novell XTier Base postun script ..."
# Delete the var files
rm -rf /var/opt/novell/xtier
einfo "done running Novell XTier Base postun script!"
# ***************************************
# ******* End of postun script **********
# ***************************************
}