I'm tired of maintaining essentially the same code in 20-odd ebuilds,
so I am wanting to condense the common bits into a single eclass.

Most of you probably don't care, but it may be of interest to those few
who maintain gkrellm plugin ebuilds.

I have attached my first draft of the eclass.  As you can see, there
are 3 main important benefits to using this eclass:

1 - Sets up the basic dependencies shared by all gkrellm plugins

2 - New pkg_setup check to ensure gkrellm was built with USE="X" (see
bug 167227 for more info on why this is necessary for 99.9% of plugins)

3 - The plugin install location is now centralized, and available via
the gkrellm-plugin_dir function, instead of each ebuild hard-coding
'/usr/$(get_libdir)/gkrellm2/plugins'

As an added benefit, the most common variant of src_install was
centralized here too.

If there are no major objections, I will add this eclass shortly, at
which point anyone is free (and encouraged!) to use it for their gkrellm
plugin ebuilds.  I will begin converting all my ebuilds shortly
thereafter.

-- 
Jim Ramsay
Gentoo/Linux Developer (rox,gkrellm)
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

#
# Original Author: Jim Ramsay <[EMAIL PROTECTED]>
#
# Purpose:
#   Provides common methods used by (almost) all gkrellm plugins:
#    - Sets up default dependencies
#    - Adds pkg_setup check to ensure gkrellm was built with USE="X" (bug
#    167227)
#    - Provides 'gkrellm-plugin_dir' function in lieu of hard-coding the plugins
#    directory (which *may* change in the future)
#    - Provides the most common src_install method to avoid code duplication.
#
# Utility Routines:
#   gkrellm-plugin_dir - Returns the gkrellm-2 plugin directory
#
# Environment:
#   For src_install:
#     PLUGIN_SO - The name of the plugin's .so file which will be installed in
#       the plugin dir.  Defaults to "${PN}.so"
#     PLUGIN_DOCS - An optional list of docs to be installed.
#

inherit multilib eutils

ECLASS="gkrellm-plugin"
INHERITED="$INHERITED $ECLASS"

RDEPEND="=app-admin/gkrellm-2*"
DEPEND="${RDEPEND}
        dev-util/pkgconfig"

gkrellm-plugin_dir() {
        echo /usr/$(get_libdir)/gkrellm2/plugins
}

gkrellm-plugin_pkg_setup() {
        if ! built_with_use app-admin/gkrellm X && \
                ! has X ${IUSE}; then
                eerror "This plugin requires the X frontend of gkrellm."
                eerror "Please re-emerge app-admin/gkrellm with USE=\"X\""
                die "Please re-emerge app-admin/gkrellm with USE=\"X\""
        fi
}

gkrellm-plugin_src_install() {
        insinto $(gkrellm-plugin_dir)
        doins ${PLUGIN_SO:-${PN}.so}

        DDOCS="README* ChangeLog AUTHORS COPYING FAQ TODO INSTALL"

        for doc in ${DDOCS}; do
                [ -s "$doc" ] && dodoc $doc
        done

        [ -n "${PLUGIN_DOCS}" ] && dodoc ${PLUGIN_DOCS}
}

EXPORT_FUNCTIONS pkg_setup src_install

Attachment: signature.asc
Description: PGP signature

Reply via email to