diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2ebc801
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/ply-3.4.tar.gz
diff --git a/.python-ply.metadata b/.python-ply.metadata
new file mode 100644
index 0000000..b0fe621
--- /dev/null
+++ b/.python-ply.metadata
@@ -0,0 +1 @@
+123b9449b838dc387b240ea737a33b6407e5a1ac SOURCES/ply-3.4.tar.gz
diff --git a/README.md b/README.md
deleted file mode 100644
index 98f42b4..0000000
--- a/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-The master branch has no content
-
-Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
-If you find this file in a distro specific branch, it means that no content has been checked in yet
diff --git a/SPECS/python-ply.spec b/SPECS/python-ply.spec
new file mode 100644
index 0000000..0f2e17c
--- /dev/null
+++ b/SPECS/python-ply.spec
@@ -0,0 +1,122 @@
+%if 0%{?fedora} > 12
+%global with_python3 1
+%else
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")}
+%endif
+
+Name:             python-ply
+Summary:          Python Lex-Yacc
+Version:          3.4
+Release:          10%{?dist}
+License:          BSD
+Group:            System Environment/Libraries
+URL:              http://www.dabeaz.com/ply/
+Source0:          http://www.dabeaz.com/ply/ply-%{version}.tar.gz
+BuildRoot:        %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch:        noarch
+BuildRequires:    python-devel
+
+%if 0%{?with_python3}
+BuildRequires:          /usr/bin/2to3
+BuildRequires:          python3-devel
+%endif # if with_python3
+
+%description
+PLY is a straightforward lex/yacc implementation. Here is a list of its
+essential features:
+* It is implemented entirely in Python.
+* It uses LR-parsing which is reasonably efficient and well suited for larger
+  grammars.
+* PLY provides most of the standard lex/yacc features including support
+  for empty productions, precedence rules, error recovery, and support
+  for ambiguous grammars.
+* PLY is straightforward to use and provides very extensive error checking.
+* PLY doesn't try to do anything more or less than provide the basic lex/yacc
+  functionality. In other words, it's not a large parsing framework or a
+  component of some larger system.
+
+%if 0%{?with_python3}
+%package -n python3-ply
+Summary:        Python Lex-Yacc
+Group:          System Environment/Libraries
+Requires:       python3-setuptools
+
+%description -n python3-ply
+PLY is a straightforward lex/yacc implementation. Here is a list of its
+essential features:
+* It is implemented entirely in Python.
+* It uses LR-parsing which is reasonably efficient and well suited for larger
+  grammars.
+* PLY provides most of the standard lex/yacc features including support
+  for empty productions, precedence rules, error recovery, and support
+  for ambiguous grammars.
+* PLY is straightforward to use and provides very extensive error checking.
+* PLY doesn't try to do anything more or less than provide the basic lex/yacc
+  functionality. In other words, it's not a large parsing framework or a
+  component of some larger system.
+%endif # with_python3
+
+%prep
+%setup -q -n ply-%{version}
+sed -i 's|/usr/local/bin/python|/usr/bin/python|g' example/yply/yply.py
+chmod -x example/yply/yply.py example/newclasscalc/calc.py example/classcalc/calc.py example/cleanup.sh
+
+%if 0%{?with_python3}
+rm -rf %{py3dir}
+cp -a . %{py3dir}
+find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!/usr/bin/python|#!%{__python3}|'
+
+# The README states: "You should not convert PLY using
+# 2to3--it is not necessary and may in fact break the implementation."
+#
+# However, one of the example files contains python 2 "print" syntax, which
+# lead to syntax errors during byte-compilation
+#
+# So we fix this file with 2to3:
+pushd %{py3dir}
+  2to3 --write --nobackups ply/cpp.py
+popd
+%endif # with_python3
+
+%build
+%{__python} setup.py build
+
+%if 0%{?with_python3}
+pushd %{py3dir}
+%{__python3} setup.py build
+popd
+%endif # with_python3
+
+%install
+rm -rf $RPM_BUILD_ROOT
+%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT
+
+%if 0%{?with_python3}
+pushd %{py3dir}
+%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT
+popd
+%endif # with_python3
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+%doc CHANGES README example/
+%{python_sitelib}/ply/
+%{python_sitelib}/ply*.egg-info
+
+%if 0%{?with_python3}
+%files -n python3-ply
+%defattr(-,root,root,-)
+%doc CHANGES README example/
+%{python3_sitelib}/ply/
+%{python3_sitelib}/ply*.egg-info
+%endif # with_python3
+
+%changelog
+* Fri Jun 12 2015 Martin Kosek <mkosek@redhat.com> 3.4-10
+- Increase Release number to get a clean upgrade path from EPEL 7
+
+* Mon Sep 8 2014 Petr Vobornik <pvoborni@redhat.com> 3.4-1
+- Initial package for RHEL 7