# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ # @ECLASS: ruby-single.eclass # @MAINTAINER: # Ruby team # @AUTHOR: # Author: Hans de Graaff # Based on python-single-r1 by: Michał Górny # @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. Set USE_RUBY to include all the ruby targets that have been # verified to work and include the eclass. RUBY_DEPS is now available to # pull in the dependency on the requested ruby targets. # # @CODE # USE_RUBY="ruby20 ruby21" # inherit ruby-single # RDEPEND="${RUBY_DEPS}" # @CODE case "${EAPI:-0}" in 0|1|2|3) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;; 4|5|6) ;; *) 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. A dependency on # virtual/rubygems is also added to ensure that this is installed # in time for the package to use it. # # Example use: # @CODE # RDEPEND="${RUBY_DEPS} # dev-foo/mydep" # BDEPEND="${RDEPEND}" # @CODE # # Example value: # @CODE # || ( dev-lang/ruby:2.0 dev-lang/ruby:1.9 ) virtual/rubygems # @CODE # # The order of dependencies will change over time to best match the # current state of ruby targets, e.g. stable version first. _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} ) virtual/rubygems" } _ruby_single_set_globals() { RUBY_DEPS=$(_ruby_single_implementations_depend) } _ruby_single_set_globals _RUBY_SINGLE=1 fi