aboutsummaryrefslogtreecommitdiffstats
path: root/community/jruby/APKBUILD
blob: 6e5e899cfc0b7f1499fccedcef0604ae6c4897ef (plain) (blame)
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
146
147
148
149
150
151
152
153
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
# Note: This abuild excludes Truffle, because it's still experimental,
#       so it's probably not much usable for regular users.
pkgname=jruby
pkgver=9.1.2.0
pkgrel=1
pkgdesc="An implementation of Ruby on the JVM"
url="http://jruby.org"
# openjdk8 is currently built only for x86*
arch="x86 x86_64"
license="EPL GPL-2 LGPL-2.1 custom"
# libc6-compat: https://github.com/jnr/jnr-posix/issues/73
depends="$pkgname-libs java-jffi-native>=1.2 libc6-compat>=1.1.12-r5 openjdk8-jre-base"
makedepends="openjdk8 zip"
subpackages="$pkgname-irb $pkgname-minitest $pkgname-rake $pkgname-rdoc
	$pkgname-readline $pkgname-testunit $pkgname-libs"
# jruby (launch script): https://github.com/jruby/jruby/pull/1860
source="https://s3.amazonaws.com/jruby.org/downloads/$pkgver/$pkgname-bin-$pkgver.tar.gz
	jruby"
builddir="$srcdir/$pkgname-$pkgver"

_destdir="/usr/share/$pkgname"
_bindir="$_destdir/bin"
_rubydir="$_destdir/lib/ruby"
_gemdir="$_rubydir/gems/shared"
_stdlibdir="$_rubydir/stdlib"

case "$CARCH" in
arm*) _arch=arm;;
x86) _arch=i386;;
*) _arch="$CARCH";;
esac

prepare() {
	cd "$builddir/bin"
	rm *.bat *.dll *.exe
	rm jirb_swing jruby jruby+truffle jruby200.sh jruby.*

	cd "$builddir/lib/ruby/stdlib"
	rm -r win32 Win32API.rb
	find ./ffi/platform -type d -mindepth 1 ! -name "$_arch-linux" -exec rm -r {} +

	# Remove useless native binaries from JARs.
	zip -qd jline/jline/*/jline-*.jar META-INF/native/*
	zip -qd "$builddir"/lib/jruby.jar jni/*
}

package() {
	cd "$builddir"

	install -m644 -D "$builddir"/lib/jruby.jar \
		"$pkgdir"$_destdir/lib/jruby.jar || return 1

	install -m755 -D "$srcdir"/jruby "$pkgdir"$_bindir/jruby || return 1

	# Some of the below copied files will be moved to subpackages by split functions.

	install -dm755 "$pkgdir"$_rubydir
	cp -r lib/ruby/gems lib/ruby/stdlib "$pkgdir"$_destdir/lib/ruby/ || return 1

	cp bin/* "$pkgdir"$_bindir/ || return 1

	install -dm755 "$pkgdir"/usr/bin
	local file; for file in jgem jirb jruby jrubyc; do
		ln -sf $_bindir/$file "$pkgdir"/usr/bin/$file || return 1
	done

	install -m644 -D COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}

irb() {
	pkgdesc="Interactive Ruby console"
	depends="$pkgname $pkgname-readline"

	_mvgem irb
	_mv $_bindir/irb usr/bin/jirb
}

minitest() {
	pkgdesc="Ruby testing tool supporting TDD, BDD, mocking, and benchmarking"
	depends="$pkgname"

	_mvgem minitest
}

rake() {
	pkgdesc="Ruby based make-like utility."
	depends="$pkgname"

	_mvgem rake || return 1
	_mv $_bindir/rake
}

rdoc() {
	pkgdesc="Ruby documentation tool"
	depends="$pkgname $pkgname-irb"

	_mvgem rdoc || return 1
	_mv $_bindir/rdoc $_bindir/ri
}

readline() {
	pkgdesc="Readline support for JRuby"
	depends="$pkgname java-jansi-native"

	_mv $_stdlibdir/jline || return 1
	mv "$pkgdir"$_stdlibdir/readline* "$subpkgdir"$_stdlibdir/
}

testunit() {
	pkgdesc="Legacy xUnit family unit testing framework for Ruby."
	depends="$pkgname"

	_mvgem test-unit || return 1
	_mv $_stdlibdir/test $_bindir/testrb
}

libs() {
	pkgdesc="JRuby's standard libraries"
	depends=""

	_mv $_rubydir/gems $_rubydir/stdlib
}


_mv() {
	local path; for path in "$@"; do
		mkdir -p "$subpkgdir"/${path%/*}
		mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/ || return 1
	done
}

_mvgem() {
	local name="$1"
	local file

	cd "$pkgdir"
	for file in ./$_stdlibdir/$name.rb \
			./$_stdlibdir/$name \
			./$_gemdir/gems/$name-* \
			./$_gemdir/specifications/default/$name-*; do
		[ -e "$pkgdir"/$file ] || continue
		_mv "$file" || return 1
	done
}

md5sums="749bb917dde9666e365e12bbe776a5c2  jruby-bin-9.1.2.0.tar.gz
88df7ddd5bcd2ecec3ad526c6efd884d  jruby"
sha256sums="60598a465883ab4c933f805de4a7f280052bddc793b95735465619c03ca43f35  jruby-bin-9.1.2.0.tar.gz
0585f49f8712c3fea68ab3dca2b3939f6fe9a1a940cbdd3fc8462e25fd312cb1  jruby"
sha512sums="cc6b1e1a2907c128dd04edf9da11933a54bbed5e861ab6f0208505bca5aa2aa9d9acdd04bfde65824346fbb435584081fc8ec2e2e9a3aeea1bef8047915e0c61  jruby-bin-9.1.2.0.tar.gz
f2906a0136f437eaa119eae26d93b1a8e3411bc4ccee9453debf7a5d57bce767100b36a660db42184fd8398ff258455c3f2a8ef1082c907285b48d1b9b218bc2  jruby"