diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..19e5665
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/python-ldap-2.4.15.tar.gz
diff --git a/.python-ldap.metadata b/.python-ldap.metadata
new file mode 100644
index 0000000..ca1f90e
--- /dev/null
+++ b/.python-ldap.metadata
@@ -0,0 +1 @@
+cfd116af0c0d71d250a8cf31d32051f81e3b6310 SOURCES/python-ldap-2.4.15.tar.gz
diff --git a/SOURCES/python-ldap-2.4.15-syncrepl-refreshdone.patch b/SOURCES/python-ldap-2.4.15-syncrepl-refreshdone.patch
new file mode 100644
index 0000000..3b679c6
--- /dev/null
+++ b/SOURCES/python-ldap-2.4.15-syncrepl-refreshdone.patch
@@ -0,0 +1,56 @@
+diff -up python-ldap-2.4.15/Demo/pyasn1/syncrepl.py.syncrepl-refreshdone python-ldap-2.4.15/Demo/pyasn1/syncrepl.py
+--- python-ldap-2.4.15/Demo/pyasn1/syncrepl.py.syncrepl-refreshdone	2014-03-07 15:01:11.000000000 -0500
++++ python-ldap-2.4.15/Demo/pyasn1/syncrepl.py	2014-09-26 10:31:42.360101157 -0400
+@@ -93,6 +93,9 @@ class SyncReplConsumer(ReconnectLDAPObje
+             for uuid in uuids:
+                     self.__presentUUIDs[uuid] = True
+ 
++    def syncrepl_refreshdone(self):
++        print 'Initial synchronization is now done, persist phase begins'
++
+     def perform_application_sync(self,dn,attributes,previous_attributes):
+         print 'Performing application sync for:', dn
+         return True
+diff -up python-ldap-2.4.15/Lib/ldap/syncrepl.py.syncrepl-refreshdone python-ldap-2.4.15/Lib/ldap/syncrepl.py
+--- python-ldap-2.4.15/Lib/ldap/syncrepl.py.syncrepl-refreshdone	2014-03-07 15:01:12.000000000 -0500
++++ python-ldap-2.4.15/Lib/ldap/syncrepl.py	2014-09-26 10:32:29.503115251 -0400
+@@ -330,7 +330,6 @@ class SyncreplConsumer:
+         self.__refreshDone = False
+         return self.search_ext(base, scope, **search_args)
+ 
+-
+     def syncrepl_poll(self, msgid=-1, timeout=None, all=0):
+         """
+         polls for and processes responses to the syncrepl_search() operation.
+@@ -394,12 +393,16 @@ class SyncreplConsumer:
+                         self.syncrepl_present(None, refreshDeletes=False)
+                         if 'cookie' in sim.refreshPresent:
+                             self.syncrepl_set_cookie(sim.refreshPresent['cookie'])
+-                        self.__refreshDone=sim.refreshPresent['refreshDone']
++                        if sim.refreshPresent['refreshDone']:
++                            self.__refreshDone = True
++                            self.syncrepl_refreshdone()
+                     elif sim.refreshDelete is not None:
+                         self.syncrepl_present(None, refreshDeletes=True)
+                         if 'cookie' in sim.refreshDelete:
+                             self.syncrepl_set_cookie(sim.refreshDelete['cookie'])
+-                        self.__refreshDone=sim.refreshDelete['refreshDone']
++                        if sim.refreshDelete['refreshDone']:
++                            self.__refreshDone = True
++                            self.syncrepl_refreshdone()
+                     elif sim.syncIdSet is not None:
+                         if sim.syncIdSet['refreshDeletes'] is True:
+                             self.syncrepl_delete(sim.syncIdSet['syncUUIDs'])
+@@ -467,3 +470,12 @@ class SyncreplConsumer:
+ 
+         """
+         pass
++
++    def syncrepl_refreshdone(self):
++        """
++        Called by syncrepl_poll() between refresh and persist phase.
++
++        It indicates that initial synchronization is done and persist phase
++        follows.
++        """
++        pass
diff --git a/SOURCES/python-ldap-2.4.6-dirs.patch b/SOURCES/python-ldap-2.4.6-dirs.patch
new file mode 100644
index 0000000..940cfe4
--- /dev/null
+++ b/SOURCES/python-ldap-2.4.6-dirs.patch
@@ -0,0 +1,13 @@
+diff -up python-ldap-2.4.15/setup.cfg.dirs python-ldap-2.4.15/setup.cfg
+--- python-ldap-2.4.15/setup.cfg.dirs	2014-09-09 09:42:01.886397107 -0400
++++ python-ldap-2.4.15/setup.cfg	2014-09-09 09:43:25.838658296 -0400
+@@ -8,8 +8,7 @@
+ [_ldap]
+ 
+ # Define extra include and library dirs if needed
+-library_dirs = /opt/openldap-RE24/lib /usr/lib
+-include_dirs = /opt/openldap-RE24/include /usr/include/sasl /usr/include
++include_dirs = /usr/include/sasl
+ 
+ # These defines needs OpenLDAP built with
+ # ./configure --with-cyrus-sasl --with-tls
diff --git a/SPECS/python-ldap.spec b/SPECS/python-ldap.spec
new file mode 100644
index 0000000..efcb424
--- /dev/null
+++ b/SPECS/python-ldap.spec
@@ -0,0 +1,213 @@
+### Abstract ###
+
+Name: python-ldap
+Version: 2.4.15
+Release: 2%{?dist}
+Epoch: 0
+License: Python
+Group: System Environment/Libraries
+Summary: An object-oriented API to access LDAP directory servers
+URL: http://python-ldap.sourceforge.net/
+Source0: http://pypi.python.org/packages/source/p/python-ldap/python-ldap-%{version}.tar.gz
+
+### Patches ###
+# Fedora specific patch
+Patch0: python-ldap-2.4.6-dirs.patch
+
+# https://bugzilla.redhat.com/1122495
+Patch1: python-ldap-2.4.15-syncrepl-refreshdone.patch
+
+### Dependencies ###
+
+Requires: openldap 
+
+### Build Dependencies ###
+
+BuildRequires: openldap-devel
+BuildRequires: openssl-devel
+BuildRequires: python2-devel 
+BuildRequires: cyrus-sasl-devel
+
+# we don't want to provide private python extension libs
+%{?filter_setup:
+%filter_provides_in %{python_sitearch}/.*\.so$
+%filter_setup
+}
+
+%description
+python-ldap provides an object-oriented API for working with LDAP within
+Python programs.  It allows access to LDAP directory servers by wrapping the 
+OpenLDAP 2.x libraries, and contains modules for other LDAP-related tasks 
+(including processing LDIF, LDAPURLs, LDAPv3 schema, etc.).
+
+%prep
+%setup -q -n python-ldap-%{version}
+%patch0 -p1 -b .dirs
+%patch1 -p1 -b .syncrepl-refreshdone
+
+# clean up cvs hidden files
+rm -rf Demo/Lib/ldap/.cvsignore Demo/.cvsignore Demo/Lib/ldif/.cvsignore Demo/Lib/ldap/async/.cvsignore \
+       Demo/Lib/.cvsignore Demo/Lib/ldapurl/.cvsignore
+
+# Fix interpreter
+sed -i 's|#! python|#!/usr/bin/python|g' Demo/simplebrowse.py
+
+%build
+%{__python} setup.py build
+
+%install
+%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT
+
+
+%files
+%defattr(-,root,root,-)
+%doc LICENCE CHANGES README TODO Demo
+%{python_sitearch}/_ldap.so
+%{python_sitearch}/dsml.py*
+%{python_sitearch}/ldapurl.py*
+%{python_sitearch}/ldif.py*
+%{python_sitearch}/ldap/
+%{python_sitearch}/python_ldap-%{version}-*.egg-info
+
+%changelog
+* Fri Sep 26 2014 Matthew Barnes <mbarnes@redhat.com> - 0:2.4.15-2
+- Add syncrepl_refreshdone() method to SyncreplConsumer class.
+  Need by FreeIPA, subsequently accepted upstream.
+- Resolves: rhbz#1122495
+
+* Tue Sep 09 2014 Matthew Barnes <mbarnes@redhat.com> - 0:2.4.15-1
+- Update to 2.4.15
+
+* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 02.4.6-6
+- Mass rebuild 2014-01-24
+
+* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 02.4.6-5
+- Mass rebuild 2013-12-27
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0:2.4.6-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0:2.4.6-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0:2.4.6-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Mon Jan 02 2012 Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> - 2.4.6-1
+- New upstream release
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0:2.3.12-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Fri Sep 24 2010 Parag Nemade <paragn AT fedoraproject.org> - 0:2.3.12-1
+- Merge-review cleanup (#226343)
+
+* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 0:2.3.10-2
+- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
+
+* Thu Jan 14 2010 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.10-1
+- Update to 2.3.10
+- Change source URI to pypi.python.org.
+
+* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 0:2.3.6-3
+- rebuilt with new openssl
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0:2.3.6-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Wed Apr 01 2009 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.6-1
+- Update to 2.3.6
+
+* Fri Feb 27 2009 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.5-5
+- Fix a build error.
+
+* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0:2.3.5-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Fri Jan 16 2009 Tomas Mraz <tmraz@redhat.com> - 0:2.3.5-3
+- rebuild with new openssl
+
+* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0:2.3.5-2
+- Rebuild for Python 2.6
+
+* Wed Sep  3 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 0:2.3.5-1
+- fix license tag
+- update to 2.3.5
+
+* Sun Feb 17 2008 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.1-3.fc9
+- Rebuild with GCC 4.3
+
+* Wed Dec 05 2007 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.1-2.fc9
+- Rebuild against new openssl.
+
+* Wed Oct 10 2007 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.1-1.fc8
+- Update to 2.3.1
+
+* Fri Jun 08 2007 Matthew Barnes <mbarnes@redhat.com> - 0:2.3.0-1.fc8
+- Update to 2.3
+- Spec file cleanups.
+
+* Thu Dec  7 2006 Jeremy Katz <katzj@redhat.com> - 0:2.2.0-3
+- rebuild against python 2.5
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com>
+- rebuild
+
+* Wed May 17 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.0-2
+- Put back the epoch line... happy beehive?
+
+* Tue May 15 2006 Matthew Barnes <mbarnes@redhat.com> - 2.2.0-1
+- Update to 2.2.0
+- Update python-ldap-2.0.6-rpath.patch and rename it to
+  python-ldap-2.2.0-dirs.patch.
+
+* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 0:2.0.6-5.2.1
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 0:2.0.6-5.2
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
+- rebuilt
+
+* Tue Nov  8 2005 Tomas Mraz <tmraz@redhat.com> - 2.0.6-5
+- rebuilt with new openssl
+
+* Tue Mar 22 2005 Warren Togami <wtogami@redhat.com> - 2.0.6-4
+- add LICENCE (#150842)
+- simplify python reqs
+- remove invalid rpath
+
+* Wed Mar 16 2005 Dan Williams <dcbw@redhat.com> - 0:2.0.6-2
+- rebuilt to pick up new libssl.so.5
+
+* Tue Feb  8 2005 David Malcolm <dmalcolm@redhat.com> - 0:2.0.6-1
+- 2.0.6
+
+* Tue Nov 16 2004 Nalin Dahyabhai <nalin@redhat.com> - 0:2.0.1-3
+- rebuild (#139161)
+
+* Mon Aug 30 2004 David Malcolm <dmalcolm@redhat.com> - 0:2.0.1-2
+- Rewrote description; added requirement for openldap
+
+* Tue Aug 17 2004 David Malcolm <dmalcolm@redhat.com> - 0:2.0.1-1
+- imported into Red Hat's packaging system from Fedora.us; set release to 1
+
+* Wed Jun 30 2004 Panu Matilainen <pmatilai@welho.com> 0:2.0.1-0.fdr.1
+- update to 2.0.1
+
+* Sun Dec 07 2003 Panu Matilainen <pmatilai@welho.com> 0:2.0.0-0.fdr.0.4.pre16
+- fix spec permissions + release tag order (bug 1099)
+
+* Sat Dec  6 2003 Ville Skyttä <ville.skytta at iki.fi> 0:2.0.0-0.fdr.0.pre16.3
+- Stricter python version requirements.
+- BuildRequire openssl-devel.
+- Explicitly build *.pyo, install them as %%ghost.
+- Own more installed dirs.
+- Remove $RPM_BUILD_ROOT at start of %%install.
+
+* Wed Dec 03 2003 Panu Matilainen <pmatilai@welho.com> 0:2.0.0-0.fdr.0.pre16.2
+- duh, build requires python-devel, not just python...
+
+* Wed Dec 03 2003 Panu Matilainen <pmatilai@welho.com> 0:2.0.0-0.fdr.0.pre16.1
+- Initial Fedora packaging.