diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0531e87
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+SOURCES/gpgkey-E3F42FCE156830A80358E6E94FD1AEC3365AF7BF.gpg
+SOURCES/modulemd-2.13.0.tar.xz
diff --git a/.libmodulemd.metadata b/.libmodulemd.metadata
new file mode 100644
index 0000000..809a9e4
--- /dev/null
+++ b/.libmodulemd.metadata
@@ -0,0 +1,2 @@
+75e05794a210a4ed87d361925fc520d5e11fa582 SOURCES/gpgkey-E3F42FCE156830A80358E6E94FD1AEC3365AF7BF.gpg
+e83886f374922ecf6fa728c6c588d697d0748b99 SOURCES/modulemd-2.13.0.tar.xz
diff --git a/SOURCES/modulemd-2.13.0-Accept-18446744073709551615-buildorder-if-accept_ove.patch b/SOURCES/modulemd-2.13.0-Accept-18446744073709551615-buildorder-if-accept_ove.patch
new file mode 100644
index 0000000..2e54628
--- /dev/null
+++ b/SOURCES/modulemd-2.13.0-Accept-18446744073709551615-buildorder-if-accept_ove.patch
@@ -0,0 +1,192 @@
+From b0dd663edd6ab66ec26c48ff34a52afa040694e6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Thu, 22 Jul 2021 15:23:55 +0200
+Subject: [PATCH] Accept 18446744073709551615 buildorder if
+ accept_overflowed_buildorder build boolean is true
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+7c0158bcec05b692d27e37ff46a134f4e294d957 commit (Reject invalid signed
+integers (rpm buildorder), as found in 2.13.0 release, fortified
+parsing signed integers.
+
+It turned out that RHEL 8 delivers a few modules:
+
+container-tools:rhel8:8020120200601155013:ffd2803a
+container-tools:rhel8:8030020200923153805:2a301c24
+container-tools:rhel8:8030020201124131330:830d479e
+container-tools:rhel8:8030120210208205200:c127ee91
+
+which contain an invalid buildorder value 18446744073709551615. DNF
+then warned on loading them into an index and ignored them:
+
+    # dnf module list --repoid pulp-appstream
+    Last metadata expiration check: 3:59:10 ago on Wed 21 Jul 2021 12:38:00 PM CEST.
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 118 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 118 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 107 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 114 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 118 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 118 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 107 col 9]
+    Module yaml error: Failed to parse buildorder in component: 18446744073709551615: The integer value is larger than 9223372036854775807 [line 114 col 9]
+
+Those were probably built with a broken MBS/libmodulemd which
+loaded -1 and serialized it as an 64-bit unsigned integer
+18446744073709551615.
+
+Because the distributor does not change once-released builds, it
+became impossible to process them with libmodulemd-2.13.0.
+
+This patch adds an accept_overflowed_buildorder build option (disabled
+by default) which enables a workaround to accept 18446744073709551615
+string as -1 integer when parsing 64-bit signed integers. (The type is
+used only in buildorder field now).
+
+(Originally, I developed a more complicated patch only affecting
+loading while keeping validation strict. But that was not enough for
+DNF, creareterepo_c and probably many other tools. Thus I prepared
+even more complicated patch affecting both loading and validation of
+modulemd formats only (cf. modulemd-packager-v3) and that helped DNF.
+But the patch ugglified to code to much and considering it's only
+a temporary hack, I decided for this simple patch which affects
+loading and validation of all formats.)
+
+Petr Písař: Ported to 2.13.0 from
+37a688cc12d7fbab67fda95c47a4605405d7a154.
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+---
+ meson.build                                |  1 +
+ meson_options.txt                          |  3 +++
+ modulemd/meson.build                       |  2 ++
+ modulemd/modulemd-yaml-util.c              | 11 +++++++++++
+ modulemd/tests/test-modulemd-parse_int64.c | 15 ++++++++++++++-
+ 5 files changed, 31 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 37792b3..bbb56ba 100644
+--- a/meson.build
++++ b/meson.build
+@@ -215,6 +215,7 @@ if meson.version().version_compare('>=0.53')
+              'Python 2 Support': get_option('with_py2'),
+              'Python 3 Support': get_option('with_py3'),
+              'Skip Introspection': get_option('skip_introspection'),
++             'Accept overflowed buildorder': get_option('accept_overflowed_buildorder'),
+              'Test Installed Library': get_option('test_installed_lib'),
+             }, section: 'Build Configuration')
+ endif
+diff --git a/meson_options.txt b/meson_options.txt
+index 7873d42..3d84459 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -11,6 +11,9 @@
+ #
+ # REMEMBER TO UPDATE THE SUMMARY() IN meson.build when adding options here
+ 
++option('accept_overflowed_buildorder', type : 'boolean', value: 'false',
++       description : 'Accept overflowed 18446744073709551615 buildorder as -1. This breaks a specification, but some RHEL 8 module builds look like that.')
++
+ option('verbose_tests', type : 'boolean', value : true,
+        description : 'Tests that are run under the "debug" configuration will print all debug messages. Disable this option for valgrind checks, as it speeds it up substantially.')
+ 
+diff --git a/modulemd/meson.build b/modulemd/meson.build
+index 2a60364..0b74818 100644
+--- a/modulemd/meson.build
++++ b/modulemd/meson.build
+@@ -14,6 +14,7 @@
+ test_installed_lib = get_option('test_installed_lib')
+ skip_introspection = get_option('skip_introspection')
+ verbose_tests = get_option('verbose_tests')
++accept_overflowed_buildorder = get_option('accept_overflowed_buildorder')
+ clang_simple_version_script = find_program ('clang_simple_version.sh')
+ 
+ 
+@@ -144,6 +145,7 @@ cdata.set('HAVE_RPMIO', rpm.found())
+ cdata.set('HAVE_LIBMAGIC', magic.found())
+ cdata.set('HAVE_GDATE_AUTOPTR', has_gdate_autoptr)
+ cdata.set('HAVE_EXTEND_AND_STEAL', has_extend_and_steal)
++cdata.set('HAVE_OVERFLOWED_BUILDORDER', accept_overflowed_buildorder)
+ configure_file(
+   output : 'config.h',
+   configuration : cdata
+diff --git a/modulemd/modulemd-yaml-util.c b/modulemd/modulemd-yaml-util.c
+index 6cbf4cc..ad0bd3c 100644
+--- a/modulemd/modulemd-yaml-util.c
++++ b/modulemd/modulemd-yaml-util.c
+@@ -11,6 +11,7 @@
+  * For more information on free software, see <https://www.gnu.org/philosophy/free-sw.en.html>.
+  */
+ 
++#include "config.h"
+ #include "modulemd-errors.h"
+ #include "private/modulemd-subdocument-info-private.h"
+ #include "private/modulemd-util.h"
+@@ -441,6 +442,16 @@ modulemd_yaml_parse_int64 (yaml_parser_t *parser, GError **error)
+ 
+   if ((value == G_MAXINT64 && errno == ERANGE))
+     {
++#ifdef HAVE_OVERFLOWED_BUILDORDER
++      /* A temporary hack. Remove when RHEL 8 goes end of life. */
++      if (g_str_equal ((const gchar *)event.data.scalar.value,
++                       "18446744073709551615"))
++        {
++          g_debug ("Coercing an invalid signed 64-bit integer to -1: %s",
++                   (const gchar *)event.data.scalar.value);
++          return -1;
++        }
++#endif
+       g_set_error (error,
+                    MODULEMD_YAML_ERROR,
+                    MODULEMD_ERROR_VALIDATE,
+diff --git a/modulemd/tests/test-modulemd-parse_int64.c b/modulemd/tests/test-modulemd-parse_int64.c
+index 2ccfb53..8759c21 100644
+--- a/modulemd/tests/test-modulemd-parse_int64.c
++++ b/modulemd/tests/test-modulemd-parse_int64.c
+@@ -11,6 +11,7 @@
+  * For more information on free software, see <https://www.gnu.org/philosophy/free-sw.en.html>.
+  */
+ 
++#include "config.h"
+ #include <glib.h>
+ #include <locale.h>
+ #include <string.h>
+@@ -36,7 +37,7 @@ test (const char *input, gint64 expected_value, gboolean expected_error)
+     g_assert_nonnull (error);
+   else
+     g_assert_null (error);
+-  g_assert_cmpuint (parsed, ==, expected_value);
++  g_assert_cmpint (parsed, ==, expected_value);
+ }
+ 
+ static void
+@@ -69,6 +70,16 @@ test_int64_invalid_too_big (void)
+   test ("9223372036854775808", 0, TRUE);
+ }
+ 
++static void
++test_int64_invalid_overflowed (void)
++{
++#ifdef HAVE_OVERFLOWED_BUILDORDER
++  test ("18446744073709551615", -1, FALSE);
++#else
++  test ("18446744073709551615", 0, TRUE);
++#endif
++}
++
+ static void
+ test_int64_invalid_too_small (void)
+ {
+@@ -143,6 +154,8 @@ main (int argc, char *argv[])
+                    test_int64_invalid_too_big);
+   g_test_add_func ("/modulemd/v2/int64/yaml/parse/invalid_too_small",
+                    test_int64_invalid_too_small);
++  g_test_add_func ("/modulemd/v2/int64/yaml/parse/invalid_overflowed",
++                   test_int64_invalid_overflowed);
+ 
+   g_test_add_func ("/modulemd/v2/uint64/yaml/parse/valid", test_uint64_valid);
+   g_test_add_func ("/modulemd/v2/uint64/yaml/parse/invalid_no_digit",
+-- 
+2.31.1
+
diff --git a/SOURCES/modulemd-2.13.0.tar.xz.asc b/SOURCES/modulemd-2.13.0.tar.xz.asc
new file mode 100644
index 0000000..cb1c25e
--- /dev/null
+++ b/SOURCES/modulemd-2.13.0.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCAAdFiEE4/QvzhVoMKgDWObpT9GuwzZa978FAmDoGDoACgkQT9GuwzZa
+9788qhAAzVLc75gZydzaygm4lZ39Z330JrmZVOddzsw7qyrtbWoAXLvBda2X+ckM
+lnEcIaUp0suReysH7SjBumYg0IADkeGPHTr41OPQneUE5w0UvPfks2+Tvo50GUAv
+7+yTPcF5gudyRJJTzHW8jOuqnWWqdGg41sPD8qFj7XTP2ndtUINHi1EBg7u3HApI
+vRmD6AY7YYjnDQo7ugT+uIGcqCCtkOq40lc8wQEfgM9kWTwf8BbQMavrXfRjgzEe
+0BR41LTaVTkXtn7+5/IkUF7Iq5zW4KzD0LxHck+eYc98AYlhf/MyquARpjkG53Nn
+lehky9mQQsJHg3JkeGWJlDqnaFlbYcOpRhsA/xrBkQyO8kbl9pEDuzP7EXouKdp4
+1rrnsO9DFAznqfUV95h6SSfvm7KOB6/ac/iAl1FyvErxNUek6KxwWrSJsRQzaDf3
+Ao6HygX7eAOLjS6BFbzUzL5aQVDPKu+cJfkVlOguPYvNRAnFOH9Fx3TKv6kYeaZZ
+1pHbc+7yQuM2Fy/Xj/N0Dwy5pvks+UCP3v294BPlqdW3HR/Bskjba3thg5bMMJ5H
+Yq4wit8JWem76MMvHDXM2IgHpJhpg7DDxaKOd6qBN4dcOnOwCg680jFQ90rg3oVE
+8qVBnYHtcut1XiSqqNE3/Zz0ISbhjv/BOor8zjYspEf0vipFjA0=
+=AlDP
+-----END PGP SIGNATURE-----
diff --git a/SPECS/libmodulemd.spec b/SPECS/libmodulemd.spec
new file mode 100644
index 0000000..693c403
--- /dev/null
+++ b/SPECS/libmodulemd.spec
@@ -0,0 +1,674 @@
+%if  0%{?rhel} && 0%{?rhel} <= 7
+  # There is no python3-gobject-base in RHEL 7. But it exists in EPEL 7.
+  %global meson_python_flags -Dwith_py2=true -Dwith_py3=true
+  %global build_python2 1
+  %global build_python3 1
+%else
+  %global meson_python_flags -Dwith_py2=false -Dwith_py3=true
+  %global build_python2 0
+  %global build_python3 1
+%endif
+
+%if  0%{?rhel} && 0%{?rhel} <= 10
+  # Support module builds with an invalid buildorder in RHEL 8.
+  %global meson_accept_overflowed_buildorder_flag -Daccept_overflowed_buildorder=true
+%else
+  %global meson_accept_overflowed_buildorder_flag -Daccept_overflowed_buildorder=false
+%endif
+
+%global upstream_name libmodulemd
+
+%if (0%{?rhel} && 0%{?rhel} <= 7)
+  %global v2_suffix 2
+%endif
+
+Name:           %{upstream_name}%{?v2_suffix}
+Version:        2.13.0
+Release:        2%{?dist}
+Summary:        Module metadata manipulation library
+
+# COPYING:      MIT
+## not in any binary package
+# contrib/coverity-modeling.c:  GPLv2+
+# contrib/release-tools/semver: GPLv3
+License:        MIT
+URL:            https://github.com/fedora-modularity/libmodulemd
+Source0:        %{url}/releases/download/%{version}/modulemd-%{version}.tar.xz
+Source1:        %{url}/releases/download/%{version}/modulemd-%{version}.tar.xz.asc
+# Key exported from Petr Pisar's keyring
+Source2:        gpgkey-E3F42FCE156830A80358E6E94FD1AEC3365AF7BF.gpg
+# Accept invalid, but existing 18446744073709551615 buildorder when loading
+# modulemd-v2 documents, bug #1984402, proposed to the upstream
+Patch0:         modulemd-2.13.0-Accept-18446744073709551615-buildorder-if-accept_ove.patch
+
+BuildRequires:  gnupg2
+BuildRequires:  meson >= 0.47
+BuildRequires:  pkgconfig
+BuildRequires:  gcc
+BuildRequires:  gcc-c++
+BuildRequires:  pkgconfig(gobject-2.0)
+BuildRequires:  pkgconfig(gobject-introspection-1.0)
+BuildRequires:  pkgconfig(yaml-0.1)
+BuildRequires:  pkgconfig(gtk-doc)
+BuildRequires:  glib2-doc
+BuildRequires:  rpm-devel
+BuildRequires:  file-devel
+%if %{build_python2}
+BuildRequires:  python2-devel
+BuildRequires:  python-gobject-base
+%endif
+%if %{build_python3}
+BuildRequires:  python%{python3_pkgversion}-devel
+BuildRequires:  python%{python3_pkgversion}-gobject-base
+%endif
+BuildRequires:  help2man
+
+
+# Patches
+
+
+%description
+C library for manipulating module metadata files.
+See https://github.com/fedora-modularity/libmodulemd/blob/master/README.md for
+more details.
+
+
+%if %{build_python2}
+%package -n python2-%{name}
+Summary:        Python 2 bindings for %{name}
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+Requires:       python-gobject-base
+Requires:       python-six
+
+%description -n python2-%{name}
+Python 2 bindings for %{name}.
+%endif
+
+
+%if %{build_python3}
+%package -n python%{python3_pkgversion}-%{name}
+Summary:        Python 3 bindings for %{name}
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+Requires:       python%{python3_pkgversion}-gobject-base
+%if (0%{?rhel} && 0%{?rhel} <= 7)
+# The py3_dist macro on EPEL 7 doesn't work right at the moment
+Requires:       python3.6dist(six)
+%else
+Requires:       %{py3_dist six}
+%endif
+
+%description -n python%{python3_pkgversion}-%{name}
+Python %{python3_pkgversion} bindings for %{name}.
+%endif
+
+
+%package devel
+Summary:        Development files for libmodulemd
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+%if (0%{?rhel} && 0%{?rhel} <= 7)
+Conflicts:      libmodulemd1-devel
+Conflicts:      libmodulemd-devel
+%endif
+
+
+%description devel
+Development files for %{name}.
+
+
+%prep
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
+%autosetup -p1 -n modulemd-%{version}
+
+
+%build
+%meson \
+    %{meson_accept_overflowed_buildorder_flag} \
+    -Dlibmagic=enabled \
+    -Drpmio=enabled \
+    -Dskip_introspection=false \
+    -Dtest_installed_lib=false \
+    -Dwith_docs=true \
+    -Dwith_manpages=enabled \
+    %{meson_python_flags}
+%meson_build
+
+
+%check
+export LC_CTYPE=C.utf8
+# The tests sometimes time out in CI, so give them a little extra time
+%{__meson} test -C %{_vpath_builddir} %{?_smp_mesonflags} --print-errorlogs -t 5
+
+
+%install
+%meson_install
+
+%if ( 0%{?rhel} && 0%{?rhel} <= 7)
+# Don't conflict with modulemd-validator from 1.x included in the official
+# RHEL 7 repos
+mv %{buildroot}%{_bindir}/modulemd-validator \
+   %{buildroot}%{_bindir}/modulemd-validator%{?v2_suffix}
+
+mv %{buildroot}%{_mandir}/man1/modulemd-validator.1 \
+   %{buildroot}%{_mandir}/man1/modulemd-validator%{?v2_suffix}.1
+%endif
+
+
+%ldconfig_scriptlets
+
+
+%files
+%license COPYING
+%doc NEWS README.md
+%{_bindir}/modulemd-validator%{?v2_suffix}
+%{_mandir}/man1/modulemd-validator%{?v2_suffix}.1*
+%{_libdir}/%{upstream_name}.so.2*
+%dir %{_libdir}/girepository-1.0
+%{_libdir}/girepository-1.0/Modulemd-2.0.typelib
+
+
+%files devel
+%{_libdir}/%{upstream_name}.so
+%{_libdir}/pkgconfig/modulemd-2.0.pc
+%{_includedir}/modulemd-2.0/
+%dir %{_datadir}/gir-1.0
+%{_datadir}/gir-1.0/Modulemd-2.0.gir
+%dir %{_datadir}/gtk-doc
+%dir %{_datadir}/gtk-doc/html
+%{_datadir}/gtk-doc/html/modulemd-2.0/
+
+
+%if %{build_python2}
+%files -n python2-%{name}
+%{python2_sitearch}/gi/overrides/
+%endif
+
+
+%if %{build_python3}
+%files -n python%{python3_pkgversion}-%{name}
+%{python3_sitearch}/gi/overrides/
+%endif
+
+
+%changelog
+* Thu Aug 12 2021 Petr Pisar <ppisar@redhat.com> - 2.13.0-2
+- Enable accept_overflowed_buildorder in tier0 tests (bug #1984403)
+
+* Tue Aug 10 2021 Petr Pisar <ppisar@redhat.com> - 2.13.0-1
+- 2.13.0 bump (bug #1984403)
+
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.12.1-2
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Mon May 03 2021 Petr Pisar <ppisar@redhat.com> - 2.12.1-1
+- 2.12.1 bump (bug #1956346)
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 2.12.0-3
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.12.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Thu Jan 14 2021 Stephen Gallagher <sgallagh@redhat.com> - 2.12.0-1
+- Add support for 'buildorder' to Packager documents
+
+* Tue Jan 12 2021 Stephen Gallagher <sgallagh@redhat.com> - 2.11.2-2
+- Fix issue with ModuleIndex when input contains only Obsoletes documents
+- Fix import issue when built with Python 2 support
+
+* Thu Jan 07 2021 Stephen Gallagher <sgallagh@redhat.com> - 2.11.2-1
+- Release 2.11.2
+- Extend read_packager_[file|string]() to support overriding the module name
+  and stream.
+
+* Thu Dec 17 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.11.1-1
+- Release 2.11.1
+- Ignore Packager documents when running ModuleIndex.update_from_*()
+- Add python overrides for XMD in PackagerV3
+- Add python override to ignore the GType return when reading packager files
+- Add PackagerV3.get_mdversion()
+
+* Thu Dec 10 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.11.0-1
+- Release 2.11.0
+
+* Fri Nov 20 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.10.0-2
+- Fix integer size issue on 32-bit platforms
+
+* Fri Nov 20 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.10.0-1
+- Release 2.10.0
+- https://github.com/fedora-modularity/libmodulemd/releases/tag/libmodulemd-2.10.0
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.4-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon May 25 2020 Miro Hrončok <mhroncok@redhat.com> - 2.9.4-2
+- Rebuilt for Python 3.9
+
+* Wed May 20 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.4-1
+- new upstream release: 2.9.4
+
+* Wed May 20 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.4-2.9.300520.1gitgc19757c
+- new upstream release: 2.9.4
+
+* Wed Apr 08 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.3-1
+- new upstream release: 2.9.3
+
+* Wed Apr 01 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.2-4
+- Skip rpmdeplint from gating due to https://github.com/fedora-infra/bodhi/issues/3944
+
+* Wed Apr 01 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.2-3
+- Fix build against Python 3.9
+- Resolves: rhbz#1817665
+
+* Wed Mar 11 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.2-2
+- new upstream release: 2.9.2
+
+* Wed Mar 11 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.2-0.20200311.1gitg31bbd4e
+- new upstream release: 2.9.2
+
+* Wed Mar 11 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.2-0.20200311.1gitg31bbd4e
+- new upstream release: 2.9.2
+
+* Fri Feb 14 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.1-1
+- new upstream release: 2.9.1
+
+* Wed Feb 12 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.9.0-1
+- new upstream release: 2.9.0
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Jan 09 2020 Stephen Gallagher <sgallagh@redhat.com> - 2.8.3-1
+- Update to 2.8.3
+- Fix compilation issue with glib >= 2.63.3
+- Improved modulemd document validation
+- Numerous test enhancements
+
+* Thu Oct 24 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.8.2-1
+- Update to 2.8.2
+- Use safer version of dup()
+- Fix loading of YAML module stream with no module or stream name
+
+* Tue Oct 15 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.8.1-1
+- Improve the merge logic to handle third-party repos more sanely
+
+* Wed Sep 18 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.8.0-2
+- Improvements to ModuleIndex.update_from_defaults_directory()
+  * Import each file in the directory as a merge rather than an overwrite so
+    we can detect conflicts.
+  * Modify the meaning of the 'strict' argument to fail if the merge would
+    result in a conflict in the default stream setting of a module.
+
+* Wed Sep 04 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.8.0-1
+- Update to 2.8.0
+- API Changes
+  * Add Modulemd.Module.get_translation() - Retrieve the translations
+    associated with a Modulemd.Module
+  * Add ModuleIndex.update_from_defaults_directory() - Import defaults from a
+    directory of yaml documents, such as fedora-module-defaults, optionally
+    providing a second path containing overrides.
+- Enhancements
+  * Modulemd.ModuleIndex.update_from_file() now supports reading files
+    compressed with gzip, bzip2 or xz. (Issue: #208)
+  * Documentation updates
+- Bugfixes
+  * Assorted minor issues discovered by static analysis tools.
+
+* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 2.7.0-2
+- Rebuilt for Python 3.8
+
+* Thu Aug 15 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.7.0-1
+- Update to 2.7.0
+- Drop libmodulemd1 subpackage which is now packaged separately
+- Add support for 'buildroot' and 'srpm-buildroot' arguments to components
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Jul 03 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.6.0-1
+- Update to 2.6.0
+- New function ModuleIndexMerger.resolve_ext() allowing for strict merging
+- Profile.get_description() now properly returns available translations
+- Numerous documentation fixes
+- Test improvements
+
+* Wed May 29 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.5.0-2
+- Fix memory issue with Module.search_streams() in the python bindings
+
+* Wed May 22 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.5.0-1
+- Update to 2.5.0 and 1.8.11
+- Ensure that XMD is always emitted in the same order
+- Add .clear_*() functions for all .add_*() functions
+- Add ModuleStream.equals()
+- Add ModuleIndex.get_default_streams()
+
+* Mon May 13 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.4.0-1
+- Update to 2.4.0 and 1.8.10
+- Add ModuleStreamV2.clear_dependencies() and .remove_dependencies()
+- Fix bugs and memory issues with the XMD python bindings
+- Assorted documentation enhancements
+
+* Fri May 03 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.3.1-1
+- Update to 2.3.1
+- Make Modulemd.Component.set_*() functions accept NULL
+- Fix segmentation fault in XMD code due to improper memory management
+- Fix incompatibility in python2-libmodulemd GObject overrides
+- Fix assorted documentation issues
+
+* Mon Apr 22 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.3.0-1
+- Add ModuleIndex.update_from_custom()
+- Add ModuleIndex.dump_to_custom()
+- Add Component.equals()
+- Add Module.remove_streams_by_NSVCA()
+- Fix bug with emitting lists of scalars in XMD
+- Fix bug with deduplication in the ModuleIndexMerger
+- Fix serious memory leak
+
+* Tue Apr 16 2019 Adam Williamson <awilliam@redhat.com> - 2.2.3-3
+- Rebuild with Meson fix for #1699099
+
+* Wed Apr 03 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.2.3-2
+- Fix accidental ABI break
+
+* Mon Apr 01 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.2.3-1
+- Update to 2.2.3 and 1.8.6
+- Fix header issue with ModulemdRpmMapEntry
+
+* Wed Mar 27 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.2.2-2
+- Don't run tests on armv7hl/aarch64 since they have timeout problems
+
+* Wed Mar 27 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.2.2-1
+- Update to libmodulemd 2.2.2
+- Add support for python2 on RHEL and Fedora < 31
+- Make python subpackages archful for GObject overrides
+
+* Tue Mar 26 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.2.1-1
+- Update to libmodulemd 2.2.1
+- Fixes builds on i686
+- Fixes an accidental API error
+
+* Tue Mar 26 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.2.0-1
+- Update to libmodulemd 2.2.0
+- Support for RPM checksums
+- Adds a new directive: "buildafter" for specifying build dependencies
+- Adds a new directive: "buildonly" to indicate that a component's built
+  artifacts should be listed in the "filter" field.
+- Deprecate lookup functions by NSVC in favor of NSVCA (including the
+  architecture.
+
+* Fri Mar 01 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.1.0-4
+- Don't run tests on 32-bit ARM due to performance issues causing timeouts
+
+* Fri Mar 01 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.1.0-3
+- Have python3-libmodulemd1 properly Obsolete libmodulemd and
+  python3-libmodulemd < 2.
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Sat Jan 26 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.1.0-1
+- Update to libmodulemd 2.1.0 and 1.8.2
+- Drop upstreamed patches
+- Add new API ModuleStream.depends_on_stream() and
+  ModuleStream.build_depends_on_stream() to help support auto-detection of
+  when a module stream may need to be rebuilt when its dependencies change.
+- Don't fail merges when default streams differ, treat it as "no default for
+  this module"
+- Fix error message
+- Copy modified value when copying Modulemd.Defaults objects
+- Fixes discovered by clang and coverity static analysis tools
+- Test improvements
+
+* Fri Jan 11 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.0.0-3
+- Fix ordering issue with dependencies
+- Use glib2 suppression file when running valgrind tests
+
+* Fri Jan 11 2019 Stephen Gallagher <sgallagh@redhat.com> - 2.0.0-2
+- Fix issue reading modified value for defaults from YAML streams
+
+* Thu Dec 13 2018 Stephen Gallagher <sgallagh@redhat.com> - 2.0.0-1
+- Update to 2.0.0 final
+- Assorted fixes for validation
+- Add modulemd-validator tool based on v2 code
+- Fix a crash when merging defaults
+
+* Tue Dec 11 2018 Stephen Gallagher <sgallagh@redhat.com> - 2.0.0-0.beta2
+- Update to 2.0.0beta2
+- Better validation of stored content during read and write operations
+- ModuleIndex now returns FALSE if any subdocument fails
+- Fix tests on 32-bit platforms
+- Make unknown keys in YAML maps non-fatal for libmodulemd1
+- Make unknown keys in YAML maps optionally fatal for libmodulemd 2.x
+- Fix RPM version requirements for libmodulemd1
+
+* Mon Dec 10 2018 Stephen Gallagher <sgallagh@redhat.com> - 2.0.0-0.beta1
+- Update to 2.0.0beta1
+- Total rewrite to 2.0 API
+- https://sgallagh.fedorapeople.org/docs/libmodulemd/2.0/
+
+* Fri Oct 26 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.7.0-1
+- Update to 1.7.0
+- Enhance YAML parser for use with `fedmod lint`
+- Support running unit tests against installed packages
+- Include all NSVCs for ModuleStreams in ImprovedModule
+
+* Tue Sep 18 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.4-1
+- Update to 1.6.4.
+- Add Buildopts to the documentation.
+- Deduplicate module streams when merging.
+- Drop upstreamed patches.
+
+* Thu Sep 06 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.3-2
+- Fix generation of module component YAML
+- Output NSVC information using decimal version
+
+* Tue Sep 04 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.3-1
+- Update to 1.6.3
+- Drop upstreamed patch
+- Don't return ModuleStream objects from modulemd_module_new_all_from_*_ext()
+- Ensure that Component buildorder property is signed
+- Work around optimization bug
+- Don't crash dumping translation events without summary or desc
+
+* Thu Aug 09 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.2-2
+- Fix backwards-incompatible API change
+- Resolves: rhbz#1607083
+
+* Tue Aug 07 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.2-1
+- Update to 1.6.2
+- Make buildorder a signed integer to match modulemd specification
+
+* Mon Jul 23 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.1-2
+- Obsolete unsupported pythonX-modulemd packages
+
+* Fri Jul 20 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.1-1
+- Update to 1.6.1
+- Fix header include ordering
+- Suppress empty sections from .dump() ordering
+
+* Wed Jul 18 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.6.0-1
+- Update to 1.6.0
+- Adds Modulemd.ModuleStream object, deprecating Modulemd.Module
+- Adds Modulemd.Translation and Modulemd.TranslationEntry objects
+- Adds Modulemd.ImprovedModule object that collects streams, defaults and
+  translations together
+- Adds new Modulemd.index_from_*() funtions to get a hash table of
+  Modulemd.ImprovedModule objects for easier searching
+- Moves function documentation to the public headers
+- Corrects the license headers to MIT (they were incorrectly listed as MITNFA
+  in previous releases)
+- Makes the "eol" field optional for Modulemd.ServiceLevel
+- Clean up HTML documentation
+- Fixes a type error on 32-bit systems
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Sat Jun 23 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.5.2-1
+- Update to libdmodulemd 1.5.2
+- Don't free uninitialized memory
+
+* Fri Jun 22 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.5.1-2
+- Fix buildopts property not being initialized
+
+* Tue Jun 19 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.5.1-1
+- Update to version 1.5.1
+- Re-enable build-time tests
+
+* Mon Jun 18 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.5.0-2
+- Temporarily disable build-time tests
+
+* Mon Jun 18 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.5.0-1
+- Update to version 1.5.0
+- Adds support for "intents" in Modulemd.Defaults
+- Adds `Modulemd.get_version()`
+- Adds support for RPM whitelists in the buildopts
+- Adds a new object: Modulemd.Buildopts
+- Deprecates Modulemd.Module.get_rpm_buildopts()
+- Deprecates Modulemd.Module.set_rpm_buildopts()
+- Fixes some missing license blurbs
+
+* Tue May 08 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.4.1-1
+- Update to version 1.4.1
+- Improve output from modulemd-validator
+- Drop upstreamed patches
+
+* Wed Apr 25 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.4.0-2
+- Fix pointer math error
+- Fix compilation failure in Fedora build system
+
+* Wed Apr 25 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.4.0-1
+- Update to version 1.4.0
+- Adds new API for returning failed YAML subdocuments
+- Stop emitting log messages by default (polluting consumer logs)
+- Validate RPM artifacts for proper NEVRA format
+- Improve the validator tool
+- Drop upstreamed patch
+
+* Mon Apr 16 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.3.0-2
+- Fix serious error in modulemd-defaults emitter
+
+* Fri Apr 13 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.3.0-1
+- Update to version 1.3.0
+- New Public Objects:
+  * Modulemd.Prioritizer - tool to merge module defaults
+- New Public Functions:
+  * Modulemd.SimpleSet.is_equal()
+  * Modulemd.Defaults.copy()
+  * Modulemd.Defaults.merge()
+
+* Wed Apr 04 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.2.0-1
+- Update to version 1.2.0
+- New Functions:
+  * Modulemd.objects_from_file()
+  * Modulemd.objects_from_string()
+  * Modulemd.dump()
+  * Modulemd.dumps()
+  * Modulemd.Defaults.new_from_file()
+  * Modulemd.Defaults.new_from_string()
+- Deprecated Functions:
+  * Modulemd.Module.new_all_from_file()
+  * Modulemd.Module.new_all_from_file_ext()
+  * Modulemd.Module.new_all_from_string()
+  * Modulemd.Module.new_all_from_string_ext()
+  * Modulemd.Module.dump_all()
+  * Modulemd.Module.dumps_all()
+- Bugfixes
+  * Properly use G_BEGIN_DECLS and G_END_DECLS in headers
+  * Assorted fixes for memory ownership in GObject Introspection
+
+* Fri Mar 23 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.1.3-2
+- Fix missing G_END_DECL from public headers
+
+* Mon Mar 19 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.1.3-1
+- Fix numerous memory leaks
+- Drop upstreamed patch
+
+* Thu Mar 15 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.1.2-1
+- Update to version 1.1.2
+- Revert backwards-incompatible API change
+- Fix version string in pkgconfig file
+
+* Thu Mar 15 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.1.1-1
+- Update to version 1.1.1
+- Make default stream and profiles optional
+- Fixes: https://github.com/fedora-modularity/libmodulemd/issues/25
+- Fixes: https://github.com/fedora-modularity/libmodulemd/issues/26
+- Fixes: https://github.com/fedora-modularity/libmodulemd/issues/27
+
+* Wed Mar 14 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.1.0-1
+- Update to version 1.1.0
+- Adds support for handling modulemd-defaults YAML documents
+- Adds peek()/dup() routines to all object properties
+- Adds Modulemd.Module.dup_nsvc() to retrieve the canonical form of the unique module identifier.
+- Adds support for boolean types in the XMD section
+- Revert obsoletion of pythonX-modulemd packages for now
+
+* Tue Mar 13 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.0.4-2
+- Obsolete unsupported pythonX-modulemd packages
+
+* Tue Feb 27 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.0.4-1
+- Update to 1.0.4
+- Rework version autodetection
+- Avoid infinite loop on unparseable YAML
+
+* Sun Feb 25 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.0.3-1
+- RPM components are properly emitted when no module components exist
+- Parser works around late determination of modulemd version
+
+* Fri Feb 16 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.0.2-1
+- Be more strict with certain parser edge-cases
+- Replace popt argument processing with glib
+- Drop upstreamed patches
+
+* Thu Feb 15 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.0.1-2
+- Handle certain unlikely format violations
+
+* Thu Feb 15 2018 Stephen Gallagher <sgallagh@redhat.com> - 1.0.1-1
+- Support modulemd v2
+- Add tool to do quick validation of modulemd
+- Fix memory management
+- Warn and ignore unparseable sub-documents in the YAML
+- Fix several memory issues detected by Coverity scan
+
+* Tue Feb 06 2018 Stephen Gallagher <sgallagh@redhat.com> - 0.2.2-1
+- Update to libmodulemd 0.2.2
+- Fix numerous minor memory leaks
+- Fix issues with EOL/SL dates
+
+* Tue Feb 06 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.2.1-3
+- Own appropriate directories
+
+* Fri Feb 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.2.1-2
+- Switch to %%ldconfig_scriptlets
+
+* Fri Jan 05 2018 Stephen Gallagher <sgallagh@redhat.com> - 0.2.1-1
+- Update to libmodulemd 0.2.1
+- Add 'name' property for Profiles
+
+* Thu Oct 05 2017 Stephen Gallagher <sgallagh@redhat.com> - 0.2.0-2
+- Add missing BuildRequires for gtk-doc
+
+* Thu Oct 05 2017 Stephen Gallagher <sgallagh@redhat.com> - 0.2.0-1
+- Update to libmodulemd 0.2.0
+- Adds gtk-doc generated documentation
+- (ABI-break) Makes all optional properties accept NULL as a value to clear
+  them
+- (ABI-break) Modulemd.SimpleSet takes a STRV (char **) instead of a
+  GLib.PtrArray
+- Fixes a bug where the name was not always set for components
+- Adds support for dumping YAML from the introspected API
+- Includes add/remove routines for profiles
+
+* Sat Sep 30 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.1.0-5
+- Use %%_isa in Requires for main package from devel
+
+* Mon Sep 18 2017 Stephen Gallagher <sgallagh@redhat.com> - 0.1.0-4
+- Correct the license to MIT
+
+* Mon Sep 18 2017 Stephen Gallagher <sgallagh@redhat.com> - 0.1.0-3
+- Modifications requested during package review
+
+* Fri Sep 15 2017 Stephen Gallagher <sgallagh@redhat.com> - 0.1.0-2
+- First public release
+