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

Contents of /eclass/gems.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.35 - (show annotations) (download)
Mon Aug 22 04:46:31 2011 UTC (2 years, 10 months ago) by vapier
Branch: MAIN
Changes since 1.34: +3 -4 lines
fix random bugs in eclass documentation, and convert to new @AUTHOR tag

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

  ViewVC Help
Powered by ViewVC 1.1.20