diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6e88ac7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/python-dmidecode-3.12.2.tar.gz
diff --git a/.python-dmidecode.metadata b/.python-dmidecode.metadata
new file mode 100644
index 0000000..d35b53e
--- /dev/null
+++ b/.python-dmidecode.metadata
@@ -0,0 +1 @@
+7ca7536e340b4ffc92b41536bbfa44908f77732f SOURCES/python-dmidecode-3.12.2.tar.gz
diff --git a/SOURCES/0001-Fix-memory-type-detail-map-size.patch b/SOURCES/0001-Fix-memory-type-detail-map-size.patch
new file mode 100644
index 0000000..dad160c
--- /dev/null
+++ b/SOURCES/0001-Fix-memory-type-detail-map-size.patch
@@ -0,0 +1,63 @@
+From 4e29e6d5687cf25ac16e48ad41498526e6a56ca8 Mon Sep 17 00:00:00 2001
+From: Lianbo Jiang <lijiang@redhat.com>
+Date: Sun, 28 Apr 2019 14:06:59 +0800
+Subject: [PATCH] Fix memory type detail map size
+
+Note: (https://github.com/nima/python-dmidecode/pull/5/commits/
+edca64c89d084a8c42b9c48a51eb5ac13eac52c6)
+
+For index and array size in xml map, bit mapped type descriptions
+array size must be kept coerent with bit mask otherwise it could
+cause an error, e.g:
+
+Python 3.6.8 (default, Apr  3 2019, 12:10:30)
+[GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import dmidecode
+>>> dmidecode.memory()
+IndexError: list assignment index out of range
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "<stdin>", line 1, in <module>
+SystemError: <built-in function memory> returned a result with an error set
+
+Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
+---
+ src/dmidecode.c | 4 ++--
+ src/pymap.xml   | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/dmidecode.c b/src/dmidecode.c
+index 0615bad315fb..d74a374a3a0f 100644
+--- a/src/dmidecode.c
++++ b/src/dmidecode.c
+@@ -2905,9 +2905,9 @@ void dmi_memory_device_type_detail(xmlNode *node, u16 code)
+         dmixml_AddAttribute(data_n, "dmispec", "7.18.3");
+         dmixml_AddAttribute(data_n, "flags", "0x%04x", code);
+ 
+-        if((code & 0x1FFE) != 0) {
++        if((code & 0xFFFE) != 0) {
+                 int i;
+-                for(i = 1; i <= 14; i++) {
++                for(i = 1; i <= 15; i++) {
+                         if(code & (1 << i)) {
+                                 xmlNode *td_n = dmixml_AddTextChild(data_n, "flag", "%s", detail[i - 1]);
+                                 assert( td_n != NULL );
+diff --git a/src/pymap.xml b/src/pymap.xml
+index 7d5de70bda65..7325a8527018 100644
+--- a/src/pymap.xml
++++ b/src/pymap.xml
+@@ -440,7 +440,7 @@
+               valuetype="string" value="concat(TotalWidth, ' ', TotalWidth/@unit)"/>
+           <Map keytype="constant" key="AssetTag" valuetype="string" value="AssetTag"/>
+           <Map keytype="constant" key="Type Detail" valuetype="list:string" value="TypeDetails/flag"
+-              fixedsize="12" index_attr="index"/>
++              fixedsize="15" index_attr="index"/>
+           <Map keytype="constant" key="Array Handle" valuetype="string" value="@ArrayHandle"/>
+           <Map keytype="constant" key="Form Factor" valuetype="string" value="FormFactor"/>
+           <Map keytype="constant" key="Size"
+-- 
+2.17.1
+
diff --git a/SPECS/python-dmidecode.spec b/SPECS/python-dmidecode.spec
new file mode 100644
index 0000000..a03cc3c
--- /dev/null
+++ b/SPECS/python-dmidecode.spec
@@ -0,0 +1,217 @@
+Name: python-dmidecode
+Summary: Python module to access DMI data
+Version: 3.12.2
+Release: 15%{?dist}
+License: GPLv2
+Group: System Environment/Libraries
+URL: http://projects.autonomy.net.au/python-dmidecode/
+Source0: https://fedorahosted.org/releases/p/y/%{name}/%{name}-%{version}.tar.gz
+
+BuildRequires: libxml2-devel
+
+BuildRequires: python3-devel
+BuildRequires: python3-libxml2
+
+%global _description\
+python-dmidecode is a python extension module that uses the\
+code-base of the 'dmidecode' utility, and presents the data\
+as python data structures or as XML data using libxml2.\
+\
+
+
+%description %_description
+
+%package -n python3-dmidecode
+Summary: Python 3 module to access DMI data
+Requires: libxml2-python3
+ExclusiveArch:  x86_64
+
+Patch0: 0001-Fix-memory-type-detail-map-size.patch
+
+%description -n python3-dmidecode
+python3-dmidecode is a Python 3 extension module that uses the
+code-base of the 'dmidecode' utility, and presents the data
+as Python 3 data structures or as XML data using libxml2.
+
+
+
+%prep
+%setup -q
+
+%patch0 -p1
+
+%build
+# Not to get undefined symbol: dmixml_GetContent
+export CFLAGS="${CFLAGS-} -std=gnu89"
+
+make build PY_BIN=%{__python3}
+
+%install
+%{__python3} src/setup.py install --root %{buildroot} --prefix=%{_prefix}
+
+
+%check
+pushd unit-tests
+make PY_BIN=%{__python3}
+popd
+
+
+%files -n python3-dmidecode
+%license doc/LICENSE doc/AUTHORS doc/AUTHORS.upstream
+%doc README doc/README.upstream
+%{python3_sitearch}/dmidecodemod.cpython-%{python3_version_nodots}m-*.so
+%{python3_sitearch}/__pycache__/dmidecode.cpython-%{python3_version_nodots}*.py[co]
+%{python3_sitearch}/dmidecode.py
+%{python3_sitearch}/*.egg-info
+%{_datadir}/python-dmidecode/
+
+%changelog
+* Wed May 08 2019 Lianbo Jiang <lijiang@redhat.com> - 3.12.2-15
+- Fix an index out of range when calling dmidecode.memory().
+- Resolves: #1665443
+
+* Mon Apr 15 2019 Lianbo Jiang <lijiang@redhat.com> - 3.12.2-14
+- Add the gating test
+- Resolves: #1680625
+
+* Fri Sep 14 2018 Lianbo Jiang <lijiang@redhat.com> - 3.12.2-13
+- Disable build python-dmidecode package other than x86_64 architecture
+- Resolves: #1626424
+
+* Mon Jun 04 2018 Petr Viktorin <pviktori@redhat.com> - 3.12.2-12
+- Drop the Python2 subpackage
+  https://bugzilla.redhat.com/show_bug.cgi?id=1567417
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.2-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Tue Jan 16 2018 Iryna Shcherbina <ishcherb@redhat.com> - 3.12.2-10
+- Update Python 2 dependency declarations to new packaging standards
+  (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
+
+* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.12.2-9
+- Python 2 binary package renamed to python2-dmidecode
+  See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.2-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.2-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.2-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 3.12.2-5
+- Rebuild for Python 3.6
+
+* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.12.2-4
+- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Sat Nov 07 2015 Robert Kuska <rkuska@redhat.com> - 3.12.2-2
+- Rebuilt for Python3.5 rebuild
+
+* Fri Jul 10 2015 Miro Hrončok <mhroncok@redhat.com> - 3.12.2-1
+- Update to 3.12.2
+- Add Python 3 subpackage (#1236000)
+- Removed deprecated statements
+- Moved some docs to license
+- Removed pacthes
+- Corrected bogus dates in %%changelog
+- Build with -std=gnu89
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Thu Jun 20 2013 Ales Ledvinka <aledvink@redhat.com> - 3.10.13-9
+- Attribute installed may appear as duplicate and cause invalid XML.
+
+* Mon Jun 17 2013 Ales Ledvinka <aledvink@redhat.com> - 3.10.13-8
+- Attribute dmispec may cause invalid XML on some hardware.
+- Signal handler for SIGILL.
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Thu Jul 19 2012 Ales Ledvinka <aledvink@redhat.com> 3.10.14-5
+- Upstream relocated. Document source tag and tarball generation.
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.13-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 3.10.13-2
+- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
+
+* Tue Jun 15 2010 Roman Rakus <rrakus@redhat.com> - 3.10.13-1
+- Update to new release
+
+* Fri Mar 12 2010 Nima Talebi <nima@it.net.au> - 3.10.12-1
+- Update to new release
+
+* Tue Feb 16 2010 Nima Talebi <nima@it.net.au> - 3.10.11-1
+- Update to new release
+
+* Tue Jan 12 2010 Nima Talebi <nima@it.net.au> - 3.10.10-1
+- Update to new release
+
+* Thu Jan 07 2010 Nima Talebi <nima@it.net.au> - 3.10.9-1
+- Update to new release
+
+
+* Tue Dec 15 2009 Nima Talebi <nima@it.net.au> - 3.10.8-1
+- New Upstream release.
+- Big-endian and little-endian approved.
+- Packaged unit-test to tarball.
+- Rewritten unit-test to be able to run as non-root user, where it will not
+  try to read /dev/mem.
+- Added two dmidump data files to the unit-test.
+
+* Thu Nov 26 2009 David Sommerseth <davids@redhat.com> - 3.10.7-3
+- Fixed even more .spec file issues and removed explicit mentioning
+  of /usr/share/python-dmidecode/pymap.xml
+
+* Wed Nov 25 2009 David Sommerseth <davids@redhat.com> - 3.10.7-2
+- Fixed some .spec file issues (proper Requires, use _datadir macro)
+
+* Wed Sep 23 2009 Nima Talebi <nima@it.net.au> - 3.10.7-1
+- Updated source0 to new 3.10.7 tar ball
+
+* Mon Jul 13 2009 David Sommerseth <davids@redhat.com> - 3.10.6-6
+- Only build the python-dmidecode module, not everything
+
+* Mon Jul 13 2009 David Sommerseth <davids@redhat.com> - 3.10.6-5
+- Added missing BuildRequres for libxml2-python
+
+* Mon Jul 13 2009 David Sommerseth <davids@redhat.com> - 3.10.6-4
+- Added missing BuildRequres for python-devel
+
+* Mon Jul 13 2009 David Sommerseth <davids@redhat.com> - 3.10.6-3
+- Added missing BuildRequres for libxml2-devel
+
+* Mon Jul 13 2009 David Sommerseth <davids@redhat.com> - 3.10.6-2
+- Updated release, to avoid build conflict
+
+* Wed Jun 10 2009 David Sommerseth <davids@redhat.com> - 3.10.6-1
+- Updated to work with the new XML based python-dmidecode
+
+* Sat Mar  7 2009 Clark Williams <williams@redhat.com> - 2.10.3-1
+- Initial build.
+