/[gentoo-x86]/eclass/gems.eclass
Gentoo

Contents of /eclass/gems.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.27 - (hide annotations) (download)
Sun Jul 5 16:46:05 2009 UTC (5 years, 2 months ago) by graaff
Branch: MAIN
Changes since 1.26: +3 -9 lines
Increase the dependency on rubygems to rubygems 1.3.1. This has been the stable version since January 2009, and we don't have older versions in the tree anymore. Two benefits: a) we can simplify the installation call again in this eclass, and b) we can be sure that "development" style dependencies of a gem will be ignored when installing it.

1 a3li 1.25 # Copyright 1999-2009 Gentoo Foundation
2 pythonhead 1.1 # Distributed under the terms of the GNU General Public License v2
3 graaff 1.27 # $Header: /var/cvsroot/gentoo-x86/eclass/gems.eclass,v 1.26 2009/05/23 12:22:06 flameeyes Exp $
4 a3li 1.25
5     # @ECLASS: gems.eclass
6     # @MAINTAINER:
7     # ruby@gentoo.org
8 pythonhead 1.1 #
9 a3li 1.25 # Original Author: Rob Cakebread <pythonhead@gentoo.org>
10 pythonhead 1.1 #
11 a3li 1.25 # @BLURB: Eclass helping with the installation of RubyGems
12     # @DESCRIPTION:
13     # See http://dev.gentoo.org/~pythonhead/ruby/gems.html for notes on using gems with Portage.
14    
15     # @ECLASS-VARIABLE: USE_RUBY
16     # @DESCRIPTION:
17     # Ruby versions the gem is compatible to. The eclass will install the gem for
18     # versions that are compatible and installed on the system. Format: rubyDD where
19     # DD is the two-digit version suffix (e.g.: USE_RUBY="ruby19" for Ruby 1.9.1)
20 pythonhead 1.1
21 nichoj 1.20 inherit eutils ruby
22 pythonhead 1.1
23 a3li 1.25 SRC_URI="mirror://rubyforge/gems/${P}.gem"
24 nichoj 1.18
25     IUSE="doc"
26 pythonhead 1.1
27 rbrown 1.21 DEPEND="
28 graaff 1.27 || ( >=dev-ruby/rubygems-1.3.1 =dev-lang/ruby-1.9* )
29 flameeyes 1.26 !<dev-ruby/rdoc-2
30 rbrown 1.21 "
31     RDEPEND="${DEPEND}"
32 pythonhead 1.1
33 a3li 1.25 # @FUNCTION: gems_location
34     # @USAGE: [Ruby binary]
35     # @DESCRIPTION:
36     # Exports GEMSDIR to the path Gems are installed to for the respective Ruby
37     # version
38 pythonhead 1.1 gems_location() {
39 a3li 1.25 local ruby_version
40     if [[ -z "$1" ]]; then
41     ruby_version="gem"
42     else
43     ruby_version=${1/ruby/gem}
44     fi
45     export GEMSDIR=$(/usr/bin/${ruby_version} env gemdir)
46 pythonhead 1.1 }
47    
48 a3li 1.25 # @FUNCTION: gems_src_unpack
49     # @DESCRIPTION:
50     # does nothing
51 pythonhead 1.1 gems_src_unpack() {
52 nichoj 1.20 true
53     }
54    
55 a3li 1.25 # @FUNCTION: gems_src_compile
56     # @DESCRIPTION:
57     # does nothing
58 nichoj 1.20 gems_src_compile() {
59 pythonhead 1.1 true
60     }
61    
62 a3li 1.25 # @FUNCTION: gems_src_install
63 flameeyes 1.26 # @DESCRIPTION:
64 a3li 1.25 # Installs the gem
65 pythonhead 1.1 gems_src_install() {
66 nichoj 1.20 local myconf
67 caleb 1.8 if use doc; then
68 nichoj 1.20 myconf="--rdoc --ri"
69 caleb 1.8 else
70 nichoj 1.20 myconf="--no-rdoc --no-ri"
71 pclouds 1.12 fi
72    
73 a3li 1.25 # I'm not sure how many ebuilds have correctly set USE_RUBY - let's assume
74     # ruby18 if they haven't, since even pure Ruby gems that have been written
75     # against 1.8 can explode under 1.9.
76     if [[ -z "${USE_RUBY}" ]]; then
77     einfo "QA notice"
78     einfo "The ebuild doesn't set USE_RUBY explicitly. Defaulting to ruby18."
79     einfo "Please check compatibility and set USE_RUBY respectively."
80 flameeyes 1.26
81 a3li 1.25 USE_RUBY="ruby18"
82     elif [[ "${USE_RUBY}" == "any" ]]; then
83     ewarn
84     ewarn "DEPRECATION NOTICE"
85     ewarn "USE_RUBY=\"any\" is deprecated. Please use explicit versions instead."
86     ewarn "Support will be removed in April 2009."
87     ewarn "For questions, please contact ruby@gentoo.org."
88     ewarn
89 graaff 1.22
90 a3li 1.25 # Get the installed versions.
91     USE_RUBY=`ls /usr/bin/ruby* | grep -E 'ruby1(8|9)' | sed -e 's@/usr/bin/@@g'`
92     fi
93 graaff 1.23
94 a3li 1.25 local num_ruby_slots=$(echo "${USE_RUBY}" | wc -w)
95 swegener 1.6
96 a3li 1.25 for ruby_version in ${USE_RUBY} ; do
97     # Check that we have the version installed
98     [[ -e "/usr/bin/${ruby_version/ruby/gem}" ]] || continue
99    
100     einfo "Installing for ${ruby_version}..."
101     gems_location ${ruby_version}
102     dodir ${GEMSDIR} || die
103    
104     if [[ -z "${MY_P}" ]]; then
105     [[ -z "${GEM_SRC}" ]] && GEM_SRC="${DISTDIR}/${P}"
106     spec_path="${D}/${GEMSDIR}/specifications/${P}.gemspec"
107     else
108     [[ -z "${GEM_SRC}" ]] && GEM_SRC="${DISTDIR}/${MY_P}"
109     spec_path="${D}/${GEMSDIR}/specifications/${MY_P}.gemspec"
110     fi
111    
112     # >=1.3.0 needs a path fix
113     local gte13=$(/usr/bin/${ruby_version} -rubygems -e 'puts Gem::RubyGemsVersion >= "1.3.0"')
114    
115 graaff 1.27 /usr/bin/${ruby_version} /usr/bin/gem install ${GEM_SRC} \
116 a3li 1.25 --version ${PV} ${myconf} --local --install-dir "${D}/${GEMSDIR}" \
117     --sandbox-fix --no-user-install || die "gem (>=1.3.0) install failed"
118    
119     if [[ -d "${D}/${GEMSDIR}/bin" ]] ; then
120     exeinto /usr/bin
121     for exe in "${D}"/${GEMSDIR}/bin/* ; do
122     if [ "$num_ruby_slots" -ge 2 ] ; then
123     # Ensures that the exe file gets run using the currently
124     # selected version of ruby.
125     sed -i -e 's@^#!/usr/bin/ruby.*$@#!/usr/bin/ruby@' "${exe}"
126     fi
127     doexe "${exe}" || die
128     done
129     fi
130     done
131 pythonhead 1.1 }
132    
133 pythonhead 1.2 EXPORT_FUNCTIONS src_unpack src_compile src_install

  ViewVC Help
Powered by ViewVC 1.1.20