MODULES="package-deb package-rpm package-freebsd"

configure()
{
    mk_declare -o \
        MK_BINDIR \
        MK_SBINDIR \
        MK_PREFIX \
        MK_DATADIR \
        MK_LIBEXECDIR \
        MK_DEBUG \
        MK_ROOT_DIR \
        MK_STAGE_DIR \
        MK_HOST_ARCH \
        MK_SYSCONFDIR \
        LW_CACHEDIR \
        LW_CONFIGDIR \
        LW_INITDIR \
        PRIMARY_LIBDIR="$MK_LIBDIR"

    if mk_deb_enabled
    then
        mk_declare -o PKG_DEB_NAME="${LW_VENDOR}-${LW_PRODUCT}"
        mk_declare -o PKG_DEB_VERSION="${LW_VERSION}-${LW_BUILD_REVISION:-0}"
        mk_declare -o PKG_DEB_DATE="`date -R`"
    fi

    if mk_rpm_enabled
    then
        mk_declare -o PKG_RPM_NAME="${LW_VENDOR}-${LW_PRODUCT}"
        mk_declare -o PKG_RPM_VERSION="${LW_VERSION}"
        mk_declare -o PKG_RPM_RELEASE="${LW_BUILD_REVISION:-0}"
    fi

    if mk_freebsd_enabled
    then
        mk_declare -o PKG_FREEBSD_NAME="${LW_VENDOR}-${LW_PRODUCT}"
    fi
}

package_deb()
{
    mk_deb_do \
        PACKAGE="$PKG_DEB_NAME" \
        VERSION="$PKG_DEB_VERSION" \
        DEBIANFILES="deb/changelog.in deb/control.in  \
                     deb/likewise-storage.postinst.in deb/likewise-storage.postrm.in deb/compat.in \
                     deb/likewise-storage.preinst.in deb/likewise-storage.prerm.in deb/rules.in"
        
        storage_files
        storage_files_compat

        mk_deb_sub_do SUBPACKAGE="dev"
            storage_files_dev
        mk_deb_sub_done
    mk_deb_done
}

package_rpm()
{
    mk_rpm_do \
        PACKAGE="$PKG_RPM_NAME" \
        VERSION="$PKG_RPM_VERSION" \
        SPECFILE="rpm/storage.spec.in"
        
        storage_files
        storage_files_compat

        mk_rpm_sub_do SUBPACKAGE="devel"
            storage_files_dev
        mk_rpm_sub_done
    mk_rpm_done
}
      
package_freebsd()
{
    mk_freebsd_do \
        PACKAGE="$PKG_FREEBSD_NAME" \
        VERSION="${LW_VERSION}-${LW_BUILD_REVISION:-0}" \
        SHORT="-Likewise Storage Services ${LW_VERSION}" \
        LONG="-The Likewise Storage Services platform provides a multi-protocol file server.  For more information, visit http://www.likewise.com/." \
        PREINST="freebsd/preinstall.in" \
        POSTINST="freebsd/postinstall.in" \
        PRERM="freebsd/preuninstall.in" \
        POSTRM="freebsd/postuninstall.in"
        
        storage_files
        storage_files_compat
    mk_freebsd_done
}

make()
{
    STORAGE_SUBDIRS="@config"

    for comp in ${LW_ALL_BUNDLED} ${LW_ALL_COMPONENTS}
    do
        # Blacklisted components
        case "$comp" in
            lwupgrade) continue;;
        esac

        STORAGE_SUBDIRS="$STORAGE_SUBDIRS @$comp"
    done

    mk_deb_enabled && package_deb
    mk_rpm_enabled && package_rpm
    mk_freebsd_enabled && package_freebsd
}

storage_files()
{
    storage_files_prefix
    storage_files_usr
    storage_files_root
}

storage_files_prefix()
{
    mk_package_patterns \
        SUBDIRS="$STORAGE_SUBDIRS" \
        "${MK_BINDIR}/*" \
        "${MK_SBINDIR}/*" \
        "${MK_LIBEXECDIR}/*" \
        "${MK_LIBDIR}/*${MK_LIB_EXT}.*" \
        "${MK_LIBDIR}/*.*${MK_LIB_EXT}" \
        "${MK_LIBDIR}/sasl2/*${MK_DLO_EXT}.*" \
        "${MK_LIBDIR}/sasl2/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/gss/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/krb5/plugins/libkrb5/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/lw-svcm/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/lsa-provider/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/lsa-rpc/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/lwio-driver/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/lw-map-sec/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/lw-pstore/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/apache2.0/*${MK_DLO_EXT}" \
        "${MK_LIBDIR}/apache2.2/*${MK_DLO_EXT}" \
        "${LW_CONFIGDIR}/*.reg" \
        "${MK_PREFIX}/data/VERSION" \
        "${MK_DATADIR}/likewise.pam-auth-update"
}

storage_files_usr()
{
    storage_files_interop

    mk_package_patterns \
        SUBDIRS="@docs" \
        "${MK_MANDIR}/man8/*"
}

storage_files_root()
{
    mk_package_patterns \
        SUBDIRS="$STORAGE_SUBDIRS" \
        "${MK_SYSCONFDIR}/*" \
        "${MK_SYSCONFDIR}/gss/mech" \
        "${LW_INITDIR}/*" \
        "${LW_CACHEDIR}/*"

    mk_package_dirs \
        "${LW_CACHEDIR}" \
        "${LW_CACHEDIR}/rpc"
}

storage_files_compat()
{
    storage_files_compat_prefix
    storage_files_compat_usr
}

storage_files_compat_prefix()
{
    mk_compat_do
        mk_package_patterns \
            SUBDIRS="$STORAGE_SUBDIRS" \
            "${MK_LIBDIR}/*${MK_LIB_EXT}.*"
    mk_compat_done
}

storage_files_compat_usr()
{
    mk_compat_do
        storage_files_interop
    mk_compat_done
}

storage_files_dev()
{
    mk_package_patterns \
        SUBDIRS="$STORAGE_SUBDIRS" \
        "*.h" \
        "*.idl"

    mk_package_patterns \
        SUBDIRS="$STORAGE_SUBDIRS @docs" \
        "$MK_HTMLDIR/*"

    mk_multiarch_do
       mk_package_patterns \
           SUBDIRS="$STORAGE_SUBDIRS" \
           "${MK_LIBDIR}/*.la" \
           "${MK_LIBDIR}/*[!0-9]${MK_LIB_EXT}"
    mk_multiarch_done
}

storage_files_interop()
{
    mk_package_patterns \
        SUBDIRS="@lsass/interop" \
        "${NSSDIR}/*" \
        "${PAMDIR}/*"
}
