summaryrefslogtreecommitdiff
blob: 981a1fe6b258a96e2edfb90411ba96612530c9ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-ruby/json/json-1.2.2.ebuild,v 1.6 2010/05/24 19:09:49 pacho Exp $

EAPI=2
USE_RUBY="ruby18"

RUBY_FAKEGEM_TASK_DOC="doc"
RUBY_FAKEGEM_EXTRADOC="CHANGES TODO README"
RUBY_FAKEGEM_DOCDIR="doc"

inherit ruby-fakegem

DESCRIPTION="A JSON implementation as a Ruby extension."
HOMEPAGE="http://json.rubyforge.org/"
LICENSE="|| ( Ruby GPL-2 )"
SRC_URI="mirror://rubygems/${P}.gem"

KEYWORDS="amd64 ~hppa ia64 ~ppc ~ppc64 sparc x86 ~amd64-linux ~x86-linux ~x86-solaris"
SLOT="0"
IUSE=""

RDEPEND="${RDEPEND}"
DEPEND="${DEPEND}
	dev-util/ragel"

ruby_add_bdepend "dev-ruby/rake
	test? ( virtual/ruby-test-unit )"

all_ruby_prepare() {
	# Avoid building the extension twice!
	sed -i \
		-e 's| => :compile_ext||' \
		-e 's| => :clean||' \
		Rakefile || die "rakefile fix failed"
}

each_ruby_compile() {
	if [[ $(basename ${RUBY}) != "jruby" ]]; then
		${RUBY} -S rake compile_ext || die "extension compile failed"
	fi
}

each_ruby_test() {
	# We have to set RUBYLIB because otherwise the tests will run
	# against the sytem-installed json; at the same time, we cannot
	# use the -I parameter because rake won't let it pass to the
	# testrb call that is executed down the road.

	RUBYLIB="${RUBYLIB}${RUBYLIB+:}lib:ext/json/ext" \
		${RUBY} -S rake test_pure || die "pure ruby tests failed"

	if [[ $(basename ${RUBY}) != "jruby" ]]; then
		RUBYLIB="${RUBYLIB}${RUBYLIB+:}lib:ext/json/ext" \
			${RUBY} -Ilib:ext/json/ext -S rake test_ext || die " ruby extension tests failed"
	fi
}

each_ruby_install() {
	each_fakegem_install
	if [[ $(basename ${RUBY}) != "jruby" ]]; then
		ruby_fakegem_newins ext/json/ext/generator.so lib/json/generator.so
		ruby_fakegem_newins ext/json/ext/parser.so lib/json/parser.so
	fi
}