%global baserelease 1 %global v2_epoch 0 %global v2_major 2 %global v2_minor 8 %global v2_patch 2 %global v2_release %{baserelease} %global libmodulemd_v2_version %{v2_major}.%{v2_minor}.%{v2_patch} %global libmodulemd_v1_version 1.8.16 # This is trickery to ensure that the upgrade path for libmodulemd1 is always # clean and associated with the appropriate v2 build %global libmodulemd_v1_release %{v2_epoch}.%{v2_major}.%{v2_minor}.%{v2_patch}.%{v2_release} Name: libmodulemd Version: %{libmodulemd_v2_version} Release: %{baserelease}%{?dist} Summary: Module metadata manipulation library License: MIT URL: https://github.com/fedora-modularity/libmodulemd Source0: %{url}/releases/download/%{name}-%{version}/modulemd-%{version}.tar.xz Source1: %{url}/releases/download/%{name}-%{libmodulemd_v1_version}/modulemd-%{libmodulemd_v1_version}.tar.xz 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 BuildRequires: python3-devel BuildRequires: python3-gobject-base %ifarch %{valgrind_arches} BuildRequires: valgrind %endif # Patches %description C Library for manipulating module metadata files. See https://github.com/fedora-modularity/libmodulemd/blob/master/README.md for more details. %package -n python3-%{name} Summary: Python 3 bindings for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python3-gobject-base Requires: %{py3_dist six} Obsoletes: python3-modulemd < 1.3.4 %description -n python3-%{name} Python 3 bindings for %{name} %package devel Summary: Development files for libmodulemd Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development files for libmodulemd. %package -n libmodulemd1 Summary: Compatibility package for libmodulemd 1.x Version: %{libmodulemd_v1_version} Release: %{libmodulemd_v1_release} Obsoletes: libmodulemd < 2 Provides: libmodulemd = %{libmodulemd_v1_version}-%{release} Provides: libmodulemd%{?_isa} = %{libmodulemd_v1_version}-%{release} %description -n libmodulemd1 Compatibility library for libmodulemd 1.x %package -n libmodulemd1-devel Summary: Compatibility development package for libmodulemd 1.x Version: %{libmodulemd_v1_version} Release: %{libmodulemd_v1_release} Requires: libmodulemd1%{?_isa} = %{libmodulemd_v1_version}-%{release} Conflicts: %{name}-devel Obsoletes: libmodulemd-devel < 2 Provides: libmodulemd-devel = %{libmodulemd_v1_version}-%{release} RemovePathPostfixes: .compat %description -n libmodulemd1-devel Development files for libmodulemd 1.x %package -n python3-libmodulemd1 Summary: Python 3 bindings for %{name}1 Version: %{libmodulemd_v1_version} Requires: libmodulemd1 = %{libmodulemd_v1_version}-%{release} Requires: python3-gobject-base Obsoletes: python3-libmodulemd < 2 Provides: python3-libmodulemd = %{libmodulemd_v1_version}-%{release} %description -n python3-libmodulemd1 Python 3 bindings for libmodulemd1 %prep %setup -c %setup -c -T -D -a 1 %build # Build the v1 API first pushd modulemd-%{libmodulemd_v1_version} %define _vpath_builddir api1 %meson -Ddeveloper_build=false %meson_build popd # Build the v2 API pushd modulemd-%{libmodulemd_v2_version} %define _vpath_builddir api2 %ifarch aarch64 # aarch64 builders have I/O issues that often causes the valgrind tests to # time out. Skip them from the RPM build export MMD_SKIP_VALGRIND=True %endif %meson -Ddeveloper_build=false -Dskip_formatters=true -Dwith_py3_overrides=true -Dwith_py2_overrides=false %meson_build popd %check export LC_CTYPE=C.utf8 %ifarch %{power64} s390x # Valgrind is broken on ppc64[le] with GCC7: # https://bugs.kde.org/show_bug.cgi?id=386945 export MMD_SKIP_VALGRIND=1 %endif %ifnarch %{valgrind_arches} export MMD_SKIP_VALGRIND=1 %endif pushd modulemd-%{libmodulemd_v1_version} %define _vpath_builddir api1 %{__meson} test -C %{_vpath_builddir} %{?_smp_mesonflags} --print-errorlogs -t 10 popd pushd modulemd-%{libmodulemd_v2_version} %define _vpath_builddir api2 %{__meson} test -C %{_vpath_builddir} %{?_smp_mesonflags} --print-errorlogs -t 10 popd %install pushd modulemd-%{libmodulemd_v1_version} %define _vpath_builddir api1 %meson_install popd pushd modulemd-%{libmodulemd_v2_version} %define _vpath_builddir api2 %meson_install popd # Create a symlink for the libmodulemd1-devel package ln -s libmodulemd.so.%{libmodulemd_v1_version} \ %{buildroot}%{_libdir}/%{name}.so.compat %files %license modulemd-%{libmodulemd_v2_version}/COPYING %doc modulemd-%{libmodulemd_v2_version}/README.md %{_bindir}/modulemd-validator %{_libdir}/%{name}.so.2* %dir %{_libdir}/girepository-1.0 %{_libdir}/girepository-1.0/Modulemd-2.0.typelib %files devel %{_libdir}/%{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/ %files -n python3-%{name} %{python3_sitearch}/gi/overrides/ %files -n python3-libmodulemd1 %files -n libmodulemd1 %license modulemd-%{libmodulemd_v1_version}/COPYING %doc modulemd-%{libmodulemd_v1_version}/README.md %{_bindir}/modulemd-validator-v1 %{_libdir}/%{name}.so.1* %dir %{_libdir}/girepository-1.0 %{_libdir}/girepository-1.0/Modulemd-1.0.typelib %files -n libmodulemd1-devel %{_libdir}/%{name}.so.compat %{_libdir}/pkgconfig/modulemd.pc %{_includedir}/modulemd/ %dir %{_datadir}/gir-1.0 %{_datadir}/gir-1.0/Modulemd-1.0.gir %dir %{_datadir}/gtk-doc %dir %{_datadir}/gtk-doc/html %{_datadir}/gtk-doc/html/modulemd-1.0/ %changelog * Tue Oct 29 2019 Stephen Gallagher - 2.8.2-1 - Update to versions 2.8.2 and 1.8.16 - Resolves: rhbz#1752511 * Wed Oct 23 2019 Stephen Gallagher - 2.5.0-4 - Improve default merging logic when dealing with third-party repos - Resolves: rhbz#1761805 * Wed May 29 2019 Stephen Gallagher - 2.5.0-2 - Fix memory corruption error using Module.search_rpms() from python - Speed up valgrind tests - Resolves: rhbz#1714766 * Wed May 22 2019 Stephen Gallagher - 2.5.0-1 - Rebase to 2.5.0 and 1.8.11 - Related: rhbz#1693680 * Mon May 13 2019 Stephen Gallagher - 2.4.0-1 - Rebase to 2.4.0 and 1.8.10 - Resolves: rhbz#1693680 * Fri Jan 18 2019 Stephen Gallagher - 2.0.0-5 - Don't fail merges when default streams differ - Resolves: rhbz#1666871 * Wed Jan 16 2019 Stephen Gallagher - 2.0.0-4 - Include modified value when copying Defaults objects - Resolves: rhbz#1665465 * Thu Dec 13 2018 Stephen Gallagher - 2.0.0-3 - Keep libmodulemd1 in sync with libmodulemd * Thu Dec 13 2018 Stephen Gallagher - 2.0.0-2 - Fix package location of modulemd-validator * Thu Dec 13 2018 Stephen Gallagher - 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 - Add missing BuildRequires * Tue Dec 11 2018 Stephen Gallagher - 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 - 2.0.0-0.beta1 - Total rewrite to 2.0 API - Resolves: rhbz#1646436 * Thu Aug 09 2018 Stephen Gallagher - 1.6.2-2 - Fix backwards-incompatible API change - Resolves: rhbz#1607083 * Tue Aug 07 2018 Stephen Gallagher - 1.6.2-1 - Update to 1.6.2 - Make buildorder a signed integer to match modulemd specification - Obsolete unsupported pythonX-modulemd packages * Fri Aug 3 2018 Florian Weimer - 1.6.1-2 - Honor %%{valgrind_arches} * Fri Jul 20 2018 Stephen Gallagher - 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 - 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 - 1.5.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Sat Jun 23 2018 Stephen Gallagher - 1.5.2-1 - Update to libdmodulemd 1.5.2 - Don't free uninitialized memory * Fri Jun 22 2018 Stephen Gallagher - 1.5.1-2 - Fix buildopts property not being initialized * Tue Jun 19 2018 Stephen Gallagher - 1.5.1-1 - Update to version 1.5.1 - Re-enable build-time tests * Mon Jun 18 2018 Stephen Gallagher - 1.5.0-2 - Temporarily disable build-time tests * Mon Jun 18 2018 Stephen Gallagher - 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 - 1.4.1-1 - Update to version 1.4.1 - Improve output from modulemd-validator - Drop upstreamed patches * Wed Apr 25 2018 Stephen Gallagher - 1.4.0-2 - Fix pointer math error - Fix compilation failure in Fedora build system * Wed Apr 25 2018 Stephen Gallagher - 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 - 1.3.0-2 - Fix serious error in modulemd-defaults emitter * Fri Apr 13 2018 Stephen Gallagher - 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 - 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 - 1.1.3-2 - Fix missing G_END_DECL from public headers * Mon Mar 19 2018 Stephen Gallagher - 1.1.3-1 - Fix numerous memory leaks - Drop upstreamed patch * Thu Mar 15 2018 Stephen Gallagher - 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 - 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 - 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 - 1.0.4-2 - Obsolete unsupported pythonX-modulemd packages * Tue Feb 27 2018 Stephen Gallagher - 1.0.4-1 - Update to 1.0.4 - Rework version autodetection - Avoid infinite loop on unparseable YAML * Sun Feb 25 2018 Stephen Gallagher - 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 - 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 - 1.0.1-2 - Handle certain unlikely format violations * Thu Feb 15 2018 Stephen Gallagher - 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 - 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 - 0.2.1-3 - Own appropriate directories * Fri Feb 02 2018 Igor Gnatenko - 0.2.1-2 - Switch to %%ldconfig_scriptlets * Fri Jan 05 2018 Stephen Gallagher - 0.2.1-1 - Update to libmodulemd 0.2.1 - Add 'name' property for Profiles * Thu Oct 05 2017 Stephen Gallagher - 0.2.0-2 - Add missing BuildRequires for gtk-doc * Thu Oct 05 2017 Stephen Gallagher - 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 - 0.1.0-5 - Use %%_isa in Requires for main package from devel * Mon Sep 18 2017 Stephen Gallagher - 0.1.0-4 - Correct the license to MIT * Mon Sep 18 2017 Stephen Gallagher - 0.1.0-3 - Modifications requested during package review * Fri Sep 15 2017 Stephen Gallagher - 0.1.0-2 - First public release