diff --git a/.gitignore b/.gitignore index e489731..89203af 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ jruby-src-1.1.6.tar.gz /jruby-src-1.6.2.tar.gz /olabini-yecht-0.0.2-0-g157cf13.tar.gz /jruby-src-1.6.3.tar.gz +/jruby-src-1.7.2.tar.gz +/olabini-yecht-0.0.2-0-g6009fd7.tar.gz diff --git a/add-classpath-to-jruby-start-script.patch b/add-classpath-to-jruby-start-script.patch deleted file mode 100644 index d18c95f..0000000 --- a/add-classpath-to-jruby-start-script.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- bin/jruby.sh.orig 2011-05-25 23:01:16.000000000 -0400 -+++ bin/jruby.sh 2011-05-25 23:02:32.000000000 -0400 -@@ -107,6 +107,13 @@ for j in "$JRUBY_HOME"/lib/jruby.jar "$J - JRUBY_ALREADY_ADDED=true - done - -+j=$(build-classpath objectweb-asm/asm objectweb-asm/asm-util \ -+ objectweb-asm/all objectweb-asm/asm-commons objectweb-asm/asm-analysis objectweb-asm/asm-tree \ -+ bytelist constantine jline jcodings joni jna jnr-posix jaffl jffi joda-time \ -+ yydebug nailgun emma jgrapht bsf jnr-netdb jruby yecht jruby-yecht ) -+ -+JRUBY_CP="$JRUBY_CP$CP_DELIMETER$j" -+ - - # ----- Set Up The System Classpath ------------------------------------------- - ---- bin/jruby.bash.orig 2011-06-02 10:13:58.158447113 -0400 -+++ bin/jruby.bash 2011-06-02 10:14:44.679447018 -0400 -@@ -149,6 +149,14 @@ if $cygwin; then - JRUBY_CP=`cygpath -p -w "$JRUBY_CP"` - fi - -+j=$(build-classpath objectweb-asm/asm objectweb-asm/asm-util \ -+ objectweb-asm/all objectweb-asm/asm-commons objectweb-asm/asm-analysis objectweb-asm/asm-tree \ -+ bytelist constantine jline jcodings joni jna jnr-posix jaffl jffi joda-time \ -+ yydebug nailgun emma jgrapht bsf jnr-netdb jruby yecht jruby-yecht ) -+ -+JRUBY_CP="$JRUBY_CP$CP_DELIMETER$j" -+ -+ - # ----- Set Up The System Classpath ------------------------------------------- - - if [ "$JRUBY_PARENT_CLASSPATH" != "" ]; then diff --git a/dont-include-jar-dependencies-in-build-xml.patch b/dont-include-jar-dependencies-in-build-xml.patch deleted file mode 100644 index 6eccea9..0000000 --- a/dont-include-jar-dependencies-in-build-xml.patch +++ /dev/null @@ -1,141 +0,0 @@ ---- build.xml.orig 2011-08-02 06:36:42.000000000 -0400 -+++ build.xml 2011-08-02 06:37:31.000000000 -0400 -@@ -331,42 +331,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -@@ -405,9 +369,6 @@ - - - -- -- -- - - - -@@ -431,42 +392,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -@@ -589,42 +514,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - diff --git a/jruby-add-classpath-to-start-script.patch b/jruby-add-classpath-to-start-script.patch new file mode 100644 index 0000000..7f30681 --- /dev/null +++ b/jruby-add-classpath-to-start-script.patch @@ -0,0 +1,33 @@ +--- bin/jruby.sh.orig 2011-05-25 23:01:16.000000000 -0400 ++++ bin/jruby.sh 2011-05-25 23:02:32.000000000 -0400 +@@ -107,6 +107,13 @@ for j in "$JRUBY_HOME"/lib/jruby.jar "$J + JRUBY_ALREADY_ADDED=true + done + ++j=$(build-classpath objectweb-asm4/asm objectweb-asm4/asm-util \ ++ objectweb-asm4/all objectweb-asm4/asm-commons objectweb-asm4/asm-analysis objectweb-asm4/asm-tree bcmail bcprov bsf bytelist \ ++ felix/org.osgi.core invokebinder jansi jcodings jffi jline2 jna jnr-constants jnr-enxio jnr-ffi jnr-netdb jnr-posix jnr-unixsocket \ ++ joda-time joni jzlib nailgun snakeyaml yydebug yecht jruby jruby-yecht 2>/dev/null) ++ ++JRUBY_CP="$JRUBY_CP$CP_DELIMETER$j" ++ + + # ----- Set Up The System Classpath ------------------------------------------- + +--- bin/jruby.bash.orig 2011-06-02 10:13:58.158447113 -0400 ++++ bin/jruby.bash 2011-06-02 10:14:44.679447018 -0400 +@@ -150,6 +150,14 @@ if $cygwin; then + JRUBY_CP=`cygpath -p -w "$JRUBY_CP"` + fi + ++j=$(build-classpath objectweb-asm4/asm objectweb-asm4/asm-util \ ++ objectweb-asm4/all objectweb-asm4/asm-commons objectweb-asm4/asm-analysis objectweb-asm4/asm-tree bcmail bcprov bsf bytelist \ ++ felix/org.osgi.core invokebinder jansi jcodings jffi jline2 jna jnr-constants jnr-enxio jnr-ffi jnr-netdb jnr-posix jnr-unixsocket \ ++ joda-time joni jzlib nailgun snakeyaml yydebug yecht jruby jruby-yecht 2>/dev/null) ++ ++JRUBY_CP="$JRUBY_CP$CP_DELIMETER$j" ++ ++ + # ----- Set Up The System Classpath ------------------------------------------- + + if [ "$JRUBY_PARENT_CLASSPATH" != "" ]; then diff --git a/jruby-dont-include-jar-dependencies-in-build-xml.patch b/jruby-dont-include-jar-dependencies-in-build-xml.patch new file mode 100644 index 0000000..16f4490 --- /dev/null +++ b/jruby-dont-include-jar-dependencies-in-build-xml.patch @@ -0,0 +1,52 @@ +--- build.xml.orig 2012-08-07 09:24:18.000000000 +0200 ++++ build.xml 2012-09-04 11:53:49.018300253 +0200 +@@ -342,48 +342,7 @@ + + + +- ++ + + + diff --git a/jruby-dont-use-jruby-until-build-is-complete.patch b/jruby-dont-use-jruby-until-build-is-complete.patch deleted file mode 100644 index d50cf42..0000000 --- a/jruby-dont-use-jruby-until-build-is-complete.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- build.xml.orig 2011-06-02 09:41:54.176447001 -0400 -+++ build.xml 2011-06-02 09:42:13.749447001 -0400 -@@ -353,7 +353,6 @@ - - - -- - - - -@@ -419,7 +418,6 @@ - - - -- - - - diff --git a/jruby-executable-add-fedora-java-opts-stub.patch b/jruby-executable-add-fedora-java-opts-stub.patch new file mode 100644 index 0000000..c3d1414 --- /dev/null +++ b/jruby-executable-add-fedora-java-opts-stub.patch @@ -0,0 +1,22 @@ +--- bin/jruby.bash.orig 2012-10-04 08:32:06.000000000 +0200 ++++ bin/jruby.bash 2012-10-04 08:36:28.936261891 +0200 +@@ -305,7 +305,7 @@ + # Put the ruby_args back into the position arguments $1, $2 etc + set -- "${ruby_args[@]}" + +-JAVA_OPTS="$JAVA_OPTS $JAVA_MEM $JAVA_MEM_MIN $JAVA_STACK" ++JAVA_OPTS="$FEDORA_JAVA_OPTS $JAVA_OPTS $JAVA_MEM $JAVA_MEM_MIN $JAVA_STACK" + + JFFI_BOOT="" + if [ -d "$JRUBY_HOME/lib/native/" ]; then +--- bin/jruby.sh.orig 2012-10-04 08:32:06.000000000 +0200 ++++ bin/jruby.sh 2012-10-04 08:36:38.052228561 +0200 +@@ -253,7 +253,7 @@ + # Put the ruby_args back into the position arguments $1, $2 etc + set -- "${ruby_args}" + +-JAVA_OPTS="$JAVA_OPTS $JAVA_VM $JAVA_MEM $JAVA_STACK" ++JAVA_OPTS="$FEDORA_JAVA_OPTS $JAVA_OPTS $JAVA_VM $JAVA_MEM $JAVA_STACK" + + JFFI_BOOT="" + if [ -d "$JRUBY_HOME/lib/native/" ]; then diff --git a/jruby-no-jar-bundling.patch b/jruby-no-jar-bundling.patch new file mode 100644 index 0000000..6970054 --- /dev/null +++ b/jruby-no-jar-bundling.patch @@ -0,0 +1,26 @@ +--- build.xml.orig ++++ build.xml +@@ -372,7 +365,6 @@ + + + +- + + + +@@ -397,15 +390,6 @@ + + + +- +- +- +- +- +- +- +- +- + + + diff --git a/jruby-raise-written-chunk-in-spec-to-block.patch b/jruby-raise-written-chunk-in-spec-to-block.patch new file mode 100644 index 0000000..01087d0 --- /dev/null +++ b/jruby-raise-written-chunk-in-spec-to-block.patch @@ -0,0 +1,21 @@ +commit 20cd74104cd4e50100f5bf87bac9e7d255af954f +Author: Bohuslav Kabrda +Date: Tue Feb 26 14:53:51 2013 +0100 + + Update spec/regression/JRUBY-5122_nonblocking_io_spec.rb + + Raise socket_channel_might_block to also block on Fedora 19, OpenJDK 7.0. + +diff --git a/spec/regression/JRUBY-5122_nonblocking_io_spec.rb b/spec/regression/JRUBY-5122_nonblocking_io_spec.rb +index 10bdf8c..dc0b269 100644 +--- a/spec/regression/JRUBY-5122_nonblocking_io_spec.rb ++++ b/spec/regression/JRUBY-5122_nonblocking_io_spec.rb +@@ -214,7 +214,7 @@ describe "nonblocking IO blocking behavior: JRUBY-5122" do + # Oracle's build block with > 131072 (2**17) + # On a Windows 7(64) box: + # Oracle's build does not block (use memory till OOMException) +- SOCKET_CHANNEL_MIGHT_BLOCK = "a" * (65536 * 4) ++ SOCKET_CHANNEL_MIGHT_BLOCK = "a" * (219463 * 4) + + it "should not block for write" do + 100.times do # for acceleration; it failed w/o wait_for_accepted call diff --git a/jruby-remove-builtin-yecht-jar.patch b/jruby-remove-builtin-yecht-jar.patch new file mode 100644 index 0000000..2488f3b --- /dev/null +++ b/jruby-remove-builtin-yecht-jar.patch @@ -0,0 +1,11 @@ +--- src/org/jruby/Ruby.java.orig 2012-08-07 09:24:18.000000000 +0200 ++++ src/org/jruby/Ruby.java 2012-09-04 12:04:26.348906376 +0200 +@@ -1589,7 +1589,7 @@ + addLazyBuiltin("tempfile.rb", "tempfile", "org.jruby.ext.tempfile.TempfileLibrary"); + addLazyBuiltin("fcntl.rb", "fcntl", "org.jruby.ext.fcntl.FcntlLibrary"); + addLazyBuiltin("rubinius.jar", "rubinius", "org.jruby.ext.rubinius.RubiniusLibrary"); +- addLazyBuiltin("yecht.jar", "yecht", "YechtService"); ++ addLazyBuiltin("jruby-yecht.jar", "yecht", "YechtService"); + + if (is1_9()) { + addLazyBuiltin("mathn/complex.jar", "mathn/complex", "org.jruby.ext.mathn.Complex"); diff --git a/jruby-remove-rubygems-dirs-definition.patch b/jruby-remove-rubygems-dirs-definition.patch new file mode 100644 index 0000000..491bd6e --- /dev/null +++ b/jruby-remove-rubygems-dirs-definition.patch @@ -0,0 +1,28 @@ +--- rubygems/defaults/jruby.rb.orig 2012-10-04 14:00:24.527540649 +0200 ++++ rubygems/defaults/jruby.rb 2012-10-04 14:01:00.880408183 +0200 +@@ -22,25 +22,6 @@ + end + end + +- # Default home directory path to be used if an alternate value is not +- # specified in the environment. +- # +- # JRuby: We don't want gems installed in lib/jruby/gems, but rather +- # to preserve the old location: lib/ruby/gems. +- def self.default_dir +- dir = RbConfig::CONFIG["default_gem_home"] +- dir ||= File.join(ConfigMap[:libdir], 'ruby', 'gems', 'shared') +- dir +- end +- +- # Default locations for RubyGems' .rb and bin files +- def self.default_rubygems_dirs +- [ +- File.join(ConfigMap[:libdir], 'ruby', 'shared'), +- ConfigMap[:bindir] +- ] +- end +- + ## + # Is this a windows platform? + # diff --git a/jruby-remove-version-from-jarjar-jar-in-specs.patch b/jruby-remove-version-from-jarjar-jar-in-specs.patch new file mode 100644 index 0000000..1f301b5 --- /dev/null +++ b/jruby-remove-version-from-jarjar-jar-in-specs.patch @@ -0,0 +1,11 @@ +--- spec/java_integration/ant/task_spec.rb.orig 2013-01-04 18:19:00.000000000 +0100 ++++ spec/java_integration/ant/task_spec.rb 2013-02-26 12:33:14.679301003 +0100 +@@ -11,7 +11,7 @@ + property :name => "jar", :value => "spec-test.jar" + property :name => "dir", :value => "build" + taskdef :name => "jarjar", :classname => "com.tonicsystems.jarjar.JarJarTask", +- :classpath => "${basedir}/build_lib/jarjar-1.0.jar" ++ :classpath => "${basedir}/build_lib/jarjar.jar" + + target :jar do + jar :destfile => "${jar}", :compress => "true", :index => "true" do diff --git a/jruby-skip-network-tests.patch b/jruby-skip-network-tests.patch new file mode 100644 index 0000000..e4c5dd0 --- /dev/null +++ b/jruby-skip-network-tests.patch @@ -0,0 +1,54 @@ +--- test/test_socket.rb.orig 2012-08-07 09:24:18.000000000 +0200 ++++ test/test_socket.rb 2012-09-07 10:02:21.655972716 +0200 +@@ -12,6 +12,7 @@ + # Should this work on windows? JRUBY-6665 + if !WINDOWS + def test_multicast_send_and_receive ++ return + multicast_addr = "225.4.5.6" + port = 6789 + multicast_msg = "Hello from automated JRuby test suite" +--- test/test_timeout.rb.orig 2013-02-27 10:24:52.000000000 +0100 ++++ test/test_timeout.rb 2013-02-27 10:27:38.529474732 +0100 +@@ -93,6 +93,7 @@ + + # JRUBY-3928: Net::HTTP doesn't timeout as expected when using timeout.rb + def test_timeout_socket_connect ++ return + assert_raises(Timeout::Error) do + timeout(0.1) do + TCPSocket.new('google.com', 12345) +--- test/externals/ruby1.9/openssl/test_integration.rb.orig 2013-01-04 18:19:01.000000000 +0100 ++++ test/externals/ruby1.9/openssl/test_integration.rb 2013-02-27 11:48:16.506902193 +0100 +@@ -26,6 +26,7 @@ + # Warning - this test actually uses the internet connection. + # If there is no connection, it will fail. + def test_ca_path_name ++ return + uri = URI.parse('https://www.amazon.com') + http = Net::HTTP.new(uri.host, uri.port) + http.verify_mode = OpenSSL::SSL::VERIFY_PEER +@@ -39,6 +40,7 @@ + # Warning - this test actually uses the internet connection. + # If there is no connection, it will fail. + def test_ssl_verify ++ return + uri = URI.parse('https://www.amazon.com/') + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = true +@@ -72,6 +74,7 @@ + # Warning - this test actually uses the internet connection. + # If there is no connection, it will fail. + def test_pathlen_does_not_appear ++ return + uri = URI.parse('https://www.paypal.com/') + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = true +@@ -90,6 +93,7 @@ + # about illegal_parameter when + # it can't use the cipher string correctly + def test_cipher_strings ++ return + socket = TCPSocket.new('rubyforge.org', 443) + ctx = OpenSSL::SSL::SSLContext.new + ctx.cert_store = OpenSSL::X509::Store.new diff --git a/jruby-yecht-only-build-bindings.patch b/jruby-yecht-only-build-bindings.patch new file mode 100644 index 0000000..3af624a --- /dev/null +++ b/jruby-yecht-only-build-bindings.patch @@ -0,0 +1,45 @@ +Only in ./build/classes/ruby: org +Only in ./build/classes/ruby: YechtService.class +diff -supr build.xml.orig build.xml +--- build.xml.orig 2009-07-26 06:04:48.000000000 -0400 ++++ build.xml 2011-03-14 16:22:29.000000000 -0400 +@@ -19,6 +19,7 @@ + + + ++ + + + +@@ -101,7 +102,7 @@ + + + +- ++ + + + +@@ -111,10 +112,6 @@ + + + +- +- +- +- + + + +diff -supr default.build.properties.orig ./default.build.properties +--- default.build.properties.orig 2009-07-26 06:04:48.000000000 -0400 ++++ ./default.build.properties 2011-03-14 16:17:30.000000000 -0400 +@@ -14,4 +14,5 @@ api.docs.dir=${docs.dir}/api + release.dir=rels + javac.version=1.5 + ruby.src.dir=ext/ruby/src/java +-jruby.lib=../jruby/lib ++jruby.lib=../lib ++build_lib=../build_lib +Only in ../../../yecht/olabini-yecht-157cf13/lib: yecht-0.0.2.jar +Only in ./lib: yecht-ruby-0.0.2.jar diff --git a/jruby.spec b/jruby.spec index 2e431ea..715de3c 100644 --- a/jruby.spec +++ b/jruby.spec @@ -1,84 +1,180 @@ -%global yecht_commitversion 157cf13 -%global yecht_dlversion 0.0.2-0-g157cf13 +%global jruby_vendordir %{_datadir}/%{name}/lib +%global jruby_sitedir %{_prefix}/local/share/%{name}/lib +%global rubygems_dir %{_datadir}/rubygems + +%global yecht_commitversion 6009fd7 +%global yecht_dlversion 0.0.2-0-g%{yecht_commitversion} %global yecht_cluster olabini +#%%global preminorver dev +%global release 1 +%global enable_check 1 + +%global jar_deps \\\ + objectweb-asm4/asm \\\ + objectweb-asm4/asm-analysis \\\ + objectweb-asm4/asm-commons \\\ + objectweb-asm4/asm-tree \\\ + objectweb-asm4/asm-util \\\ + bcprov \\\ + bcmail \\\ + bsf \\\ + bytelist \\\ + commons-logging \\\ + coro-mock \\\ + invokebinder \\\ + jansi \\\ + jarjar \\\ + jcodings \\\ + jffi \\\ + jline2 \\\ + jna \\\ + jnr-constants \\\ + jnr-enxio \\\ + jnr-ffi \\\ + jnr-netdb \\\ + jnr-posix \\\ + jnr-unixsocket \\\ + joda-time \\\ + joni \\\ + junit \\\ + junit4 \\\ + jzlib \\\ + nailgun \\\ + felix/org.osgi.core \\\ + snakeyaml \\\ + yecht \\\ + yydebug + + Name: jruby -Version: 1.6.3 -Release: 5%{?dist} +Version: 1.7.2 +Release: %{?preminorver:0.}%{release}%{?preminorver:.%{preminorver}}%{?dist} Summary: Pure Java implementation of the Ruby interpreter Group: Development/Languages -License: (CPL or GPLv2+ or LGPLv2+) and ASL 1.1 and MIT and Ruby +# (CPL or GPLv2+ or LGPLv2+) - JRuby itself +# BSD - some files under lib/ruby/shared +# (GPLv2 or Ruby) - Ruby 1.8 stdlib +# (BSD or Ruby) - Ruby 1.9 stdlib +License: (CPL or GPLv2+ or LGPLv2+) and BSD and (GPLv2 or Ruby) and (BSD or Ruby) URL: http://jruby.org/ BuildArch: noarch -Source0: http://jruby.org.s3.amazonaws.com/downloads/%{version}/jruby-src-%{version}.tar.gz +%if 0%{?preminorver:1} +Source0: https://github.com/downloads/%{name}/%{name}/%{name}-src-%{version}.%{preminorver}.tar.gz +%else +Source0: http://jruby.org.s3.amazonaws.com/downloads/%{version}/%{name}-src-%{version}.tar.gz +%endif Source1: http://github.com/%{yecht_cluster}/yecht/tarball/0.0.2/%{yecht_cluster}-yecht-%{yecht_dlversion}.tar.gz -Patch1: add-classpath-to-jruby-start-script.patch -Patch2: dont-include-jar-dependencies-in-build-xml.patch -Patch3: remove-invoke-dynamic-support.patch -Patch5: jruby-dont-use-jruby-until-build-is-complete.patch - -# this patch contains the following upstream change +### Patches for JRuby itself +# Adds $FEDORA_JAVA_OPTS, that is dynamically replaced by Fedora specific paths from the specfile +# This way we can use macros for the actual locations and not hardcode them in the patch +Patch0: jruby-executable-add-fedora-java-opts-stub.patch +# Adds all the required jars to boot classpath +Patch1: jruby-add-classpath-to-start-script.patch +# Following to patches make sure that we bundle no jars +Patch2: jruby-dont-include-jar-dependencies-in-build-xml.patch +Patch3: jruby-no-jar-bundling.patch +# this patch contained the following upstream change # https://github.com/jruby/jruby/commit/6c1d41aedfde705c969abf10cf5384e2be69f10a -Patch6: remove-builtin-yecht-jar.patch - -Patch7: yecht-only-build-bindings.patch +# -- now it changes the change to be ok downstream :) +Patch4: jruby-remove-builtin-yecht-jar.patch +# We only want to build bindings, yecht is a package on its own +Patch5: jruby-yecht-only-build-bindings.patch +# We don't want any directories defined by JRuby, everything is taken from Fedora's rubygems +Patch6: jruby-remove-rubygems-dirs-definition.patch + +### Patches for tests +# UDP multicast test hangs +# http://jira.codehaus.org/browse/JRUBY-6758 +Patch100: jruby-skip-network-tests.patch +# Fedora has different name for jarjar.jar => downstream only +Patch101: jruby-remove-version-from-jarjar-jar-in-specs.patch +# https://github.com/jruby/jruby/pull/551/files +Patch102: jruby-raise-written-chunk-in-spec-to-block.patch +BuildRequires: ant >= 1.6 +BuildRequires: ant-junit BuildRequires: java-devel >= 1.6 BuildRequires: jpackage-utils >= 1.5 -BuildRequires: ant >= 1.6 -BuildRequires: objectweb-asm + +BuildRequires: apache-commons-logging +BuildRequires: bouncycastle +BuildRequires: bouncycastle-mail +BuildRequires: bsf BuildRequires: bytelist >= 1.0.8 -BuildRequires: jnr-constants -BuildRequires: jline -BuildRequires: jcodings >= 1.0.5 -BuildRequires: joni >= 1.1.2 +BuildRequires: coro-mock +BuildRequires: felix-osgi-core >= 1.4.0 +BuildRequires: invokebinder +BuildRequires: jansi +BuildRequires: jarjar +BuildRequires: jline2 >= 2.7 +BuildRequires: jffi >= 1.0.10 BuildRequires: jna +BuildRequires: jnr-constants +BuildRequires: jnr-enxio BuildRequires: jnr-ffi >= 0.5.10 -BuildRequires: jffi >= 1.0.10 -BuildRequires: joda-time -BuildRequires: yydebug -BuildRequires: nailgun -BuildRequires: emma -BuildRequires: jgrapht -BuildRequires: bsf BuildRequires: jnr-netdb -BuildRequires: yecht -BuildRequires: jakarta-commons-logging -BuildRequires: jarjar -BuildRequires: ant-junit +BuildRequires: jnr-posix >= 1.1.8 +BuildRequires: jnr-unixsocket +BuildRequires: jzlib +BuildRequires: joda-time +BuildRequires: joni >= 1.1.2 BuildRequires: junit4 -BuildRequires: felix-osgi-core >= 1.4.0 +BuildRequires: jzlib +BuildRequires: nailgun +BuildRequires: objectweb-asm4 BuildRequires: snakeyaml -BuildRequires: jnr-posix >= 1.1.8 +BuildRequires: yydebug +BuildRequires: yecht # these normally get installed as gems during the test process -BuildRequires: rubygem(rake) -BuildRequires: rubygem(rspec-core) -BuildRequires: rubygem(rspec-mocks) -BuildRequires: rubygem(rspec-expectations) -BuildRequires: rubygem(ruby-debug) -BuildRequires: rubygem(ruby-debug-base) -BuildRequires: rubygem(columnize) - -Requires: objectweb-asm +# TODO: create a condition to be able to test with system gems +# generally, requiring MRI during JRuby build would be nice to avoid +#BuildRequires: rubygem(rake) +#BuildRequires: rubygem(rspec-core) +#BuildRequires: rubygem(rspec-mocks) +#BuildRequires: rubygem(rspec-expectations) +#BuildRequires: rubygem(ruby-debug) +#BuildRequires: rubygem(ruby-debug-base) +#BuildRequires: rubygem(columnize) + +# Java Requires +Requires: apache-commons-logging +Requires: bouncycastle +Requires: bouncycastle-mail +Requires: bsf Requires: bytelist >= 1.0.8 -Requires: jnr-constants -Requires: jline +Requires: felix-osgi-core >= 1.4.0 +Requires: invokebinder +Requires: jansi Requires: jcodings >= 1.0.1 -Requires: joni >= 1.1.2 +Requires: jffi >= 1.0.10 +Requires: jline2 >= 2.7 Requires: jna +Requires: jnr-constants +Requires: jnr-enxio Requires: jnr-ffi >= 0.5.10 -Requires: jffi >= 1.0.10 -Requires: joda-time -Requires: yydebug -Requires: nailgun -Requires: emma -Requires: jgrapht -Requires: bsf Requires: jnr-netdb -Requires: jruby-yecht Requires: jnr-posix >= 1.1.8 +Requires: jnr-unixsocket +Requires: joda-time +Requires: joni >= 1.1.2 +Requires: jruby-yecht +Requires: jzlib +Requires: nailgun +Requires: objectweb-asm4 +Requires: snakeyaml +Requires: yydebug +# Other Requires +Requires: jpackage-utils +Requires: rubygems +Requires: rubypick + +Provides: ruby(release) = 1.9.1 +Provides: ruby(release) = 1.8 +# For rubypick +Provides: ruby(runtime_executable) %description JRuby is a 100% Java implementation of the Ruby programming language. @@ -98,6 +194,7 @@ Javadoc for %{name}. # http://jira.codehaus.org/browse/JRUBY-5352 %package yecht Summary: Bindings used to load yecht in jruby +License: MIT Group: Development/Libraries BuildRequires: yecht Requires: yecht @@ -106,63 +203,65 @@ Requires: %{name} = %{version}-%{release} %description yecht The bindings for the yecht library for internal use in jruby +%package devel +Summary: JRuby development environment +Group: Development/Languages +Requires: jruby +Requires: jpackage-utils + +%description devel +Macros for building JRuby-specific libraries. + %prep -%setup -q -n %{name}-%{version} +%setup -q -n %{name}-%{version}%{?preminorver:.%{preminorver}} + +%patch0 -p0 %patch1 -p0 %patch2 -p0 %patch3 -p0 -%patch5 -p0 -%patch6 -p0 +%patch4 -p0 + +%patch100 -p0 +%patch101 -p0 +%patch102 -p1 tar xzvf %{SOURCE1} mv %{yecht_cluster}-yecht-%{yecht_commitversion} yecht -# delete all embedded jars -find -name *.jar -exec rm -f '{}' \; +# delete all embedded jars - don't delete test jars! +find -path './test' -prune -o -path './spec' -prune -o -type f -name '*.jar' -exec rm -f '{}' \; # delete windows specific files find -name *.exe -exec rm -f '{}' \; find -name *.dll -exec rm -f '{}' \; -# delete prebuilt gems in the build dir -rm build_lib/*.gem - # delete all vcs files find -name .gitignore -exec rm -f '{}' \; find -name .cvsignore -exec rm -f '{}' \; # replace them with symlinks -build-jar-repository -s -p build_lib \ - objectweb-asm/asm objectweb-asm/asm-util \ - objectweb-asm/asm-commons objectweb-asm/asm-analysis objectweb-asm/asm-tree \ - bytelist constantine jline jcodings joni jna jaffl jffi joda-time felix/org.osgi.core \ - yydebug nailgun emma jnr-posix jgrapht bsf jnr-netdb commons-logging jarjar junit junit4 \ - yecht snakeyaml emma_ant +# these sorted to able to check them against new releases easily +# don't forget to also change these in jruby-add-classpath-to-start-script.patch +build-jar-repository -s -p build_lib %{jar_deps} # required as jruby was shipping the core java tools jar -ln -s /usr/lib/jvm/java/lib/tools.jar build_lib/apt-mirror-api.jar +ln -s %{_prefix}/lib/jvm/java/lib/tools.jar build_lib/apt-mirror-api.jar # remove hidden .document files find lib/ruby/ -name '*.document' -exec rm -f '{}' \; -# We don't have source to support accessing the jar this accesses -rm src/org/jruby/runtime/invokedynamic/InvokeDynamicSupport.java -rm src/org/jruby/compiler/impl/InvokeDynamicInvocationCompiler.java - # change included stdlib to use jruby rather than some arcane ruby install -#find lib/ruby/ -name '*.rb' -exec sed --in-place "s|^#!/usr/local/bin/ruby|#!/usr/bin/env jruby|" '{}' \; +find lib/ruby/ -name '*.rb' -exec sed --in-place "s|^#!/usr/local/bin/ruby|#!/usr/bin/env jruby|" '{}' \; # lib/ruby scripts shouldn't contain shebangs as they are not executable on their own find lib/ruby/ -name '*.rb' -exec sed --in-place "s|^#!/usr/local/bin/ruby||" '{}' \; find lib/ruby/ -name '*.rb' -exec sed --in-place "s|^#!/usr/bin/env ruby||" '{}' \; -# this file needs to be marked as executable for one of the tests to pass -chmod +x test/org/jruby/util/shell_launcher_test - # the yecht library needs to be accessible from ruby pushd yecht mkdir -p lib/ build/classes/ruby -%patch7 -p0 +%patch5 -p0 +popd %build ant @@ -173,20 +272,47 @@ rm bin/*.bat pushd yecht ant ext-ruby-jar +popd %install install -d -m 755 %{buildroot}%{_datadir} install -p -d -m 755 %{buildroot}%{_datadir}/%{name} -cp -ar samples/ %{buildroot}%{_datadir}/%{name}/ # samples cp -ar lib/ %{buildroot}%{_datadir}/%{name}/ # stdlib + jruby.jar cp -ar bin/ %{buildroot}%{_datadir}/%{name}/ # startup scripts -ln -s %{_datadir}/%{name}/lib/%{name}.jar %{buildroot}%{_datadir}/%{name}.jar - # /usr prefix startup scripts install -d -m 755 %{buildroot}%{_bindir} +ln -s %{_datadir}/%{name}/bin/jgem %{buildroot}%{_bindir}/gem-jruby +ln -s %{_datadir}/%{name}/bin/jirb %{buildroot}%{_bindir}/irb-jruby ln -s %{_datadir}/%{name}/bin/jruby %{buildroot}%{_bindir}/jruby -ln -s %{_datadir}/%{name}/bin/jirb %{buildroot}%{_bindir}/jirb + +## Fedora integration stuff +# modify the JRuby executable to contain Fedora specific paths redefinitons +# we need to modify jruby{,sh,bash} to be sure everything is ok +sed -i 's|$FEDORA_JAVA_OPTS|-Dvendor.dir.general=%{jruby_vendordir}\ + -Dsite.dir.general=%{jruby_sitedir}\ + -Dvendor.dir.rubygems=%{rubygems_dir}|' \ + %{buildroot}%{_datadir}/%{name}/bin/jruby* + +# install JRuby specific bits into system RubyGems +mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults +cp -a lib/ruby/shared/rubygems/defaults/* %{buildroot}%{rubygems_dir}/rubygems/defaults +# Apply patch6 here to not break tests by changing the rubygems dirs +pushd %{buildroot}%{rubygems_dir} +patch -p0 < %{PATCH6} +popd + +# Dump the macros into macros.jruby to use them to build other JRuby libraries. +mkdir -p %{buildroot}%{_sysconfdir}/rpm +cat >> %{buildroot}%{_sysconfdir}/rpm/macros.jruby << \EOF +%%jruby_libdir %%{_datadir}/%{name}/lib/ruby/1.9 + +# This is the general location for libs/archs compatible with all +# or most of the Ruby versions available in the Fedora repositories. +%%jruby_vendordir vendor_ruby +%%jruby_vendorlibdir %%{jruby_libdir}/%%{jruby_vendordir} +%%jruby_vendorarchdir %%{jruby_vendorlibdir} +EOF # javadoc install -p -d -m 755 %{buildroot}%{_javadocdir}/%{name} @@ -200,44 +326,113 @@ ln -s %{_datadir}/%{name}-yecht.jar %{buildroot}%{_javadir}/%{name}-yecht.jar # pom %add_to_maven_depmap org.jruby %{name} %{version} JPP %{name} mkdir -p $RPM_BUILD_ROOT%{_mavenpomdir} -cp pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP-java.pom +cp -a pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP-java.pom # java dir install -d -m 755 %{buildroot}%{_javadir} ln -s %{_datadir}/%{name}/lib/%{name}.jar %{buildroot}%{_javadir}/%{name}.jar %check -#ant test +%if 0%{?enable_check} +cp yecht/lib/yecht-ruby-0.0.2.jar build_lib/%{name}-yecht.jar +cp lib/%{name}.jar build_lib/%{name}.jar +# explicitly set path to jruby.jar and jruby-yecht.jar, as they can't found by "build-classpath" used in bin/jruby +export JRUBY_CP=$(pwd)/build_lib/jruby.jar:$(pwd)/build_lib/jruby-yecht.jar +# some tests are not run via bin/jruby, so we have to specify CLASSPATH explictly for them to work +export CLASSPATH=$(build-classpath %{jar_deps}):$(pwd)/build_lib/jruby.jar:$(pwd)/build_lib/jruby-yecht.jar +# make sure that we don't install jruby-launcher, as it will first need to be patched upstream +# to be able to find unbundled jars +sed -i 's|depends="install-dev-gems,install-jruby-launcher-gem"|depends="install-dev-gems"|' build.xml + +# TODO: tests fail because JRuby is split into multiple jars that can't be found on execution +# of custom built jars in this test, it seems that using proper Class-Path in manifest should fix this +sed -i 's|test_loading_compiled_ruby_class_from_jar|test_loading_compiled_ruby_class_from_jar\nreturn|' test/test_load_compiled_ruby_class_from_classpath.rb + +export LANG=en_US.utf8 +ant test +%endif %files -%defattr(-,root,root,-) -%doc COPYING +%doc COPYING LICENSE.RUBY %doc docs/CodeConventions.txt docs/README.test -%attr(0755,root,root) %{_bindir}/%{name} -%attr(0755,root,root) %{_bindir}/jirb +%{_bindir}/%{name} +%{_bindir}/gem-jruby +%{_bindir}/irb-jruby %{_datadir}/%{name} -%{_datadir}/%{name}.jar +# exclude bundled gems +%exclude %{jruby_vendordir}/ruby/1.9/json* +%exclude %{jruby_vendordir}/ruby/1.9/rdoc* +%exclude %{jruby_vendordir}/ruby/1.9/rake* +%exclude %{jruby_vendordir}/ruby/gems +# exclude all of the rubygems stuff +%exclude %{jruby_vendordir}/ruby/shared/*ubygems* +%exclude %{jruby_vendordir}/ruby/shared/rbconfig +# own the JRuby specific files under RubyGems dir +%{rubygems_dir}/rubygems/defaults/jruby.rb +# exclude jruby_native.rb that erroneously ended up in .dev tarball +%exclude %{rubygems_dir}/rubygems/defaults/jruby_native.rb %{_javadir}/%{name}.jar %{_mavendepmapfragdir}/%{name} %{_mavenpomdir}/* %files javadoc -%defattr(-,root,root,-) +%doc COPYING LICENSE.RUBY +%doc samples %{_javadocdir}/%{name} %files yecht -%defattr(-,root,root,-) +%doc yecht/LICENSE %{_datadir}/%{name}-yecht.jar %{_javadir}/%{name}-yecht.jar +%files devel +%config(noreplace) %{_sysconfdir}/rpm/macros.jruby + %changelog -* Thu Feb 14 2013 Fedora Release Engineering - 1.6.3-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild +* Tue Feb 26 2013 Bohuslav Kabrda - 1.7.2-1 +- Update to JRuby 1.7.2. + +* Fri Dec 07 2012 Bohuslav Kabrda -1.7.1-2 +- Included -devel subpackage with macros.jruby. +- Added missing Requires: jpackage-utils. +- Added a patch for sitedir path. + +* Tue Dec 04 2012 Bohuslav Kabrda - 1.7.1-1 +- Update to JRuby 1.7.1. +- Update license tags. +- Include licensing files in all independent RPMs generated from this SRPM. +- Exclude the forgotten gems directory from vendordir. + +* Fri Nov 30 2012 Bohuslav Kabrda - 1.7.1-0.1.dev +- Update to JRuby 1.7.1.dev. +- Add missing R: and BR: apache-commons-logging + +* Fri Nov 09 2012 Bohuslav Kabrda - 1.7.0-2 +- Don't move stuff from build_lib, the issue with including files is solved by +using non-existing file in jruby.jar.zip.includes in build.xml. +- Add missing Requires: snakeyaml. + +* Tue Oct 23 2012 Bohuslav Kabrda - 1.7.0-1 +- Updated to JRuby 1.7.0. + +* Thu Oct 11 2012 Bohuslav Kabrda - 1.7.0-0.3.RC2 +- Updated to JRuby 1.7.0.RC2. +- Rename jirb and jgem to irb-jruby and gem-jruby. + +* Thu Oct 04 2012 Bohuslav Kabrda - 1.7.0-0.2.RC1 +- Use system RubyGems. +- Add path definition that brings JRuby closer to MRI. + +* Mon Oct 01 2012 Bohuslav Kabrda - 1.7.0-0.1.RC1 +- Updated to JRuby 1.7.0.RC1. + +* Tue Sep 11 2012 Bohuslav Kabrda - 1.7.0-0.1.preview2 +- Updated to JRuby 1.7.0.preview2. -* Thu Jul 19 2012 Fedora Release Engineering - 1.6.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild +* Thu May 17 2012 Vít Ondruch - 1.6.7.2-1 +- Updated to JRuby 1.6.7.2. * Fri Jan 13 2012 Mo Morsi - 1.6.3-3 - rename jaffl dependency to jnr-ffi (BZ#723191) diff --git a/remove-builtin-yecht-jar.patch b/remove-builtin-yecht-jar.patch deleted file mode 100644 index dfa7d1a..0000000 --- a/remove-builtin-yecht-jar.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- src/org/jruby/Ruby.java.orig 2011-05-25 23:09:35.000000000 -0400 -+++ src/org/jruby/Ruby.java 2011-05-25 23:09:59.000000000 -0400 -@@ -1447,7 +1447,7 @@ public final class Ruby { - addLazyBuiltin("tempfile.rb", "tempfile", "org.jruby.libraries.TempfileLibrary"); - addLazyBuiltin("fcntl.rb", "fcntl", "org.jruby.libraries.FcntlLibrary"); - addLazyBuiltin("rubinius.jar", "rubinius", "org.jruby.ext.rubinius.RubiniusLibrary"); -- addLazyBuiltin("yecht.jar", "yecht", "YechtService"); -+ addLazyBuiltin("yecht-ruby-0.0.2.jar", "yecht", "YechtService"); - - if (is1_9()) { - addLazyBuiltin("mathn/complex.jar", "mathn/complex", "org.jruby.ext.mathn.Complex"); diff --git a/remove-invoke-dynamic-support.patch b/remove-invoke-dynamic-support.patch deleted file mode 100644 index f95c59c..0000000 --- a/remove-invoke-dynamic-support.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- src/org/jruby/compiler/impl/SkinnyMethodAdapter.java.orig 2010-02-01 20:05:03.000000000 -0500 -+++ src/org/jruby/compiler/impl/SkinnyMethodAdapter.java 2010-02-01 20:05:25.000000000 -0500 -@@ -155,14 +155,10 @@ - - public void invokeinterface(String arg1, String arg2, String arg3) { - getMethodVisitor().visitMethodInsn(INVOKEINTERFACE, arg1, arg2, arg3); - } - -- public void invokedynamic(String arg1, String arg2, String arg3) { -- getMethodVisitor().visitMethodInsn(INVOKEDYNAMIC, arg1, arg2, arg3); -- } -- - public void aprintln() { - dup(); - getstatic(p(System.class), "out", ci(PrintStream.class)); - swap(); - invokevirtual(p(PrintStream.class), "println", sig(void.class, params(Object.class))); diff --git a/sources b/sources index 4e7ad68..7417626 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -0fc5d433a485375eba6192f2ee78a457 jruby-src-1.6.3.tar.gz -964d857ee91eb2a64c8cf174e109fb1d olabini-yecht-0.0.2-0-g157cf13.tar.gz +eb40ba54fbaa6ccae316f77627af8a40 jruby-src-1.7.2.tar.gz +cd9b5ad417f71ff8277fc91c1aa4deb8 olabini-yecht-0.0.2-0-g6009fd7.tar.gz diff --git a/yecht-only-build-bindings.patch b/yecht-only-build-bindings.patch deleted file mode 100644 index 82f7797..0000000 --- a/yecht-only-build-bindings.patch +++ /dev/null @@ -1,45 +0,0 @@ -Only in ./build/classes/ruby: org -Only in ./build/classes/ruby: YechtService.class -diff -supr build.xml.orig build.xml ---- build.xml.orig 2009-07-26 06:04:48.000000000 -0400 -+++ build.xml 2011-03-14 16:22:29.000000000 -0400 -@@ -19,6 +19,7 @@ - - - -+ - - - -@@ -101,7 +102,7 @@ - - - -- -+ - - - -@@ -111,10 +112,6 @@ - - - -- -- -- -- - - - -diff -supr default.build.properties.orig ./default.build.properties ---- default.build.properties.orig 2009-07-26 06:04:48.000000000 -0400 -+++ ./default.build.properties 2011-03-14 16:17:30.000000000 -0400 -@@ -14,4 +14,5 @@ api.docs.dir=${docs.dir}/api - release.dir=rels - javac.version=1.5 - ruby.src.dir=ext/ruby/src/java --jruby.lib=../jruby/lib -+jruby.lib=../lib -+build_lib=../build_lib -Only in ../../../yecht/olabini-yecht-157cf13/lib: yecht-0.0.2.jar -Only in ./lib: yecht-ruby-0.0.2.jar