diff --git a/emma-2.0.5312-64_bit_fix.patch b/emma-2.0.5312-64_bit_fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6db6d0b9f0391b7e1d58e7855b0340e41868e42f
--- /dev/null
+++ b/emma-2.0.5312-64_bit_fix.patch
@@ -0,0 +1,26 @@
+diff -up ./core/java12/com/vladium/emma/instr/InstrVisitor.java.64bitfix ./core/java12/com/vladium/emma/instr/InstrVisitor.java
+--- ./core/java12/com/vladium/emma/instr/InstrVisitor.java.64bitfix 2004-07-16 18:32:28.000000000 -0400
++++ ./core/java12/com/vladium/emma/instr/InstrVisitor.java 2008-12-10 09:37:04.000000000 -0500
+@@ -1435,6 +1435,7 @@ final class InstrVisitor extends Abstrac
+ */
+ void emit (final EmitCtx ctx, final byte [] code) // TODO: move 'code' into 'ctx'
+ {
++ synchronized(Block.class) {
+ final ByteArrayOStream out = ctx.m_out;
+ final int first = m_first;
+
+@@ -1450,6 +1451,7 @@ final class InstrVisitor extends Abstrac
+
+ if (m_branch != null)
+ m_branch.emit (ctx);
++ }
+ }
+
+ public CodeSegment m_insertion;
+@@ -2206,4 +2208,4 @@ final class InstrVisitor extends Abstrac
+ private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];
+
+ } // end of class
+-// ----------------------------------------------------------------------------
+\ No newline at end of file
++// ----------------------------------------------------------------------------
diff --git a/emma-2.0.5312-build_xml.patch b/emma-2.0.5312-build_xml.patch
new file mode 100644
index 0000000000000000000000000000000000000000..18ed5dea354bc6488b01ba520f13f0074992eb09
--- /dev/null
+++ b/emma-2.0.5312-build_xml.patch
@@ -0,0 +1,32 @@
+--- build.xml.orig 2005-06-12 19:20:56.000000000 +0200
++++ build.xml 2007-07-06 09:09:57.000000000 +0200
+@@ -108,7 +108,7 @@
+
+
+
+-
++
+
+
+
+@@ -509,6 +509,20 @@
+ command="-t rtag -r ${cvs.branch.label} -d -a ${cvs.ready.label} ${app.short.name}" />
+
+
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+
diff --git a/emma-2.0.5312-dependencies_xml.patch b/emma-2.0.5312-dependencies_xml.patch
new file mode 100644
index 0000000000000000000000000000000000000000..16fbf85afcbe5dc72e42bf24345fec140cc2b31b
--- /dev/null
+++ b/emma-2.0.5312-dependencies_xml.patch
@@ -0,0 +1,17 @@
+--- dependencies.xml.orig 2006-01-24 18:43:37.000000000 +0100
++++ dependencies.xml 2006-01-24 18:43:53.000000000 +0100
+@@ -5,12 +5,12 @@
+
+
+
+-
++
+
+
+
+
+-
++
+
+
+
diff --git a/emma-2.0.5312-java15api.patch b/emma-2.0.5312-java15api.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e7a28ba2883fcfaf373866223ba37c6b94a562fc
--- /dev/null
+++ b/emma-2.0.5312-java15api.patch
@@ -0,0 +1,13 @@
+diff --git a/core/java12/com/vladium/emma/rt/InstrClassLoader.java b/core/java12/com/vladium/emma/rt/InstrClassLoader.java
+index 4ea4f80..2c14287 100644
+--- a/core/java12/com/vladium/emma/rt/InstrClassLoader.java
++++ b/core/java12/com/vladium/emma/rt/InstrClassLoader.java
+@@ -343,7 +343,7 @@ final class InstrClassLoader extends URLClassLoader
+ // support ProtectionDomains with non-null class source URLs:
+ // [however, disable anything related to sealing or signing]
+
+- final CodeSource csrc = new CodeSource (srcURL, null);
++ final CodeSource csrc = new CodeSource (srcURL, (java.security.cert.Certificate[]) null);
+
+ // allow getPackage() to return non-null on the class we are about to
+ // define (however, don't bother emulating the original manifest info since
diff --git a/emma-2.0.5312-src.zip b/emma-2.0.5312-src.zip
new file mode 100644
index 0000000000000000000000000000000000000000..115fe33885e6690696673f85208ee2db5ec14738
Binary files /dev/null and b/emma-2.0.5312-src.zip differ
diff --git a/emma-2.0.5312.pom b/emma-2.0.5312.pom
new file mode 100644
index 0000000000000000000000000000000000000000..c70eee6ede5a8976bf2fd6f2c76eae344d83dd77
--- /dev/null
+++ b/emma-2.0.5312.pom
@@ -0,0 +1,7 @@
+
+ 4.0.0
+ emma
+ emma
+ EMMA
+ 2.0
+
diff --git a/emma-eclemma.patch b/emma-eclemma.patch
new file mode 100644
index 0000000000000000000000000000000000000000..07f4ddcbc8c74a1cc1207715368e5ec7c15f5808
--- /dev/null
+++ b/emma-eclemma.patch
@@ -0,0 +1,12 @@
+diff -uNr core/java12/com/vladium/logging/Logger.java core/java12/com/vladium/logging/Logger.java
+--- core/java12/com/vladium/logging/Logger.java 2008-04-25 14:43:29.000000000 -0400
++++ core/java12/com/vladium/logging/Logger.java 2008-04-25 14:43:47.000000000 -0400
+@@ -70,7 +70,7 @@
+ if ((level < NONE) || (level > ALL))
+ throw new IllegalArgumentException ("invalid log level: " + level);
+
+- if ((out == null) || out.checkError ())
++ if (out == null)
+ throw new IllegalArgumentException ("null or corrupt input: out");
+
+ return new Logger (level, out, prefix, classMask);
diff --git a/emma-timestamp.patch b/emma-timestamp.patch
new file mode 100644
index 0000000000000000000000000000000000000000..107b56d837b34f783c300618b0002815cdbfcf8b
--- /dev/null
+++ b/emma-timestamp.patch
@@ -0,0 +1,20 @@
+--- build.xml 2008-04-25 16:29:49.000000000 -0400
++++ build.xml 2008-04-25 16:28:16.000000000 -0400
+@@ -141,8 +141,16 @@
+
+
+
++
++
+
+-
++
++
++
++
++
++
++
+
+
+
diff --git a/emma-timestamp.sh b/emma-timestamp.sh
new file mode 100644
index 0000000000000000000000000000000000000000..87b9e88f9899ac0f4e48cd734a555a7d88960058
--- /dev/null
+++ b/emma-timestamp.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+echo -n "app.build.id=" > $1
+var=`echo "($(date +%Y) - 2001) * 12 + $(date +%m)" | bc`
+var2=`echo "$var*100 + 25" | bc`
+echo $var2 >> $1
+echo "app.build.date=`date +\"%Y/%m/%d %T\"`" >> $1
diff --git a/emma-timestamp2.sh b/emma-timestamp2.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d5574358eb851d660a73f8cfddeb961cef934c00
--- /dev/null
+++ b/emma-timestamp2.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo $(date +%s) > $1
diff --git a/emma.spec b/emma.spec
new file mode 100644
index 0000000000000000000000000000000000000000..a657883348eb2e79012f576e2a3cacc7d928b7e3
--- /dev/null
+++ b/emma.spec
@@ -0,0 +1,66 @@
+%global shortver 2.0
+Summary: Code Coverage Tool
+Name: emma
+Version: %{shortver}.5312
+Release: 1
+Epoch: 0
+License: CPL
+URL: https://sourceforge.net/projects/emma/
+Source0: http://downloads.sourceforge.net/emma/emma-%{version}-src.zip
+Source1: emma-2.0.5312.pom
+Source2: emma_ant-2.0.5312.pom
+Source3: emma-timestamp.sh
+Source4: emma-timestamp2.sh
+Patch0: emma-2.0.5312-dependencies_xml.patch
+Patch1: emma-2.0.5312-build_xml.patch
+Patch2: emma-2.0.5312-java15api.patch
+Patch3: %{name}-eclemma.patch
+Patch4: %{name}-timestamp.patch
+Patch5: %{name}-%{version}-64_bit_fix.patch
+Requires: jaxp_parser_impl
+BuildRequires: ant >= 0:1.6.5 java-devel >= 0:1.6 jpackage-utils >= 0:1.7.5-1jpp.3 bc
+BuildRequires: javapackages-local
+BuildArch: noarch
+%description
+EMMA is an open-source toolkit for measuring and reporting Java
+code coverage. EMMA distinguishes itself from other tools by going
+after a unique feature combination: support for large-scale
+enterprise software development while keeping individual developer's
+work fast and iterative.
+
+%package javadoc
+Summary: Javadoc for %{name}
+%description javadoc
+%{summary}.
+
+%prep
+%setup -q
+cp -p %{SOURCE3} .
+cp -p %{SOURCE4} .
+rm lib/internal/stamptool.jar
+%patch0 -b .orig
+%patch1 -b .orig
+%patch2 -p1 -b .orig
+%patch3 -b .orig
+%patch4 -b .orig
+%patch5 -b .orig
+
+%build
+[ -z "$JAVA_HOME" ] && export JAVA_HOME=%{_jvmdir}/java
+ant -Dbuild.compiler=modern build javadoc
+
+%install
+%mvn_artifact %{SOURCE1} dist/%{name}.jar
+%mvn_artifact %{SOURCE2} dist/%{name}_ant.jar
+%mvn_install -J out/javadocs/
+
+%files -f .mfiles
+%doc cpl-v10.html
+%dir %{_javadir}/%{name}
+
+%files javadoc -f .mfiles-javadoc
+%doc cpl-v10.html
+
+%changelog
+* Fri Aug 14 2020 Anan Fu - %{shortver}.5312-1
+- package init
diff --git a/emma.yaml b/emma.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1eeca6bc268beee3026dfaa909d22a0b7d6173ff
--- /dev/null
+++ b/emma.yaml
@@ -0,0 +1,4 @@
+version_control: http://emma.sourceforge.net/
+src_repo: http://downloads.sourceforge.net/emma/
+tag_prefix: "^"
+seperator: "."
diff --git a/emma_ant-2.0.5312.pom b/emma_ant-2.0.5312.pom
new file mode 100644
index 0000000000000000000000000000000000000000..a60362acdb576b789962c966eed3e6d73be90a58
--- /dev/null
+++ b/emma_ant-2.0.5312.pom
@@ -0,0 +1,14 @@
+
+ 4.0.0
+ emma
+ emma_ant
+ EMMA Ant
+ 2.0
+
+
+ org.apache.ant
+ ant
+ 1.6.5
+
+
+