diff --git a/fmpp-0.9.14-build.xml.patch b/fmpp-0.9.14-build.xml.patch
new file mode 100644
index 0000000..79c0b5c
--- /dev/null
+++ b/fmpp-0.9.14-build.xml.patch
@@ -0,0 +1,201 @@
+--- a/build.xml 2014-01-03 11:30:51.394013853 -0600
++++ b/build.xml 2014-01-03 16:40:50.443984812 -0600
+@@ -12,25 +12,19 @@
+ classname="java.lang.Object" ignoresystemclasses="true"
+ property="bootclasspath.correct" />
+
+-
+-
+-
+-
+-
+-
+-
++
++
++
++
++
+
+
+
+
+
+-
+-
+-
++
+
+-
+-
+-
++
+
+
+
+@@ -56,7 +50,6 @@
+
+
+
+-
+
+
+
+@@ -84,16 +77,17 @@
+ destdir="build/compile"
+ deprecation="off"
+ debug="on"
+- source="1.2"
+- target="1.2"
++ source="1.5"
++ target="1.5"
++ encoding="UTF-8"
+ >
+
+
+-
++
+
+
+
+@@ -177,7 +173,8 @@
+ we (re)build fmpp.jar in this VM, and also because this task should work
+ without installing FMPP for Ant.
+ -->
+-
++
++
+
+
+
+@@ -207,12 +204,7 @@
+
+
+
+-
+
+-
+-
+-
+-
+
+
+
+@@ -267,16 +259,23 @@
+ destdir="build/testsuite/compile"
+ deprecation="on"
+ debug="on"
+- source="1.2"
+- target="1.2"
++ source="1.5"
++ target="1.5"
+ >
+-
++
++
++
++
++
+
+
+
++ classname="fmpp.testsuite.TestSuite">
++
++
++
++
++
+
+
+
+@@ -297,15 +296,7 @@
+
+
+
+-
+-
++
+
+
+
+ ]]>
+-
+-
+-
+-
+-
+- You are about uploading dist/fmpp_${version}/lib/fmpp.jar into the Maven central repostiry sync. directory. Be sure that's the final (released) variation there, and that the version number is correct. Proceed?
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+- **********************************************
+- CLEAR THE SCREEN, NOW! Your password is on it!
+- **********************************************
+
+
+ *************************************************************
+
+
+-
+\ No newline at end of file
++
diff --git a/fmpp-0.9.14-excise-imageinfo.patch b/fmpp-0.9.14-excise-imageinfo.patch
new file mode 100644
index 0000000..cacb78f
--- /dev/null
+++ b/fmpp-0.9.14-excise-imageinfo.patch
@@ -0,0 +1,60 @@
+--- a/src/java/fmpp/dataloaders/HtmlUtilsDataLoader.java 2014-01-03 12:18:49.887580753 -0600
++++ b/src/java/fmpp/dataloaders/HtmlUtilsDataLoader.java 2014-01-03 12:27:02.527682248 -0600
+@@ -32,7 +32,6 @@
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-import imageinfo.ImageInfo;
+ import java.io.File;
+ import java.io.IOException;
+ import java.io.RandomAccessFile;
+@@ -41,6 +40,7 @@
+ import java.util.Iterator;
+ import java.util.List;
+ import java.util.Map;
++import javax.imageio.ImageIO;
+
+ import fmpp.Engine;
+ import fmpp.tdd.DataLoader;
+@@ -68,7 +68,6 @@
+ private Map imageInfoCache = new HashMap();
+ private CachedImageInfo first;
+ private CachedImageInfo last;
+- private ImageInfo imageInfo = new ImageInfo();
+
+ public Object load(Engine e, List args) throws Exception {
+ if (args.size() != 0) {
+@@ -134,21 +133,21 @@
+ }
+ }
+
+- RandomAccessFile raf = new RandomAccessFile(f, "r");
++ int width = 0;
++ int height = 0;
++
+ try {
+- imageInfo.setCollectComments(false);
+- imageInfo.setInput(raf);
+- if (!imageInfo.check()) {
+- throw new TemplateModelException(
+- "Failed to analyse image file: " + cacheKey);
+- }
+- } finally {
+- raf.close();
+- }
++ java.awt.image.BufferedImage img = ImageIO.read(f);
++ width = img.getWidth();
++ height = img.getHeight();
++ } catch(Exception e) {
++ throw new TemplateModelException("Failed to analyse image file: " + cacheKey);
++ }
++
+ inf = new CachedImageInfo();
+ inf.lmd = f.lastModified();
+- inf.width = imageInfo.getWidth();
+- inf.height = imageInfo.getHeight();
++ inf.width = width;
++ inf.height = height;
+ inf.path = cacheKey;
+ if (last != null) {
+ last.next = inf;
diff --git a/fmpp.spec b/fmpp.spec
new file mode 100644
index 0000000..a77066f
--- /dev/null
+++ b/fmpp.spec
@@ -0,0 +1,72 @@
+%global fmpp_version 0.9.14
+Name: fmpp
+Version: 0.9.14
+Release: 1
+Summary: FreeMarker-based text file PreProcessor
+License: BSD
+URL: http://fmpp.sourceforge.net
+Source0: http://prdownloads.sourceforge.net/fmpp/fmpp_%{version}.tar.gz
+Patch0: fmpp-0.9.14-build.xml.patch
+Patch1: fmpp-0.9.14-excise-imageinfo.patch
+BuildRequires: javapackages-local ant
+BuildRequires: mvn(oro:oro) mvn(org.freemarker:freemarker) mvn(org.beanshell:bsh)
+BuildRequires: mvn(xml-resolver:xml-resolver) mvn(xml-apis:xml-apis)
+Requires: mvn(oro:oro) mvn(org.freemarker:freemarker) mvn(org.beanshell:bsh)
+Requires: mvn(xml-resolver:xml-resolver) mvn(xml-apis:xml-apis)
+BuildArch: noarch
+%description
+FMPP is a general-purpose text file preprocessor tool that uses
+FreeMarker templates. It is particularly designed for HTML
+preprocessor, to generate complete (static) homepages: directory
+structure that contains HTML-s, image files, etc. But of course it can
+be used to generate source code or whatever text files. FMPP is
+extendable with Java classes to pull data from any data sources
+(database, etc.) and embed the data into the generated files.
+
+%package javadoc
+Summary: Javadoc for %{name}
+BuildArch: noarch
+%description javadoc
+Javadoc for %{name}.
+
+%prep
+%setup -q -n %{name}_%{fmpp_version}
+%patch0 -p1
+%patch1 -p1
+find lib -name \*.jar -delete
+rm -rf lib/forbuild/classes
+find . -name always_create_dirs_\* -and -type d | xargs rm -rf
+find . -name \*.fmpp -or\
+ -name package-list -or\
+ -name \*.bsh -or\
+ -name \*.txt -or\
+ -name \*.xml -or\
+ -name \*.c -or \
+ -name \*.css -or \
+ -name \*.csv -or \
+ -name \*.dtd -or \
+ -name \*.ent -or \
+ -name \*.ftl -or \
+ -name \*.html -or \
+ -name \*.tdd| xargs sed -i 's/\r$//'
+
+%build
+ant build
+ant make-pom
+%mvn_artifact build/pom.xml lib/fmpp.jar
+
+%check
+ant test
+
+%install
+%mvn_install -J docs
+
+%files -f .mfiles
+%doc LICENSE.txt README.txt
+
+%files javadoc -f .mfiles-javadoc
+%doc LICENSE.txt README.txt
+
+%changelog
+* Wed Aug 19 2020 yanan li - 0.9.14-1
+- Package init
diff --git a/fmpp.yaml b/fmpp.yaml
new file mode 100644
index 0000000..77adc8e
--- /dev/null
+++ b/fmpp.yaml
@@ -0,0 +1,5 @@
+git_url: https://github.com/freemarker/fmpp.git
+version_control: github
+src_repo: freemarker/fmpp
+tag_prefix: "^v"
+seperator: "."
diff --git a/fmpp_0.9.14.tar.gz b/fmpp_0.9.14.tar.gz
new file mode 100644
index 0000000..2e6d641
Binary files /dev/null and b/fmpp_0.9.14.tar.gz differ