# 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.0.0 pkgrel=0 pkgdesc="An implementation of Ruby on the JVM" url="http://jruby.org" arch="noarch" 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" _arch="$CARCH" case "$CARCH" in arm*) _arch=arm;; x86) _arch=i386;; 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/* } build() { return 0 } 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" done } md5sums="fe26e6308d006d35eb613cdd47d1dc99 jruby-bin-9.1.0.0.tar.gz 7e6d8f6168f4a69109ea9d14e3e9f874 jruby" sha256sums="ff48c8eea61d0be93d807f56eda613350e91f598f6f4f71ef73ed53e7d0530ad jruby-bin-9.1.0.0.tar.gz 51794ecefb0d8fd3084ffb10867e2feffc9ccfadb45021af68520cf75fe58590 jruby" sha512sums="1ffdd352823436086ebfd37c03401a1f3a9cb8a8c5f75476af1f704c4764396a20f49ddb7fb7f0911e1608f7c88a332944330b8849d13e6badb170efb736dbe2 jruby-bin-9.1.0.0.tar.gz d0f19f791274f00f5b35a5e9a5dfe885d58330ebd3fd959f7325e545357497609403b5646988651265d08ac7a08cfec8b88ec260da558bcb0db623d9b8ce5a20 jruby"