diff --git a/jackson-1.9.11-to-1.9.13.patch b/jackson-1.9.11-to-1.9.13.patch
new file mode 100644
index 0000000..83b13c9
--- /dev/null
+++ b/jackson-1.9.11-to-1.9.13.patch
@@ -0,0 +1,415 @@
+diff -Nru jackson-src-1.9.11/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java jackson-src-1.9.11-gil/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java
+--- jackson-src-1.9.11/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java 2012-11-06 17:24:50.000000000 +0100
++++ jackson-src-1.9.11-gil/src/java/org/codehaus/jackson/impl/Utf8StreamParser.java 2013-02-13 18:45:26.000000000 +0100
+@@ -730,7 +730,7 @@
+ {
+ // very first thing: common case, colon, value, no white space
+ int i;
+- if (_inputPtr < _inputEnd && _inputBuffer[_inputPtr] == INT_COLON) { // fast case first
++ if (_inputPtr < (_inputEnd-1) && _inputBuffer[_inputPtr] == INT_COLON) { // fast case first
+ ++_inputPtr;
+ i = _inputBuffer[_inputPtr++];
+ if (i == INT_QUOTE) {
+@@ -2359,6 +2359,7 @@
+ switch (i) {
+ case INT_SPACE:
+ case INT_TAB:
++ break;
+ case INT_CR:
+ _skipCR();
+ break;
+@@ -2374,11 +2375,11 @@
+ }
+ break space_loop;
+ }
++ if (_inputPtr >= _inputEnd) {
++ loadMoreGuaranteed();
++ }
++ i = _inputBuffer[_inputPtr++] & 0xFF;
+ }
+- if (_inputPtr >= _inputEnd) {
+- loadMoreGuaranteed();
+- }
+- i = _inputBuffer[_inputPtr++] & 0xFF;
+ if (i != INT_COLON) {
+ _reportUnexpectedChar(i, "was expecting a colon to separate field name and value");
+ }
+diff -Nru jackson-src-1.9.11/src/java/org/codehaus/jackson/io/JsonStringEncoder.java jackson-src-1.9.11-gil/src/java/org/codehaus/jackson/io/JsonStringEncoder.java
+--- jackson-src-1.9.11/src/java/org/codehaus/jackson/io/JsonStringEncoder.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/java/org/codehaus/jackson/io/JsonStringEncoder.java 2013-01-15 21:03:48.000000000 +0100
+@@ -129,8 +129,12 @@
+ }
+ }
+ // something to escape; 2 or 6-char variant?
+- int escCode = escCodes[input.charAt(inPtr++)];
+- int length = _appendSingleEscape(escCode, _quoteBuffer);
++ char d = input.charAt(inPtr++);
++ int escCode = escCodes[d];
++ int length = (escCode < 0)
++ ? _appendNumericEscape(d, _quoteBuffer)
++ : _appendNamedEscape(escCode, _quoteBuffer);
++ ;
+ if ((outPtr + length) > outputBuffer.length) {
+ int first = outputBuffer.length - outPtr;
+ if (first > 0) {
+@@ -144,7 +148,6 @@
+ System.arraycopy(_quoteBuffer, 0, outputBuffer, outPtr, length);
+ outPtr += length;
+ }
+-
+ }
+ textBuffer.setCurrentLength(outPtr);
+ return textBuffer.contentsAsArray();
+@@ -249,6 +252,7 @@
+ * Will encode given String as UTF-8 (without any quoting), return
+ * resulting byte array.
+ */
++ @SuppressWarnings("resource")
+ public byte[] encodeAsUTF8(String text)
+ {
+ ByteArrayBuilder byteBuilder = _byteBuilder;
+@@ -341,16 +345,17 @@
+ /**********************************************************
+ */
+
+- private int _appendSingleEscape(int escCode, char[] quoteBuffer)
++ private int _appendNumericEscape(int value, char[] quoteBuffer)
++ {
++ quoteBuffer[1] = 'u';
++ // We know it's a control char, so only the last 2 chars are non-0
++ quoteBuffer[4] = HEX_CHARS[value >> 4];
++ quoteBuffer[5] = HEX_CHARS[value & 0xF];
++ return 6;
++ }
++
++ private int _appendNamedEscape(int escCode, char[] quoteBuffer)
+ {
+- if (escCode < 0) { // control char, value -(char + 1)
+- int value = -(escCode + 1);
+- quoteBuffer[1] = 'u';
+- // We know it's a control char, so only the last 2 chars are non-0
+- quoteBuffer[4] = HEX_CHARS[value >> 4];
+- quoteBuffer[5] = HEX_CHARS[value & 0xF];
+- return 6;
+- }
+ quoteBuffer[1] = (char) escCode;
+ return 2;
+ }
+diff -Nru jackson-src-1.9.11/src/java/org/codehaus/jackson/io/UTF32Reader.java jackson-src-1.9.11-gil/src/java/org/codehaus/jackson/io/UTF32Reader.java
+--- jackson-src-1.9.11/src/java/org/codehaus/jackson/io/UTF32Reader.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/java/org/codehaus/jackson/io/UTF32Reader.java 2012-11-15 18:51:10.000000000 +0100
+@@ -2,52 +2,54 @@
+
+ import java.io.*;
+
+-
+ /**
+ * Since JDK does not come with UTF-32/UCS-4, let's implement a simple
+ * decoder to use.
+ */
+-public final class UTF32Reader
++public class UTF32Reader
+ extends BaseReader
+ {
+- final boolean mBigEndian;
++ protected final boolean _bigEndian;
+
+ /**
+ * Although input is fine with full Unicode set, Java still uses
+ * 16-bit chars, so we may have to split high-order chars into
+ * surrogate pairs.
+ */
+- char mSurrogate = NULL_CHAR;
++ protected char _surrogate = NULL_CHAR;
+
+ /**
+ * Total read character count; used for error reporting purposes
+ */
+- int mCharCount = 0;
++ protected int _charCount = 0;
+
+ /**
+ * Total read byte count; used for error reporting purposes
+ */
+- int mByteCount = 0;
++ protected int _byteCount = 0;
+
++ protected final boolean _managedBuffers;
++
+ /*
+- ////////////////////////////////////////
+- // Life-cycle
+- ////////////////////////////////////////
+- */
++ /**********************************************************
++ /* Life-cycle
++ /**********************************************************
++ */
+
+ public UTF32Reader(IOContext ctxt,
+- InputStream in, byte[] buf, int ptr, int len,
+- boolean isBigEndian)
++ InputStream in, byte[] buf, int ptr, int len,
++ boolean isBigEndian)
+ {
+ super(ctxt, in, buf, ptr, len);
+- mBigEndian = isBigEndian;
++ _bigEndian = isBigEndian;
++ _managedBuffers = (in != null);
+ }
+
+ /*
+- ////////////////////////////////////////
+- // Public API
+- ////////////////////////////////////////
+- */
++ /**********************************************************
++ /* Public API
++ /**********************************************************
++ */
+
+ @Override
+ public int read(char[] cbuf, int start, int len)
+@@ -69,9 +71,9 @@
+ int outPtr = start;
+
+ // Ok, first; do we have a surrogate from last round?
+- if (mSurrogate != NULL_CHAR) {
+- cbuf[outPtr++] = mSurrogate;
+- mSurrogate = NULL_CHAR;
++ if (_surrogate != NULL_CHAR) {
++ cbuf[outPtr++] = _surrogate;
++ _surrogate = NULL_CHAR;
+ // No need to load more, already got one char
+ } else {
+ /* Note: we'll try to avoid blocking as much as possible. As a
+@@ -90,7 +92,7 @@
+ int ptr = _ptr;
+ int ch;
+
+- if (mBigEndian) {
++ if (_bigEndian) {
+ ch = (_buffer[ptr] << 24) | ((_buffer[ptr+1] & 0xFF) << 16)
+ | ((_buffer[ptr+2] & 0xFF) << 8) | (_buffer[ptr+3] & 0xFF);
+ } else {
+@@ -112,7 +114,7 @@
+ ch = (0xDC00 | (ch & 0x03FF));
+ // Room for second part?
+ if (outPtr >= len) { // nope
+- mSurrogate = (char) ch;
++ _surrogate = (char) ch;
+ break main_loop;
+ }
+ }
+@@ -123,36 +125,34 @@
+ }
+
+ len = outPtr - start;
+- mCharCount += len;
++ _charCount += len;
+ return len;
+ }
+
+ /*
+- ////////////////////////////////////////
+- // Internal methods
+- ////////////////////////////////////////
+- */
++ /**********************************************************
++ /* Internal methods
++ /**********************************************************
++ */
+
+ private void reportUnexpectedEOF(int gotBytes, int needed)
+ throws IOException
+ {
+- int bytePos = mByteCount + gotBytes;
+- int charPos = mCharCount;
++ int bytePos = _byteCount + gotBytes;
++ int charPos = _charCount;
+
+ throw new CharConversionException("Unexpected EOF in the middle of a 4-byte UTF-32 char: got "
+- +gotBytes+", needed "+needed
+- +", at char #"+charPos+", byte #"+bytePos+")");
++ +gotBytes+", needed "+needed+", at char #"+charPos+", byte #"+bytePos+")");
+ }
+
+ private void reportInvalid(int value, int offset, String msg)
+ throws IOException
+ {
+- int bytePos = mByteCount + _ptr - 1;
+- int charPos = mCharCount + offset;
++ int bytePos = _byteCount + _ptr - 1;
++ int charPos = _charCount + offset;
+
+ throw new CharConversionException("Invalid UTF-32 character 0x"
+- +Integer.toHexString(value)
+- +msg+" at char #"+charPos+", byte #"+bytePos+")");
++ +Integer.toHexString(value)+msg+" at char #"+charPos+", byte #"+bytePos+")");
+ }
+
+ /**
+@@ -164,7 +164,7 @@
+ private boolean loadMore(int available)
+ throws IOException
+ {
+- mByteCount += (_length - available);
++ _byteCount += (_length - available);
+
+ // Bytes that need to be moved to the beginning of buffer?
+ if (available > 0) {
+@@ -180,11 +180,13 @@
+ * so let's do a separate read right away:
+ */
+ _ptr = 0;
+- int count = _in.read(_buffer);
++ int count = (_in == null) ? -1 : _in.read(_buffer);
+ if (count < 1) {
+ _length = 0;
+ if (count < 0) { // -1
+- freeBuffers(); // to help GC?
++ if (_managedBuffers) {
++ freeBuffers(); // to help GC?
++ }
+ return false;
+ }
+ // 0 count is no good; let's err out
+@@ -197,10 +199,12 @@
+ * error.
+ */
+ while (_length < 4) {
+- int count = _in.read(_buffer, _length, _buffer.length - _length);
++ int count = (_in == null) ? -1 : _in.read(_buffer, _length, _buffer.length - _length);
+ if (count < 1) {
+ if (count < 0) { // -1, EOF... no good!
+- freeBuffers(); // to help GC?
++ if (_managedBuffers) {
++ freeBuffers(); // to help GC?
++ }
+ reportUnexpectedEOF(_length, 4);
+ }
+ // 0 count is no good; let's err out
+@@ -211,4 +215,3 @@
+ return true;
+ }
+ }
+-
+diff -Nru jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java
+--- jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/AnnotationIntrospector.java 2012-11-08 13:26:56.000000000 +0100
+@@ -637,10 +637,15 @@
+ * Method for determining the String value to use for serializing
+ * given enumeration entry; used when serializing enumerations
+ * as Strings (the standard method).
++ *
++ * NOTE: implemented since 1.9.11, to make things work even when
++ * annotation introspection is disabled.
+ *
+ * @return Serialized enum value.
+ */
+- public abstract String findEnumValue(Enum> value);
++ public String findEnumValue(Enum> value) {
++ return value.name();
++ }
+
+ /*
+ /**********************************************************
+diff -Nru jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/deser/std/ClassDeserializer.java jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/deser/std/ClassDeserializer.java
+--- jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/deser/std/ClassDeserializer.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/deser/std/ClassDeserializer.java 2012-11-16 19:30:42.000000000 +0100
+@@ -7,6 +7,7 @@
+ import org.codehaus.jackson.JsonToken;
+ import org.codehaus.jackson.map.DeserializationContext;
+ import org.codehaus.jackson.map.annotate.JacksonStdImpl;
++import org.codehaus.jackson.map.util.ClassUtil;
+
+ /**
+ *
+@@ -26,20 +27,8 @@
+ // Currently will only accept if given simple class name
+ if (curr == JsonToken.VALUE_STRING) {
+ String className = jp.getText();
+- // [JACKSON-597]: support primitive types (and void)
+- if (className.indexOf('.') < 0) {
+- if ("int".equals(className)) return Integer.TYPE;
+- if ("long".equals(className)) return Long.TYPE;
+- if ("float".equals(className)) return Float.TYPE;
+- if ("double".equals(className)) return Double.TYPE;
+- if ("boolean".equals(className)) return Boolean.TYPE;
+- if ("byte".equals(className)) return Byte.TYPE;
+- if ("char".equals(className)) return Character.TYPE;
+- if ("short".equals(className)) return Short.TYPE;
+- if ("void".equals(className)) return Void.TYPE;
+- }
+ try {
+- return Class.forName(jp.getText());
++ return ClassUtil.findClass(className);
+ } catch (ClassNotFoundException e) {
+ throw ctxt.instantiationException(_valueClass, e);
+ }
+diff -Nru jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/deser/StdDeserializerProvider.java jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/deser/StdDeserializerProvider.java
+--- jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/deser/StdDeserializerProvider.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/deser/StdDeserializerProvider.java 2013-03-01 19:29:20.000000000 +0100
+@@ -469,6 +469,16 @@
+ // should never happen? (if it can, could call on that object)
+ throw new IllegalStateException("Type-wrapped deserializer's deserializeWithType should never get called");
+ }
+- }
+
++ @Override
++ public Object deserialize(JsonParser jp, DeserializationContext ctxt,
++ Object intoValue)
++ throws IOException, JsonProcessingException
++ {
++ /* 01-Mar-2013, tatu: Hmmh. Tough call as to what to do... need
++ * to delegate, but will this work reliably? Let's just hope so:
++ */
++ return _deserializer.deserialize(jp, ctxt, intoValue);
++ }
++ }
+ }
+diff -Nru jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java
+--- jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/introspect/NopAnnotationIntrospector.java 2012-11-08 13:31:02.000000000 +0100
+@@ -42,7 +42,8 @@
+
+ @Override
+ public String findEnumValue(Enum> value) {
+- return null;
++ // as per [JACKSON-875]
++ return value.name();
+ }
+
+ /*
+diff -Nru jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/JsonDeserializer.java jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/JsonDeserializer.java
+--- jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/JsonDeserializer.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/JsonDeserializer.java 2013-03-01 19:28:18.000000000 +0100
+@@ -61,7 +61,8 @@
+ T intoValue)
+ throws IOException, JsonProcessingException
+ {
+- throw new UnsupportedOperationException();
++ throw new UnsupportedOperationException("Can not update object of type "
++ +intoValue.getClass().getName()+" (by deserializer of type "+getClass().getName()+")");
+ }
+
+ /**
+diff -Nru jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/type/TypeBindings.java jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/type/TypeBindings.java
+--- jackson-src-1.9.11/src/mapper/java/org/codehaus/jackson/map/type/TypeBindings.java 2012-11-06 17:24:51.000000000 +0100
++++ jackson-src-1.9.11-gil/src/mapper/java/org/codehaus/jackson/map/type/TypeBindings.java 2013-02-08 22:11:42.000000000 +0100
+@@ -287,7 +287,14 @@
+ * need to call getEnclosingClass since anonymous classes declare
+ * generics
+ */
+- _resolveBindings(raw.getDeclaringClass());
++ Class> decl = raw.getDeclaringClass();
++ /* 08-Feb-2013, tatu: Except that if context is also super-class, we must
++ * skip it; context will be checked anyway, and we'd get StackOverflow if
++ * we went there.
++ */
++ if (decl != null && !decl.isAssignableFrom(raw)) {
++ _resolveBindings(raw.getDeclaringClass());
++ }
+ /* 24-Mar-2010, tatu: Can not have true generics definitions, but can
+ * have lower bounds ("") in declaration itself
+ */
diff --git a/jackson-build-plain-jars-instead-of-osgi-bundles.patch b/jackson-build-plain-jars-instead-of-osgi-bundles.patch
new file mode 100644
index 0000000..6069608
--- /dev/null
+++ b/jackson-build-plain-jars-instead-of-osgi-bundles.patch
@@ -0,0 +1,98 @@
+From 8cfd6868e1d8c5eb4816682f32d137b551dcab05 Mon Sep 17 00:00:00 2001
+From: Juan Hernandez
+Date: Tue, 14 Feb 2012 18:27:09 +0100
+Subject: [PATCH 1/2] Build plain jar files instead of OSGi bundles
+
+In order to avoid dependending on BND.
+---
+ ant/build-jars.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ build.xml | 2 +-
+ 2 files changed, 65 insertions(+), 1 deletions(-)
+ create mode 100644 ant/build-jars.xml
+
+diff --git a/ant/build-jars.xml b/ant/build-jars.xml
+new file mode 100644
+index 0000000..1267948
+--- /dev/null
++++ b/ant/build-jars.xml
+@@ -0,0 +1,64 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff --git a/build.xml b/build.xml
+index 4f1432d..4613994 100644
+--- a/build.xml
++++ b/build.xml
+@@ -74,7 +74,7 @@
+
+
+
+-
++
+
+
+
+--
+1.7.9
+
diff --git a/jackson-dont-require-repackaged-asm.patch b/jackson-dont-require-repackaged-asm.patch
new file mode 100644
index 0000000..bb96b8c
--- /dev/null
+++ b/jackson-dont-require-repackaged-asm.patch
@@ -0,0 +1,32 @@
+From d05e128aa7c5ef7b2699b044fa33a799375f1acc Mon Sep 17 00:00:00 2001
+From: Juan Hernandez
+Date: Tue, 14 Feb 2012 18:28:20 +0100
+Subject: [PATCH 2/2] Don't require repackaged asm
+
+To avoid bringing in additional dependencies to do the repackaging.
+
+The repackaging is done in order to avoid version problems, but we should have
+solved that already in Fedora.
+---
+ .../org/codehaus/jackson/mrbean/BeanBuilder.java | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/mrbean/java/org/codehaus/jackson/mrbean/BeanBuilder.java b/src/mrbean/java/org/codehaus/jackson/mrbean/BeanBuilder.java
+index b03ca0a..cbbc92d 100644
+--- a/src/mrbean/java/org/codehaus/jackson/mrbean/BeanBuilder.java
++++ b/src/mrbean/java/org/codehaus/jackson/mrbean/BeanBuilder.java
+@@ -3,9 +3,9 @@ package org.codehaus.jackson.mrbean;
+ import java.lang.reflect.Method;
+ import java.util.*;
+
+-import org.codehaus.jackson.org.objectweb.asm.*;
++import org.objectweb.asm.*;
+
+-import static org.codehaus.jackson.org.objectweb.asm.Opcodes.*;
++import static org.objectweb.asm.Opcodes.*;
+
+ import org.codehaus.jackson.type.JavaType;
+ import org.codehaus.jackson.map.DeserializationConfig;
+--
+1.7.9
+
diff --git a/jackson-src-1.9.11.tar.gz b/jackson-src-1.9.11.tar.gz
new file mode 100644
index 0000000..faead0e
Binary files /dev/null and b/jackson-src-1.9.11.tar.gz differ
diff --git a/jackson.spec b/jackson.spec
new file mode 100644
index 0000000..cb4e1a2
--- /dev/null
+++ b/jackson.spec
@@ -0,0 +1,73 @@
+Name: jackson
+Version: 1.9.11
+Release: 15
+Summary: Jackson Java JSON-processor
+License: ASL2.0 and LGPLv2
+URL: https://github.com/codehaus/jackson
+Source0: http://apt.linuxfans.org/magic/3.0/sources/SOURCES.j/jackson/jackson-src-1.9.11.tar.gz
+Patch0001: jackson-build-plain-jars-instead-of-osgi-bundles.patch
+Patch0002: jackson-dont-require-repackaged-asm.patch
+Patch0003: jackson-1.9.11-to-1.9.13.patch
+Patch0004: jackson-1.9.11-javadoc.patch
+BuildArch: noarch
+Requires: joda-time >= 1.6.2 stax2-api >= 3.1.1 jsr-311 >= 1.1.1 objectweb-asm3 >= 3.3
+BuildRequires: javapackages-local ant >= 1.8.2 joda-time >= 1.6.2 stax2-api >= 3.1.1
+BuildRequires: jsr-311 >= 1.1.1 objectweb-asm3 >= 3.3 cglib >= 2.2 groovy18 >= 1.8.5
+
+%description
+JSON processor written in Java., it also offers full node-based Tree
+Model, as well as full Object/Json Mapper data binding functionality.
+
+%package help
+Summary: Documentation for jackson package
+Provides: jackson-javadoc = %{version}-%{release}
+Obsoletes: jackson-javadoc < %{version}-%{release}
+
+%description help
+Documentation for jackson package.
+
+%prep
+%autosetup -n jackson-src-%{version} -p1
+
+find . -type f -name '*.jar' |xargs rm -f
+find . -type f -name 'TestHibernate.java' |xargs rm -f
+find . -type f -name 'TestJsonPerf.java' |xargs rm -f
+find . -type f -name 'TestGoogleCollections.java' |xargs rm -f
+
+ln -s $(build-classpath joda-time) lib/ext/joda-time.jar
+ln -s $(build-classpath stax2-api) lib/xml/sta2-api.jar
+ln -s $(build-classpath jsr-311) lib/jaxrs/jsr-311.jar
+ln -s $(build-classpath objectweb-asm3/asm) lib/ext/asm/asm.jar
+ln -s $(build-classpath objectweb-asm3/asm) lib/repackaged/jackson-asm.jar
+ln -s $(build-classpath cglib/cglib) lib/ext/cglib/cglib-nodep.jar
+ln -s $(build-classpath groovy18-1.8) lib/ext/groovy/groovy.jar
+ln -s $(build-classpath junit) lib/junit/junit.jar
+
+sed -i "s/59 Temple Place/51 Franklin Street/" release-notes/lgpl/LGPL2.1
+sed -i "s/Suite 330/Fifth Floor/" release-notes/lgpl/LGPL2.1
+sed -i "s/02111-1307/02110-1301/" release-notes/lgpl/LGPL2.1
+
+native2ascii -encoding UTF8 src/test/org/codehaus/jackson/jaxrs/TestUntouchables.java \
+ src/test/org/codehaus/jackson/jaxrs/TestUntouchables.java
+
+%build
+ant dist
+
+%install
+%mvn_artifact dist/jackson-core-asl-%{version}.pom dist/jackson-core-asl-%{version}.jar
+%mvn_artifact dist/jackson-mapper-asl-%{version}.pom dist/jackson-mapper-asl-%{version}.jar
+%mvn_artifact dist/jackson-xc-%{version}.pom dist/jackson-xc-%{version}.jar
+%mvn_artifact dist/jackson-smile-%{version}.pom dist/jackson-smile-%{version}.jar
+%mvn_artifact dist/jackson-mrbean-%{version}.pom dist/jackson-mrbean-%{version}.jar
+%mvn_artifact dist/jackson-jaxrs-%{version}.pom dist/jackson-jaxrs-%{version}.jar
+%mvn_install -J dist/javadoc/
+
+%files -f .mfiles
+%doc release-notes
+
+%files help -f .mfiles-javadoc
+%doc README.txt
+
+%changelog
+* Fri Dec 20 2019 zhujunhao 1.9.11-15
+- Package init