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 0000000..6db6d0b
--- /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 0000000..18ed5de
--- /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 0000000..16fbf85
--- /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 0000000..e7a28ba
--- /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 0000000..115fe33
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 0000000..c70eee6
--- /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 0000000..07f4ddc
--- /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 0000000..107b56d
--- /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 0000000..87b9e88
--- /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 0000000..d557435
--- /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 0000000..1e8e4f1
--- /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: http://emma.sourceforge.net/
+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.spec.old b/emma.spec.old
new file mode 100644
index 0000000..efec7f0
--- /dev/null
+++ b/emma.spec.old
@@ -0,0 +1,216 @@
+# Copyright (c) 2000-2007, JPackage Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name of the JPackage Project nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+%global shortver 2.0
+
+Summary: Code Coverage Tool
+Name: emma
+Version: %{shortver}.5312
+Release: 22%{?dist}
+Epoch: 0
+License: CPL
+URL: http://emma.sourceforge.net/
+Source0: http://downloads.sourceforge.net/emma/%{name}-%{version}-src.zip
+Source1: emma-2.0.5312.pom
+Source2: emma_ant-2.0.5312.pom
+# These are hacks until we get the source for the timestamping class
+# http://sourceforge.net/tracker/index.php?func=detail&aid=1953619&group_id=108932&atid=651900
+Source3: emma-timestamp.sh
+Source4: emma-timestamp2.sh
+
+Patch0: emma-2.0.5312-dependencies_xml.patch
+Patch1: emma-2.0.5312-build_xml.patch
+# Taken from Gentoo package to allow us to build on a JDK > 1.4
+Patch2: emma-2.0.5312-java15api.patch
+# From eclemma's emmapatch directory
+Patch3: %{name}-eclemma.patch
+# This is a hack until we get the source for the timestamping class
+# http://sourceforge.net/tracker/index.php?func=detail&aid=1953619&group_id=108932&atid=651900
+Patch4: %{name}-timestamp.patch
+# This patch fixes ArrayIndexOutOfBoundExceptions on 64-bit. I modified
+# the patch against HEAD to apply to this version -- overholt
+# http://sourceforge.net/tracker/index.php?func=detail&aid=2119913&group_id=108932&atid=651897
+Patch5: %{name}-%{version}-64_bit_fix.patch
+Requires: jaxp_parser_impl
+BuildRequires: ant >= 0:1.6.5
+BuildRequires: java-devel >= 0:1.6
+BuildRequires: jpackage-utils >= 0:1.7.5-1jpp.3
+# For the timestamp hack (see above)
+BuildRequires: 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} .
+
+# Make sure we don't use this no-source jar
+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
+
+# JAVADOCS
+%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
+* Thu Jan 31 2019 Fedora Release Engineering - 0:2.0.5312-22
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Thu Jul 12 2018 Fedora Release Engineering - 0:2.0.5312-21
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Feb 07 2018 Fedora Release Engineering - 0:2.0.5312-20
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering - 0:2.0.5312-19
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering - 0:2.0.5312-18
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Wed Feb 03 2016 Fedora Release Engineering - 0:2.0.5312-17
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Wed Jun 17 2015 Fedora Release Engineering - 0:2.0.5312-16
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Jul 02 2014 Marek Goldmann - 0:2.0.5312-15
+- Switch to new guidelines
+
+* Sat Jun 07 2014 Fedora Release Engineering - 0:2.0.5312-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Fri Mar 28 2014 Michael Simacek - 0:2.0.5312-13
+- Use Requires: java-headless rebuild (#1067528)
+
+* Wed Aug 07 2013 gil cattaneo 0:2.0.5312-12
+- fix rhbz#992213
+- update ant references in emma_ant pom file (gId only)
+- minor changes to adapt to current guideline
+
+* Sat Aug 03 2013 Fedora Release Engineering - 0:2.0.5312-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Wed Feb 13 2013 Fedora Release Engineering - 0:2.0.5312-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Wed Jul 18 2012 Fedora Release Engineering - 0:2.0.5312-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Fri Jan 13 2012 Fedora Release Engineering - 0:2.0.5312-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Feb 08 2011 Fedora Release Engineering - 0:2.0.5312-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Fri Nov 26 2010 Stanislav Ochotnicky - 0:2.0.5312-6
+- Fix pom filenames (Resolves rhbz#655797)
+- Make few tweaks according to new guidelines
+- Make jar unversioned
+
+* Mon Jul 12 2010 Andrew Overholt 0:2.0.5312-5
+- Ensure license is also in -javadoc package
+
+* Fri Jul 24 2009 Fedora Release Engineering - 0:2.0.5312-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Tue Feb 24 2009 Fedora Release Engineering - 0:2.0.5312-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Wed Dec 10 2008 Andrew Overholt 0:2.0.5312-2
+- Add patch to fix 64-bit AIOOB.
+
+* Wed Jul 9 2008 Tom "spot" Callaway - 2.0.5312-1
+- drop repotag
+- fix version, release to be sane
+
+* Mon Jul 07 2008 Andrew Overholt 2.0-0.5312.2jpp.4
+- Remove requirement on maven2 as jpackage-utils now owns the maven POMs
+ and fragments directories.
+
+* Fri May 30 2008 Andrew Overholt 2.0-0.5312.2jpp.3
+- Bump release because I forgot to add a source file.
+
+* Wed May 28 2008 Andrew Overholt 2.0-0.5312.2jpp.2
+- Review (rhbz#444511) fixes: '-' in permissions, maven2 requirement,
+ file ownership of maven stuff, require OpenJDK.
+
+* Fri Apr 25 2008 Andrew Overholt 0:2.0-0.5312.2jpp.1
+- Fedora-ify (remove Vendor, Distribution, javadoc %%post{,un}, license
+ -> "CPL", add 1.%%{?dist} to release, change groups to shut up rpmlint,
+ remove %%section free).
+- Remove gnu-crypto requirement for GCJ.
+- Copy patch from Gentoo build for 1.5 API changes.
+- Add hacks to avoid having to use no-source class during build.
+
+* Fri Jul 06 2007 Ralph Apel 0:2.0-0.5312.2jpp
+- Make Vendor, Distribution based on macro
+- Add -javadoc subpackage
+- Add gcj_support option
+- Add poms and depmap frags
+
+* Wed Feb 01 2006 Ralph Apel 0:2.0-0.5312.1jpp
+- First JPackage release.
diff --git a/emma.yaml b/emma.yaml
new file mode 100644
index 0000000..1eeca6b
--- /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 0000000..a60362a
--- /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
+
+
+