diff options
author | Hans de Graaff <graaff@gentoo.org> | 2015-05-31 05:57:23 +0000 |
---|---|---|
committer | Hans de Graaff <graaff@gentoo.org> | 2015-05-31 05:57:23 +0000 |
commit | 2c8902ce11b8141812cb62d52a6f0352b91a5359 (patch) | |
tree | cccd220f6a53125ca88fad033c82165308de38d8 /eclass | |
parent | Version bump. (diff) | |
download | gentoo-2-2c8902ce11b8141812cb62d52a6f0352b91a5359.tar.gz gentoo-2-2c8902ce11b8141812cb62d52a6f0352b91a5359.tar.bz2 gentoo-2-2c8902ce11b8141812cb62d52a6f0352b91a5359.zip |
Add ruby-single.eclass to support packages that just need a ruby interpreter to be present. Refactor code common with ruby-ng.eclass into ruby-utils.eclass.
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/ChangeLog | 8 | ||||
-rw-r--r-- | eclass/ruby-ng.eclass | 48 | ||||
-rw-r--r-- | eclass/ruby-single.eclass | 77 | ||||
-rw-r--r-- | eclass/ruby-utils.eclass | 83 |
4 files changed, 172 insertions, 44 deletions
diff --git a/eclass/ChangeLog b/eclass/ChangeLog index e917f0ea24be..968379d5e192 100644 --- a/eclass/ChangeLog +++ b/eclass/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for eclass directory # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1629 2015/05/30 16:09:05 mpagano Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1630 2015/05/31 05:57:23 graaff Exp $ + + 31 May 2015; Hans de Graaff <graaff@gentoo.org> ruby-ng.eclass, + +ruby-single.eclass, +ruby-utils.eclass: + Add ruby-single.eclass to support packages that just need a ruby interpreter + to be present. Refactor code common with ruby-ng.eclass into + ruby-utils.eclass. 30 May 2015; Mike Pagano <mpagano@gentoo.org> kernel-2.eclass: Drop PDEPEND on virtual/dev-manager. See bug #550086. diff --git a/eclass/ruby-ng.eclass b/eclass/ruby-ng.eclass index 700d9e3de3c1..137bf0f14fac 100644 --- a/eclass/ruby-ng.eclass +++ b/eclass/ruby-ng.eclass @@ -1,6 +1,6 @@ -# Copyright 1999-2014 Gentoo Foundation +# Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/ruby-ng.eclass,v 1.56 2014/12/28 07:23:56 graaff Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/ruby-ng.eclass,v 1.57 2015/05/31 05:57:23 graaff Exp $ # @ECLASS: ruby-ng.eclass # @MAINTAINER: @@ -34,6 +34,7 @@ # * all_ruby_configure # @ECLASS-VARIABLE: USE_RUBY +# @DEFAULT_UNSET # @REQUIRED # @DESCRIPTION: # This variable contains a space separated list of targets (see above) a package @@ -72,7 +73,7 @@ # (e.g. selenium's firefox driver extension). When set this argument is # passed to "grep -E" to remove reporting of these shared objects. -inherit eutils java-utils-2 multilib toolchain-funcs +inherit eutils java-utils-2 multilib toolchain-funcs ruby-utils EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_test src_install pkg_setup @@ -99,46 +100,7 @@ esac # Set `comparator' and `version' to include a comparator (=, >=, etc.) and a # version string to the returned string ruby_implementation_depend() { - local rubypn= - local rubyslot= - - case $1 in - ruby18) - rubypn="dev-lang/ruby" - rubyslot=":1.8" - ;; - ruby19) - rubypn="dev-lang/ruby" - rubyslot=":1.9" - ;; - ruby20) - rubypn="dev-lang/ruby" - rubyslot=":2.0" - ;; - ruby21) - rubypn="dev-lang/ruby" - rubyslot=":2.1" - ;; - ruby22) - rubypn="dev-lang/ruby" - rubyslot=":2.2" - ;; - ree18) - rubypn="dev-lang/ruby-enterprise" - rubyslot=":1.8" - ;; - jruby) - rubypn="dev-java/jruby" - rubyslot="" - ;; - rbx) - rubypn="dev-lang/rubinius" - rubyslot="" - ;; - *) die "$1: unknown Ruby implementation" - esac - - echo "$2${rubypn}$3${rubyslot}" + _ruby_implementation_depend $1 } # @FUNCTION: ruby_samelib diff --git a/eclass/ruby-single.eclass b/eclass/ruby-single.eclass new file mode 100644 index 000000000000..226752109939 --- /dev/null +++ b/eclass/ruby-single.eclass @@ -0,0 +1,77 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/eclass/ruby-single.eclass,v 1.1 2015/05/31 05:57:23 graaff Exp $ + +# @ECLASS: ruby-single +# @MAINTAINER: +# Ruby team <ruby@gentoo.org> +# @AUTHOR: +# Author: Hans de Graaff <graaff@gentoo.org> +# Based on python-single-r1 by: Michał Górny <mgorny@gentoo.org> +# @BLURB: An eclass for Ruby packages not installed for multiple implementations. +# @DESCRIPTION: +# An eclass for packages which don't support being installed for +# multiple Ruby implementations. This mostly includes ruby-based +# scripts. + +case "${EAPI:-0}" in + 0|1|2|3) + die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" + ;; + 4|5) + ;; + *) + die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" + ;; +esac + +if [[ ! ${_RUBY_SINGLE} ]]; then + +inherit ruby-utils + +# @ECLASS-VARIABLE: USE_RUBY +# @DEFAULT_UNSET +# @REQUIRED +# @DESCRIPTION: +# This variable contains a space separated list of targets (see above) a package +# is compatible to. It must be set before the `inherit' call. There is no +# default. All ebuilds are expected to set this variable. + + +# @ECLASS-VARIABLE: RUBY_DEPS +# @DESCRIPTION: +# +# This is an eclass-generated Ruby dependency string for all +# implementations listed in USE_RUBY. Any one of the supported ruby +# targets will satisfy this dependency. +# +# Example use: +# @CODE +# RDEPEND="${RUBY_DEPS} +# dev-foo/mydep" +# BDEPEND="${RDEPEND}" +# @ +# +# Example value: +# @CODE +# || ( dev-lang/ruby:2.0 dev-lang/ruby:1.9 ) +# @CODE + +_ruby_single_implementations_depend() { + local depend + for _ruby_implementation in ${RUBY_TARGETS_PREFERENCE}; do + if [[ ${USE_RUBY} =~ ${_ruby_implementation} ]]; then + depend="${depend} $(_ruby_implementation_depend $_ruby_implementation)" + fi + done + echo "|| ( ${depend} )" +} + +_ruby_single_set_globals() { + RUBY_DEPS=$(_ruby_single_implementations_depend) +} +_ruby_single_set_globals + + +_RUBY_SINGLE=1 +fi diff --git a/eclass/ruby-utils.eclass b/eclass/ruby-utils.eclass new file mode 100644 index 000000000000..edf7a8c0d3f5 --- /dev/null +++ b/eclass/ruby-utils.eclass @@ -0,0 +1,83 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/eclass/ruby-utils.eclass,v 1.1 2015/05/31 05:57:23 graaff Exp $ + +# @ECLASS: ruby-utils.eclass +# @MAINTAINER: +# Ruby team <ruby@gentoo.org> +# @AUTHOR: +# Author: Hans de Graaff <graaff@gentoo.org> +# @BLURB: An eclass for supporting ruby scripts and bindings in non-ruby packages +# @DESCRIPTION: +# The ruby-utils eclass is designed to allow an easier installation of +# Ruby scripts and bindings for non-ruby packages. +# +# This eclass does not set any metadata variables nor export any phase +# functions. It can be inherited safely. + + +if [[ ! ${_RUBY_UTILS} ]]; then + + +# @ECLASS-VARIABLE: RUBY_TARGETS_PREFERENCE +# @DESCRIPTION: +# This variable lists all the known ruby targets in preference of use as +# determined by the ruby team. By using this ordering rather than the +# USE_RUBY mandated ordering we have more control over which ruby +# implementation will be installed first (and thus eselected). This will +# provide for a better first installation experience. + +# All RUBY_TARGETS +RUBY_TARGETS_PREFERENCE="ruby20 ruby19 " + +# All other active ruby targets +RUBY_TARGETS_PREFERENCE+="ruby21 ruby22 " + + +_ruby_implementation_depend() { + local rubypn= + local rubyslot= + + case $1 in + ruby18) + rubypn="dev-lang/ruby" + rubyslot=":1.8" + ;; + ruby19) + rubypn="dev-lang/ruby" + rubyslot=":1.9" + ;; + ruby20) + rubypn="dev-lang/ruby" + rubyslot=":2.0" + ;; + ruby21) + rubypn="dev-lang/ruby" + rubyslot=":2.1" + ;; + ruby22) + rubypn="dev-lang/ruby" + rubyslot=":2.2" + ;; + ree18) + rubypn="dev-lang/ruby-enterprise" + rubyslot=":1.8" + ;; + jruby) + rubypn="dev-java/jruby" + rubyslot="" + ;; + rbx) + rubypn="dev-lang/rubinius" + rubyslot="" + ;; + *) die "$1: unknown Ruby implementation" + esac + + echo "$2${rubypn}$3${rubyslot}" +} + + + +_RUBY_UTILS=1 +fi |