From ac3b07c99a209bfc39842235569d86c86cae280e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Hru=C5=A1eck=C3=BD?= Date: Fri, 16 Sep 2011 15:49:19 +0000 Subject: [PATCH] Two new eclasses to help with obs. --- eclass/obs-download.eclass | 41 ++++++++++++++++ eclass/obs-service.eclass | 97 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 eclass/obs-download.eclass create mode 100644 eclass/obs-service.eclass diff --git a/eclass/obs-download.eclass b/eclass/obs-download.eclass new file mode 100644 index 000000000000..abee81213421 --- /dev/null +++ b/eclass/obs-download.eclass @@ -0,0 +1,41 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/eclass/obs-download.eclass,v 1.1 2011/09/16 15:49:19 miska Exp $ + +# @ECLASS: obs-download.eclass +# @MAINTAINER: +# miska@gentoo.org +# @BLURB: Simplifies downloading from openSUSE Build Service. +# @DESCRIPTION: +# This eclass constructs OBS_URI based on provided project in openSUSE Build +# Service and package name. It can be used 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 it 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 project 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: OBS_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}" diff --git a/eclass/obs-service.eclass b/eclass/obs-service.eclass new file mode 100644 index 000000000000..430dc2b69c80 --- /dev/null +++ b/eclass/obs-service.eclass @@ -0,0 +1,97 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/eclass/obs-service.eclass,v 1.1 2011/09/16 15:49:19 miska Exp $ + +# @ECLASS: obs-service.eclass +# @MAINTAINER: +# miska@gentoo.org +# @BLURB: Reduces code duplication in the Open Build Service services. +# @DESCRIPTION: +# This eclass makes it easier to package Open Build Service services. Based on +# provided information it will set all needed 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 -- 2.26.2