diff --git a/SPECS/libmodulemd.spec b/SPECS/libmodulemd.spec new file mode 100644 index 0000000..020e196 --- /dev/null +++ b/SPECS/libmodulemd.spec @@ -0,0 +1,470 @@ +%global baserelease 2 +%global v2_epoch 0 +%global v2_major 2 +%global v2_minor 9 +%global v2_patch 4 +%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 +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. + + +%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} +Release: %{libmodulemd_v1_release} +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 +%meson -Ddeveloper_build=false -Dwith_manpages=enabled +%meson_build +popd + +%check + +export LC_CTYPE=C.utf8 + +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 +%{_mandir}/man1/modulemd-validator.1* +%{_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 +* Wed May 20 2020 Stephen Gallagher - 2.9.4-2 +- Update to 2.9.4 +- Drop valgrind tests from RPM build +- Resolves: RHBZ#1797749 + +* 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 +