diff --git a/1.7.22.tar.gz b/1.7.22.tar.gz
new file mode 100644
index 0000000..e77b72d
Binary files /dev/null and b/1.7.22.tar.gz differ
diff --git a/jruby-add-classpath-to-start-script.patch b/jruby-add-classpath-to-start-script.patch
new file mode 100644
index 0000000..de48549
--- /dev/null
+++ b/jruby-add-classpath-to-start-script.patch
@@ -0,0 +1,40 @@
+diff --git a/bin/jruby.bash b/bin/jruby.bash
+index ff1c532..e61198c 100755
+--- a/bin/jruby.bash
++++ b/bin/jruby.bash
+@@ -150,6 +150,35 @@ if $cygwin; then
+ JRUBY_CP=`cygpath -p -w "$JRUBY_CP"`
+ fi
+
++j=`build-classpath \
++ objectweb-asm/asm \
++ objectweb-asm/asm-commons \
++ objectweb-asm/asm-tree \
++ objectweb-asm/asm-analysis \
++ objectweb-asm/asm-util \
++ joni jnr-netdb/jnr-netdb \
++ jnr-enxio \
++ jnr-x86asm \
++ jnr-unixsocket/jnr-unixsocket \
++ jnr-posix \
++ bytelist \
++ jnr-constants \
++ jcodings \
++ jnr-ffi/jnr-ffi \
++ jffi/jffi \
++ jffi/jffi-native \
++ snakeyaml \
++ commons-codec \
++ base64coder \
++ jzlib \
++ invokebinder \
++ nailgun/nailgun-server \
++ yecht/yecht \
++ joda-time \
++ options/options`
++
++JRUBY_CP="$JRUBY_CP$CP_DELIMITER$j"
++
+ # ----- Set Up The System Classpath -------------------------------------------
+
+ if [ "$JRUBY_PARENT_CLASSPATH" != "" ]; then
diff --git a/jruby-include-unbundled-jansi.patch b/jruby-include-unbundled-jansi.patch
new file mode 100644
index 0000000..cd86f53
--- /dev/null
+++ b/jruby-include-unbundled-jansi.patch
@@ -0,0 +1,12 @@
+diff --git a/lib/ruby/shared/readline.rb b/lib/ruby/shared/readline.rb
+index 7038a28..f240ae6 100644
+--- a/lib/ruby/shared/readline.rb
++++ b/lib/ruby/shared/readline.rb
+@@ -1,6 +1,7 @@
+ # load jline and our readline into classpath
+ begin
+ require File.dirname(__FILE__) + "/readline/jline-2.11.jar"
++ require File.dirname(__FILE__) + "/readline/jansi.jar"
+ require File.dirname(__FILE__) + "/readline/readline.jar"
+ rescue LoadError
+ # try to proceed as though classes are already in classloader
diff --git a/jruby-remove-rubygems-dirs-definition.patch b/jruby-remove-rubygems-dirs-definition.patch
new file mode 100644
index 0000000..8d45458
--- /dev/null
+++ b/jruby-remove-rubygems-dirs-definition.patch
@@ -0,0 +1,30 @@
+diff --git a/lib/ruby/shared/rubygems/defaults/jruby.rb b/lib/ruby/shared/rubygems/defaults/jruby.rb
+index 0fa6467..b555b0f 100644
+--- a/lib/ruby/shared/rubygems/defaults/jruby.rb
++++ b/lib/ruby/shared/rubygems/defaults/jruby.rb
+@@ -36,25 +36,6 @@ module Gem
+ 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-snakeyaml-1.16.patch b/jruby-snakeyaml-1.16.patch
new file mode 100644
index 0000000..7f4f252
--- /dev/null
+++ b/jruby-snakeyaml-1.16.patch
@@ -0,0 +1,16 @@
+diff --git a/core/src/main/java/org/jruby/ext/psych/PsychParser.java b/core/src/main/java/org/jruby/ext/psych/PsychParser.java
+index 6bb7612..33a98b5 100644
+--- a/core/src/main/java/org/jruby/ext/psych/PsychParser.java
++++ b/core/src/main/java/org/jruby/ext/psych/PsychParser.java
+@@ -229,7 +229,10 @@ public class PsychParser extends RubyObject {
+ private void handleDocumentStart(ThreadContext context, DocumentStartEvent dse, boolean tainted, IRubyObject handler) {
+ Ruby runtime = context.runtime;
+ DumperOptions.Version _version = dse.getVersion();
+- Integer[] versionInts = _version == null ? null : _version.getArray();
++ Integer[] versionInts = null;
++ if (_version != null) {
++ versionInts = new Integer[] { _version.major(), _version.minor() };
++ }
+ IRubyObject version = versionInts == null ?
+ RubyArray.newArray(runtime) :
+ RubyArray.newArray(runtime, runtime.newFixnum(versionInts[0]), runtime.newFixnum(versionInts[1]));
diff --git a/jruby.spec b/jruby.spec
new file mode 100644
index 0000000..84c482c
--- /dev/null
+++ b/jruby.spec
@@ -0,0 +1,142 @@
+%global jruby_vendordir %{_datadir}/%{name}/lib
+%global jruby_sitedir %{_prefix}/local/share/%{name}/lib
+%global rubygems_dir %{_datadir}/rubygems
+Name: jruby
+Version: 1.7.22
+Release: 1
+Summary: Pure Java implementation of the Ruby interpreter
+License: (CPL or GPLv2+ or LGPLv2+) and BSD and (GPLv2 or Ruby) and (BSD or Ruby)
+URL: http://jruby.org
+Source0: https://github.com/jruby/jruby/archive/1.7.22.tar.gz
+Patch0: jruby-add-classpath-to-start-script.patch
+Patch1: jruby-include-unbundled-jansi.patch
+Patch2: jruby-remove-rubygems-dirs-definition.patch
+Patch3: jruby-snakeyaml-1.16.patch
+BuildRequires: maven-local mvn(bsf:bsf) mvn(com.github.jnr:jffi)
+BuildRequires: mvn(com.github.jnr:jffi::native:) mvn(com.github.jnr:jnr-constants)
+BuildRequires: mvn(com.github.jnr:jnr-enxio) mvn(com.github.jnr:jnr-ffi)
+BuildRequires: mvn(com.github.jnr:jnr-netdb) mvn(com.github.jnr:jnr-posix)
+BuildRequires: mvn(com.github.jnr:jnr-unixsocket) mvn(com.github.jnr:jnr-x86asm)
+BuildRequires: mvn(com.headius:coro-mock) mvn(com.headius:invokebinder)
+BuildRequires: mvn(com.headius:options) mvn(com.jcraft:jzlib)
+BuildRequires: mvn(com.martiansoftware:nailgun-server) mvn(jline:jline)
+BuildRequires: mvn(joda-time:joda-time) mvn(junit:junit) mvn(org.apache.ant:ant)
+BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
+BuildRequires: mvn(org.apache.felix:org.apache.felix.framework)
+BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin)
+BuildRequires: mvn(org.apache.maven.plugins:maven-dependency-plugin)
+BuildRequires: mvn(org.apache.maven.plugins:maven-shade-plugin)
+BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin)
+BuildRequires: mvn(org.codehaus.mojo:buildnumber-maven-plugin)
+BuildRequires: mvn(org.codehaus.mojo:exec-maven-plugin)
+BuildRequires: mvn(org.codehaus.mojo:properties-maven-plugin) mvn(org.jruby.extras:bytelist)
+BuildRequires: mvn(org.jruby.jcodings:jcodings) mvn(org.jruby.joni:joni) mvn(org.jruby:yecht)
+BuildRequires: mvn(org.osgi:org.osgi.core) mvn(org.ow2.asm:asm) mvn(org.ow2.asm:asm-analysis)
+BuildRequires: mvn(org.ow2.asm:asm-commons) mvn(org.ow2.asm:asm-util)
+BuildRequires: mvn(org.sonatype.oss:oss-parent:pom:) mvn(org.yaml:snakeyaml) git
+Provides: ruby(release) = 1.9.3
+Provides: ruby(release) = 1.8.7
+Provides: ruby(runtime_executable)
+BuildArch: noarch
+Obsoletes: %{name}-yecht < %{version}-%{release}
+%description
+JRuby is a 100% Java implementation of the Ruby programming language.
+It is Ruby for the JVM. JRuby provides a complete set of core "builtin"
+classes and syntax for the Ruby language, as well as most of the Ruby
+Standard Libraries.
+
+%package devel
+Summary: JRuby development environment
+Requires: %{name} = %{version}-%{release}
+%description devel
+Macros for building JRuby-specific libraries.
+
+%package javadoc
+Summary: Javadoc for %{name}
+%description javadoc
+Javadoc for %{name}.
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+find -name "*.exe" -delete
+find -name "*.dll" -delete
+find -name ".gitignore" -delete
+find -name ".cvsignore" -delete
+find lib/ruby/ -name "*.document" -delete
+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||" '{}' \;
+%pom_remove_dep org.jruby:joda-timezones core
+%pom_add_dep org.apache.felix:org.apache.felix.framework core
+%pom_remove_dep com.headius:unsafe-mock core
+%pom_remove_dep com.headius:jsr292-mock core
+%pom_remove_plugin :maven-dependency-plugin core
+%pom_remove_plugin :tesla-polyglot-maven-plugin lib
+%pom_xpath_remove 'pom:dependencies' lib
+%pom_remove_plugin :maven-shade-plugin core
+%pom_xpath_replace 'pom:dependency[pom:artifactId[text()="jline"]]/pom:scope' 'compile' ext/readline
+%mvn_file :{jruby-core}:jar:: %{name}/@1 %{jruby_vendordir}/%{name}
+%mvn_file :{ripper}:jar:: %{name}/@1 %{jruby_vendordir}/ruby/shared/@1
+%mvn_file :{readline}:jar:: %{name}/@1 %{jruby_vendordir}/ruby/shared/readline/@1
+%mvn_alias org.jruby:jruby-core org.jruby:jruby
+
+%build
+%mvn_build
+
+%install
+%mvn_install
+install -d -m 755 %{buildroot}%{_datadir}
+install -p -d -m 755 %{buildroot}%{_datadir}/%{name}/bin
+cp -ar lib/* %{buildroot}%{jruby_vendordir}/
+install -d -m 755 %{buildroot}%{jruby_vendordir}/jni/{arm-Linux,i386-Linux,x86_64-Linux}
+ln -s %{_prefix}/lib/jffi/arm-Linux/libjffi.so %{buildroot}%{jruby_vendordir}/jni/arm-Linux/
+ln -s %{_prefix}/lib/jffi/i386-Linux/libjffi.so %{buildroot}%{jruby_vendordir}/jni/i386-Linux/
+ln -s %{_prefix}/lib64/jffi/x86_64-Linux/libjffi.so %{buildroot}%{jruby_vendordir}/jni/x86_64-Linux/
+ln -s `build-classpath jansi/jansi` %{buildroot}%{jruby_vendordir}/ruby/shared/readline/
+xmvn-subst %{buildroot}%{jruby_vendordir}/ruby/shared/readline/
+rm %{buildroot}%{jruby_vendordir}/pom*
+cp -a bin/{{j,}gem,{j,}irb,jruby} %{buildroot}%{_datadir}/%{name}/bin/
+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
+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*
+mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults
+cp -a lib/ruby/shared/rubygems/defaults/jruby.rb %{buildroot}%{rubygems_dir}/rubygems/defaults/
+mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
+cat >> %{buildroot}%{_rpmconfigdir}/macros.d/macros.jruby << \EOF
+%%jruby_libdir %%{_datadir}/%{name}/lib/ruby/2.0
+%%jruby_vendordir vendor_ruby
+%%jruby_vendorlibdir %%{jruby_libdir}/%%{jruby_vendordir}
+%%jruby_vendorarchdir %%{jruby_vendorlibdir}
+EOF
+
+%files -f .mfiles
+%doc COPYING LICENSE.RUBY LEGAL
+%{_bindir}/%{name}
+%{_bindir}/gem-jruby
+%{_bindir}/irb-jruby
+%{_datadir}/%{name}
+%{rubygems_dir}/rubygems/defaults/jruby.rb
+%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 %{jruby_vendordir}/ruby/shared/*ubygems*
+%exclude %{jruby_vendordir}/ruby/shared/rbconfig
+
+%files devel
+%{_rpmconfigdir}/macros.d/macros.jruby
+
+%files javadoc -f .mfiles-javadoc
+%doc COPYING LICENSE.RUBY LEGAL
+
+%changelog
+* Mon Aug 24 2020 wangchong - 1.7.22-1
+- package init
diff --git a/jruby.yaml b/jruby.yaml
new file mode 100644
index 0000000..846c66b
--- /dev/null
+++ b/jruby.yaml
@@ -0,0 +1,4 @@
+version_control: github
+src_repo: jruby/jruby
+tag_prefix: "^"
+seperator: "."