# Contributor: Jakub Jirutka # Maintainer: Jakub Jirutka # 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"