blob: ce20a2aa76767fbe4e03b4472ce80247ac0c4933 (
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/jruby/jruby-1.0.3.ebuild,v 1.1 2007/12/17 13:58:17 caleb Exp $
JAVA_PKG_IUSE="doc source test"
inherit eutils java-pkg-2 java-ant-2
DESCRIPTION="Java based ruby interpreter implementation"
HOMEPAGE="http://jruby.codehaus.org/"
SRC_URI="http://dist.codehaus.org/${PN}/${PN}-src-${PV}.tar.gz"
LICENSE="|| ( CPL-1.0 GPL-2 LGPL-2.1 )"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86"
IUSE="bsf"
COMMON_DEPEND=">=dev-java/jline-0.9.91
=dev-java/asm-2.2*
dev-java/backport-util-concurrent"
RDEPEND=">=virtual/jre-1.4
${COMMON_DEPEND}"
DEPEND=">=virtual/jdk-1.4
bsf? ( >=dev-java/bsf-2.3 )
test? (
=dev-java/junit-3*
dev-java/ant-junit
dev-java/ant-trax
)
${COMMON_DEPEND}"
PDEPEND="dev-ruby/rubygems
>=dev-ruby/rake-0.7.3
>=dev-ruby/rspec-1.0.4"
RUBY_HOME=/usr/share/${PN}/lib/ruby
SITE_RUBY=${RUBY_HOME}/site_ruby
GEMS=${RUBY_HOME}/gems
pkg_setup() {
java-pkg-2_pkg_setup
if [[ -d ${SITE_RUBY} && ! -L ${SITE_RUBY} ]]; then
ewarn "dev-java/jruby now uses dev-lang/ruby's site_ruby directory by creating symlinks."
ewarn "${SITE_RUBY} is a directory right now, which will cause problems when being merged onto the filesystem."
fi
if [[ -d ${GEMS} && ! -L ${GEMS} ]]; then
ewarn "dev-java/jruby now uses dev-lang/ruby's gems directory by creating symlinks."
ewarn "${GEMS} is a directory right now, which will cause problems when being merged onto the filesystem."
fi
# only use javac, see http://jira.codehaus.org/browse/JRUBY-675
java-pkg_force-compiler javac
}
src_unpack() {
unpack ${A}
cd "${S}"
# prevents /root/.jruby being created at build time with
# FEATURES="-userpriv"
# see http://bugs.gentoo.org/show_bug.cgi?id=170058
epatch "${FILESDIR}"/${PN}-0.9.8-sandbox.patch
# search only lib, kills jdk1.4+ property which we set manually
java-ant_ignore-system-classes
cd "${S}"/lib
rm -v *.jar || die
java-pkg_jar-from --build-only ant-core ant.jar
java-pkg_jar-from asm-2.2 asm.jar
java-pkg_jar-from asm-2.2 asm-commons.jar
java-pkg_jar-from jline
java-pkg_jar-from backport-util-concurrent
use test && java-pkg_jar-from --build-only junit
# build-only because it's just BSF adapter classes and won't be used
# unless invoked from bsf itself, so no need to pollute classpath
if use bsf; then
java-pkg_jar-from --build-only bsf-2.3
else
cd "${S}"
# testcases depending on bsf
rm test/org/jruby/test/TestAdoptedThreading.java || die
rm test/org/jruby/javasupport/test/TestBSF.java || die
sed -i -e '/TestBSF.class/d' \
test/org/jruby/javasupport/test/JavaSupportTestSuite.java || die
sed -i -e '/TestAdoptedThreading.class/d' \
test/org/jruby/test/MainTestSuite.java || die
fi
}
src_compile() {
eant jar $(use_doc create-apidocs) -Djruby.home="${T}"/.jruby -Djdk1.4+=true
}
src_test() {
# needs bsf's runtime deps to work
use bsf && java-pkg_jar-from --into lib --with-dependencies bsf-2.3
ANT_TASKS="ant-junit ant-trax" eant test -Djdk1.4+=true
}
src_install() {
java-pkg_dojar lib/${PN}.jar
dodoc README docs/{*.txt,README.*,BeanScriptingFramework} || die
dohtml docs/getting_involved.html || die
if use doc; then
java-pkg_dojavadoc docs/api
fi
use source && java-pkg_dosrc src/org
java-pkg_dolauncher ${PN} \
--main 'org.jruby.Main' \
--java_args '-Djruby.base=/usr/share/jruby -Djruby.home=/usr/share/jruby -Djruby.lib=/usr/share/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh'
dobin "${S}"/bin/jirb
dodir "/usr/share/${PN}/lib"
insinto "/usr/share/${PN}/lib"
doins -r "${S}/lib/ruby"
# Share gems with regular ruby
rm -r "${D}"/usr/share/${PN}/lib/ruby/gems || die
dosym /usr/lib/ruby/gems /usr/share/${PN}/lib/ruby/gems || die
# Share site_ruby with regular ruby
rm -r "${D}"/usr/share/${PN}/lib/ruby/site_ruby || die
dosym /usr/lib/ruby/site_ruby /usr/share/${PN}/lib/ruby/site_ruby || die
}
pkg_preinst() {
local bad_directory=0
if [[ -d ${SITE_RUBY} && ! -L ${SITE_RUBY} ]]; then
eerror "${SITE_RUBY} is a directory. Please move this directory out of the way, and then emerge --resume."
bad_directory=1
fi
if [[ -d ${GEMS} && ! -L ${GEMS} ]]; then
eerror "${GEMS} is a directory. Please move this directory out of the way, and then emerge --resume."
bad_directory=1
fi
if [[ ! ${bad_directory} ]]; then
die "Please address the above errors, then emerge --resume."
fi
}
|