| 1 | # Copyright 1999-2009 Gentoo Foundation |
1 | # Copyright 1999-2012 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/ruby-fakegem.eclass,v 1.29 2011/04/25 08:36:51 graaff Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/ruby-fakegem.eclass,v 1.33 2012/07/05 21:23:01 flameeyes Exp $ |
| 4 | # |
4 | |
| 5 | # @ECLASS: ruby-fakegem.eclass |
5 | # @ECLASS: ruby-fakegem.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Ruby herd <ruby@gentoo.org> |
7 | # Ruby herd <ruby@gentoo.org> |
| 8 | # |
8 | # @AUTHOR: |
| 9 | # Author: Diego E. Pettenò <flameeyes@gentoo.org> |
9 | # Author: Diego E. Pettenò <flameeyes@gentoo.org> |
| 10 | # |
|
|
| 11 | # Author: Alex Legler <a3li@gentoo.org> |
10 | # Author: Alex Legler <a3li@gentoo.org> |
| 12 | # |
|
|
| 13 | # @BLURB: An eclass for installing Ruby packages to behave like RubyGems. |
11 | # @BLURB: An eclass for installing Ruby packages to behave like RubyGems. |
| 14 | # @DESCRIPTION: |
12 | # @DESCRIPTION: |
| 15 | # This eclass allows to install arbitrary Ruby libraries (including Gems), |
13 | # This eclass allows to install arbitrary Ruby libraries (including Gems), |
| 16 | # providing integration into the RubyGems system even for "regular" packages. |
14 | # providing integration into the RubyGems system even for "regular" packages. |
| 17 | # |
|
|
| 18 | |
15 | |
| 19 | inherit ruby-ng |
16 | inherit ruby-ng |
| 20 | |
17 | |
| 21 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_NAME |
18 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_NAME |
| 22 | # @DESCRIPTION: |
19 | # @DESCRIPTION: |
| … | |
… | |
| 31 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_TASK_DOC |
28 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_TASK_DOC |
| 32 | # @DESCRIPTION: |
29 | # @DESCRIPTION: |
| 33 | # Specify the rake(1) task to run to generate documentation. |
30 | # Specify the rake(1) task to run to generate documentation. |
| 34 | # RUBY_FAKEGEM_TASK_DOC="rdoc" |
31 | # RUBY_FAKEGEM_TASK_DOC="rdoc" |
| 35 | |
32 | |
|
|
33 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_RECIPE_TEST |
|
|
34 | # @DESCRIPTION: |
|
|
35 | # Specify one of the default testing function for ruby-fakegem: |
|
|
36 | # - rake (default; see also RUBY_FAKEGEM_TASK_TEST) |
|
|
37 | # - rspec (calls ruby-ng_rspec, adds dev-ruby/rspec:2 to the dependencies) |
|
|
38 | # - none |
|
|
39 | # RUBY_FAKEGEM_RECIPE_TEST="rake" |
|
|
40 | |
| 36 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_TASK_TEST |
41 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_TASK_TEST |
| 37 | # @DESCRIPTION: |
42 | # @DESCRIPTION: |
| 38 | # Specify the rake(1) task used for executing tests. |
43 | # Specify the rake(1) task used for executing tests. Only valid |
|
|
44 | # if RUBY_FAKEGEM_RECIPE_TEST is set to "rake" (the default). |
| 39 | # RUBY_FAKEGEM_TASK_TEST="test" |
45 | # RUBY_FAKEGEM_TASK_TEST="test" |
| 40 | |
46 | |
| 41 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_DOCDIR |
47 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_DOCDIR |
| 42 | # @DESCRIPTION: |
48 | # @DESCRIPTION: |
| 43 | # Specify the directory under which the documentation is built; |
49 | # Specify the directory under which the documentation is built; |
| … | |
… | |
| 62 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_GEMSPEC |
68 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_GEMSPEC |
| 63 | # @DESCRIPTION: |
69 | # @DESCRIPTION: |
| 64 | # Filename of .gemspec file to install instead of generating a generic one. |
70 | # Filename of .gemspec file to install instead of generating a generic one. |
| 65 | # RUBY_FAKEGEM_GEMSPEC="" |
71 | # RUBY_FAKEGEM_GEMSPEC="" |
| 66 | |
72 | |
|
|
73 | # @ECLASS-VARIABLE: RUBY_FAKEGEM_EXTRAINSTALL |
|
|
74 | # @DESCRIPTION: |
|
|
75 | # List of files and directories relative to the top directory that also |
|
|
76 | # get installed. Some gems provide extra files such as version information, |
|
|
77 | # Rails generators, or data that needs to be installed as well. |
|
|
78 | # RUBY_FAKEGEM_EXTRAINSTALL="" |
|
|
79 | |
| 67 | RUBY_FAKEGEM_NAME="${RUBY_FAKEGEM_NAME:-${PN}}" |
80 | RUBY_FAKEGEM_NAME="${RUBY_FAKEGEM_NAME:-${PN}}" |
| 68 | RUBY_FAKEGEM_VERSION="${RUBY_FAKEGEM_VERSION:-${PV/_pre/.pre}}" |
81 | RUBY_FAKEGEM_VERSION="${RUBY_FAKEGEM_VERSION:-${PV/_pre/.pre}}" |
| 69 | RUBY_FAKEGEM_SUFFIX="${RUBY_FAKEGEM_SUFFIX:-}" |
82 | RUBY_FAKEGEM_SUFFIX="${RUBY_FAKEGEM_SUFFIX:-}" |
| 70 | |
83 | |
| 71 | RUBY_FAKEGEM_TASK_DOC="${RUBY_FAKEGEM_TASK_DOC-rdoc}" |
84 | RUBY_FAKEGEM_TASK_DOC="${RUBY_FAKEGEM_TASK_DOC-rdoc}" |
|
|
85 | RUBY_FAKEGEM_RECIPE_TEST="${RUBY_FAKEGEM_RECIPE_TEST-rake}" |
| 72 | RUBY_FAKEGEM_TASK_TEST="${RUBY_FAKEGEM_TASK_TEST-test}" |
86 | RUBY_FAKEGEM_TASK_TEST="${RUBY_FAKEGEM_TASK_TEST-test}" |
| 73 | |
87 | |
| 74 | RUBY_FAKEGEM_BINWRAP="${RUBY_FAKEGEM_BINWRAP-*}" |
88 | RUBY_FAKEGEM_BINWRAP="${RUBY_FAKEGEM_BINWRAP-*}" |
| 75 | |
89 | |
| 76 | if [[ ${RUBY_FAKEGEM_TASK_DOC} != "" ]]; then |
90 | if [[ ${RUBY_FAKEGEM_TASK_DOC} != "" ]]; then |
| … | |
… | |
| 80 | |
94 | |
| 81 | if [[ -n ${RUBY_FAKEGEM_DOCDIR} ]]; then |
95 | if [[ -n ${RUBY_FAKEGEM_DOCDIR} ]]; then |
| 82 | IUSE="$IUSE doc" |
96 | IUSE="$IUSE doc" |
| 83 | fi |
97 | fi |
| 84 | |
98 | |
| 85 | if [[ ${RUBY_FAKEGEM_TASK_TEST} != "" ]]; then |
99 | [[ ${RUBY_FAKEGEM_TASK_TEST} == "" ]] && RUBY_FAKEGEM_RECIPE_TEST="none" |
|
|
100 | |
|
|
101 | case ${RUBY_FAKEGEM_RECIPE_TEST} in |
|
|
102 | rake) |
| 86 | IUSE="$IUSE test" |
103 | IUSE+=" test" |
| 87 | ruby_add_bdepend "test? ( dev-ruby/rake )" |
104 | ruby_add_bdepend "test? ( dev-ruby/rake )" |
| 88 | fi |
105 | ;; |
|
|
106 | rspec) |
|
|
107 | IUSE+=" test" |
|
|
108 | ruby_add_bdepend "test? ( dev-ruby/rspec:2 )" |
|
|
109 | ;; |
|
|
110 | *) |
|
|
111 | RUBY_FAKEGEM_RECIPE_TEST="none" |
|
|
112 | ;; |
|
|
113 | esac |
| 89 | |
114 | |
| 90 | SRC_URI="mirror://rubygems/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}${RUBY_FAKEGEM_SUFFIX:+-${RUBY_FAKEGEM_SUFFIX}}.gem" |
115 | SRC_URI="mirror://rubygems/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}${RUBY_FAKEGEM_SUFFIX:+-${RUBY_FAKEGEM_SUFFIX}}.gem" |
| 91 | |
116 | |
| 92 | ruby_add_bdepend dev-ruby/rubygems |
117 | ruby_add_bdepend virtual/rubygems |
| 93 | ruby_add_rdepend dev-ruby/rubygems |
118 | ruby_add_rdepend virtual/rubygems |
| 94 | |
119 | |
| 95 | # @FUNCTION: ruby_fakegem_gemsdir |
120 | # @FUNCTION: ruby_fakegem_gemsdir |
| 96 | # @RETURN: Returns the gem data directory |
121 | # @RETURN: Returns the gem data directory |
| 97 | # @DESCRIPTION: |
122 | # @DESCRIPTION: |
| 98 | # This function returns the gems data directory for the ruby |
123 | # This function returns the gems data directory for the ruby |
| … | |
… | |
| 210 | # copies with different implementations; while for now we're using |
235 | # copies with different implementations; while for now we're using |
| 211 | # the same exact content, we might have differences in the future, |
236 | # the same exact content, we might have differences in the future, |
| 212 | # so better taking this into consideration. |
237 | # so better taking this into consideration. |
| 213 | local quoted_description=${DESCRIPTION//\"/\\\"} |
238 | local quoted_description=${DESCRIPTION//\"/\\\"} |
| 214 | cat - > $1 <<EOF |
239 | cat - > $1 <<EOF |
| 215 | # generated by ruby-fakegem.eclass $Revision: 1.29 $ |
240 | # generated by ruby-fakegem.eclass $Revision: 1.33 $ |
| 216 | Gem::Specification.new do |s| |
241 | Gem::Specification.new do |s| |
| 217 | s.name = "${RUBY_FAKEGEM_NAME}" |
242 | s.name = "${RUBY_FAKEGEM_NAME}" |
| 218 | s.version = "${RUBY_FAKEGEM_VERSION}" |
243 | s.version = "${RUBY_FAKEGEM_VERSION}" |
| 219 | s.summary = "${quoted_description}" |
244 | s.summary = "${quoted_description}" |
| 220 | s.homepage = "${HOMEPAGE}" |
245 | s.homepage = "${HOMEPAGE}" |
| … | |
… | |
| 260 | |
285 | |
| 261 | cat - > "${T}"/gembin-wrapper-${gembinary} <<EOF |
286 | cat - > "${T}"/gembin-wrapper-${gembinary} <<EOF |
| 262 | #!${rubycmd} |
287 | #!${rubycmd} |
| 263 | # This is a simplified version of the RubyGems wrapper |
288 | # This is a simplified version of the RubyGems wrapper |
| 264 | # |
289 | # |
| 265 | # Generated by ruby-fakegem.eclass $Revision: 1.29 $ |
290 | # Generated by ruby-fakegem.eclass $Revision: 1.33 $ |
| 266 | |
291 | |
| 267 | require 'rubygems' |
292 | require 'rubygems' |
| 268 | |
293 | |
| 269 | load Gem::default_path[-1] + "/gems/${relativegembinary}" |
294 | load Gem::default_path[-1] + "/gems/${relativegembinary}" |
| 270 | |
295 | |
| … | |
… | |
| 340 | |
365 | |
| 341 | # @FUNCTION: each_fakegem_test |
366 | # @FUNCTION: each_fakegem_test |
| 342 | # @DESCRIPTION: |
367 | # @DESCRIPTION: |
| 343 | # Run tests for the package for each ruby target if the test task is defined. |
368 | # Run tests for the package for each ruby target if the test task is defined. |
| 344 | each_fakegem_test() { |
369 | each_fakegem_test() { |
| 345 | local rubyflags= |
370 | case ${RUBY_FAKEGEM_RECIPE_TEST} in |
|
|
371 | rake) |
| 346 | ${RUBY} ${rubyflags} -S rake ${RUBY_FAKEGEM_TASK_TEST} || die "tests failed" |
372 | ${RUBY} -S rake ${RUBY_FAKEGEM_TASK_TEST} || die "tests failed" |
|
|
373 | ;; |
|
|
374 | rspec) |
|
|
375 | ruby-ng_rspec |
|
|
376 | ;; |
|
|
377 | none) |
|
|
378 | ewarn "each_fakegem_test called, but \${RUBY_FAKEGEM_RECIPE_TEST} is 'none'" |
|
|
379 | ;; |
|
|
380 | esac |
| 347 | } |
381 | } |
| 348 | |
382 | |
| 349 | if [[ ${RUBY_FAKEGEM_TASK_TEST} != "" ]]; then |
383 | if [[ ${RUBY_FAKEGEM_RECIPE_TEST} != none ]]; then |
| 350 | # @FUNCTION: each_ruby_test |
384 | # @FUNCTION: each_ruby_test |
| 351 | # @DESCRIPTION: |
385 | # @DESCRIPTION: |
| 352 | # Run the tests for this package. |
386 | # Run the tests for this package. |
| 353 | each_ruby_test() { |
387 | each_ruby_test() { |
| 354 | each_fakegem_test |
388 | each_fakegem_test |
| 355 | } |
389 | } |
| 356 | fi |
390 | fi |
| 357 | |
391 | |
| 358 | # @FUNCTION: each_fakegem_install |
392 | # @FUNCTION: each_fakegem_install |
| 359 | # @DESCRIPTION: |
393 | # @DESCRIPTION: |
| 360 | # Install the package for each ruby target. |
394 | # Install the package for each ruby target. |