Hi, please take a look at attached eclasses. Purpose is to make installation of obs services (plugins for osc) easier.
Comments and improvements are welcome. Regards -- Michal Hrusecky <mi...@gentoo.org>
# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # @ECLASS: obs-download.eclass # @MAINTAINER: # mi...@gentoo.org # @BLURB: Reduces code duplication in the downloading from obs. # @DESCRIPTION: # This eclass constructs OBS_URI based on provided project in openSUSE Build # Service and package name. It can be used later by packages/eclasses to # download actual files. # # All you need to do in order to use it is set OBS_PROJECT and OBS_PACKAGE and # inherit this eclass. It will provide OBS_URI in return which you will prepend # to your files and use in SRC_URI. Alternatively you can just set # OPENSUSE_RELEASE and OBS_PACKAGE and it will give you back OBS_URI for # downloading files from obs projects corresponding to the specified openSUSE # release. # @ECLASS-VARIABLE: OPENSUSE_RELEASE # @DEFAULT_UNSET # @DESCRIPTION: # From which stable openSUSE realease to take files. # @ECLASS-VARIABLE: OBS_PROJECT # @DEFAULT_UNSET # @DESCRIPTION: # In which obs project pakage is. This variable don't have to be set, if # OPENSUSE_RELEASE is provided. # @ECLASS-VARIABLE: OPENSUSE_PACKAGE # @REQUIRED # @DESCRIPTION: # Name of the package we want to take files from. [[ -z ${OPENSUSE_RELEASE} ]] || OBS_PROJECT="openSUSE:${OPENSUSE_RELEASE}" [[ -n ${OBS_PROJECT} ]] || die "OBS_PROJECT not set!" [[ -n ${OBS_PACKAGE} ]] || die "OBS_PACKAGE not set!" OBS_URI="https://api.opensuse.org/public/source/${OBS_PROJECT}/${OBS_PACKAGE}"
# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # @ECLASS: obs-service.eclass # @MAINTAINER: # mi...@gentoo.org # @BLURB: Reduces code duplication in the obs services. # @DESCRIPTION: # This eclass makes it easier to package obs services. Based on provided # information it will all neede variables and takes care of installation. # # @EXAMPLE: # Typical ebuild using obs-service.eclass: # # @CODE # EAPI=4 # # inherit obs-service # # KEYWORDS="" # # DEPEND="" # RDEPEND="${DEPEND}" # # @CODE # @ECLASS-VARIABLE: OBS_SERVICE_NAME # @DESCRIPTION: # Name of the service. If not set, it is taken from ${PN}. # @ECLASS-VARIABLE: OPENSUSE_RELEASE # @DESCRIPTION: # From which stable openSUSE realease to take a package. # @ECLASS-VARIABLE: ADDITIONAL_FILES # @DEFAULT_UNSET # @DESCRIPTION: # If any additional files are needed. case "${EAPI:-0}" in 4) : ;; *) die "EAPI=${EAPI} is not supported" ;; esac HOMEPAGE="http://en.opensuse.org/openSUSE:OSC" LICENSE="GPL-2" SLOT="0" IUSE="" RDEPEND+="dev-util/osc" [[ -n ${OBS_SERVICE_NAME} ]] || OBS_SERVICE_NAME=${PN/obs-service-/} [[ -n ${OPENSUSE_RELEASE} ]] || OBS_PROJECT="openSUSE:Tools" DESCRIPTION="Open Build Service client module - ${OBS_SERVICE_NAME} service" OBS_PACKAGE="obs-service-${OBS_SERVICE_NAME}" inherit obs-download SRC_URI="${OBS_URI}/${OBS_SERVICE_NAME}" SRC_URI+=" ${OBS_URI}/${OBS_SERVICE_NAME}.service" for i in ${ADDITIONAL_FILES}; do SRC_URI+=" ${OBS_URI}/${i}" done S="${WORKDIR}" # @FUNCTION: obs-service_src_configure # @DESCRIPTION: # Does nothing. Files are not compressed. obs-service_src_unpack() { debug-print-function ${FUNCNAME} "$@" } # @FUNCTION: obs-service_src_install # @DESCRIPTION: # Does the installation of the downloaded files. obs-service_src_install() { debug-print-function ${FUNCNAME} "$@" debug-print "Installing service \"${OBS_SERVICE_NAME}\"" exeinto /usr/lib/obs/service doexe ${DISTDIR}/${OBS_SERVICE_NAME} insinto /usr/lib/obs/service doins ${DISTDIR}/${OBS_SERVICE_NAME}.service if [[ -n ${ADDITIONAL_FILES} ]]; then debug-print "Installing following additional files:" debug-print " ${ADDITIONAL_FILES}" exeinto /usr/lib/obs/service/${OBS_SERVICE_NAME}.files for i in ${ADDITIONAL_FILES}; do doexe ${DISTDIR}/$i done fi } EXPORT_FUNCTIONS src_install src_unpack
signature.asc
Description: Digital signature