1ecd39e
%global with_mingw 0
1ecd39e
1ecd39e
%if 0%{?fedora}
1ecd39e
%global with_mingw 1
1ecd39e
%endif
1ecd39e
Richard Hughes 8800a9c
%global glib2_version 2.45.8
Richard Hughes 8800a9c
Richard Hughes 8800a9c
Summary:   Library for querying compressed XML metadata
Richard Hughes 8800a9c
Name:      libxmlb
Richard Hughes 462a814
Version:   0.3.19
Richard Hughes aa97def
Release:   %autorelease
Richard Hughes dfa7630
License:   LGPL-2.1-or-later
Richard Hughes aa97def
URL:       https://github.com/hughsie/%{name}
Richard Hughes aa97def
Source0:   https://github.com/hughsie/%{name}/releases/download/%{version}/%{name}-%{version}.tar.xz
Richard Hughes 8800a9c
Richard Hughes b09be2f
Patch1:    0001-Fix-writing-files-on-Windows.patch
Richard Hughes b09be2f
Richard Hughes 8800a9c
BuildRequires: glib2-devel >= %{glib2_version}
Richard Hughes 8800a9c
BuildRequires: gtk-doc
Richard Hughes 393f55e
BuildRequires: libstemmer-devel
Richard Hughes 8800a9c
BuildRequires: meson
Richard Hughes 8800a9c
BuildRequires: gobject-introspection-devel
Richard Hughes 886582b
BuildRequires: xz-devel
Richard Hughes aa97def
BuildRequires: libzstd-devel
Richard Hughes 685bf38
BuildRequires: python3-setuptools
Richard Hughes 8800a9c
1ecd39e
%if %{with_mingw}
1ecd39e
BuildRequires: mingw32-filesystem >= 95
1ecd39e
BuildRequires: mingw32-gcc-c++
1ecd39e
BuildRequires: mingw32-glib2
1ecd39e
BuildRequires: mingw32-xz
1ecd39e
BuildRequires: mingw32-zstd
1ecd39e
1ecd39e
BuildRequires: mingw64-filesystem >= 95
1ecd39e
BuildRequires: mingw64-gcc-c++
1ecd39e
BuildRequires: mingw64-glib2
1ecd39e
BuildRequires: mingw64-xz
1ecd39e
BuildRequires: mingw64-zstd
1ecd39e
%endif
1ecd39e
Richard Hughes 8800a9c
# needed for the self tests
Richard Hughes 8800a9c
BuildRequires: shared-mime-info
Richard Hughes 8800a9c
Richard Hughes 8800a9c
Requires: glib2%{?_isa} >= %{glib2_version}
Richard Hughes 8800a9c
Requires: shared-mime-info
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%description
Richard Hughes 8800a9c
XML is slow to parse and strings inside the document cannot be memory mapped as
Richard Hughes 8800a9c
they do not have a trailing NUL char. The libxmlb library takes XML source, and
Richard Hughes 8800a9c
converts it to a structured binary representation with a deduplicated string
Richard Hughes 8800a9c
table -- where the strings have the NULs included.
Richard Hughes 8800a9c
Richard Hughes 8800a9c
This allows an application to mmap the binary XML file, do an XPath query and
Richard Hughes 8800a9c
return some strings without actually parsing the entire document. This is all
Richard Hughes 8800a9c
done using (almost) zero allocations and no actual copying of the binary data.
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%package devel
Richard Hughes 8800a9c
Summary: Development package for %{name}
Richard Hughes 8800a9c
Requires: %{name}%{?_isa} = %{version}-%{release}
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%description devel
Richard Hughes 8800a9c
Files for development with %{name}.
Richard Hughes 8800a9c
Richard Hughes 5be7483
%package tests
Richard Hughes 5be7483
Summary: Files for installed tests
Richard Hughes 5be7483
Richard Hughes 5be7483
%description tests
Richard Hughes 5be7483
Executable and data files for installed tests.
Richard Hughes 5be7483
1ecd39e
%if %{with_mingw}
1ecd39e
%package -n mingw32-libxmlb
1ecd39e
Summary: MinGW library for querying compressed XML metadata
1ecd39e
BuildArch: noarch
1ecd39e
1ecd39e
%description -n mingw32-libxmlb
1ecd39e
MinGW32 libxmlb library.
1ecd39e
1ecd39e
%package -n mingw64-libxmlb
1ecd39e
Summary: MinGW library for querying compressed XML metadata
1ecd39e
BuildArch: noarch
1ecd39e
1ecd39e
%description -n mingw64-libxmlb
1ecd39e
MinGW64 libxmlb library.
1ecd39e
1ecd39e
%{?mingw_debug_package}
1ecd39e
%endif
1ecd39e
Richard Hughes 8800a9c
%prep
1ecd39e
%autosetup -p1
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%build
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%meson \
Richard Hughes 8800a9c
    -Dgtkdoc=true \
Richard Hughes 8800a9c
    -Dtests=true
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%meson_build
Richard Hughes 8800a9c
1ecd39e
%if %{with_mingw}
1ecd39e
%mingw_meson -Dintrospection=false -Dtests=false -Dgtkdoc=false
1ecd39e
%mingw_ninja
1ecd39e
%endif
1ecd39e
Richard Hughes 8800a9c
%check
Richard Hughes 8800a9c
%meson_test
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%install
Richard Hughes 8800a9c
%meson_install
Richard Hughes 8800a9c
1ecd39e
%if %{with_mingw}
1ecd39e
%mingw_ninja_install
1ecd39e
%mingw_debug_install_post
1ecd39e
rm -f $RPM_BUILD_ROOT/%{mingw32_mandir}/man1/xb-tool.1*
1ecd39e
rm -f $RPM_BUILD_ROOT/%{mingw64_mandir}/man1/xb-tool.1*
1ecd39e
%endif
1ecd39e
Richard Hughes 8800a9c
%files
Richard Hughes 8800a9c
%doc README.md
Richard Hughes 8800a9c
%license LICENSE
Richard Hughes e68a8cd
%{_bindir}/xb-tool
Richard Hughes e68a8cd
%{_mandir}/man1/xb-tool.1*
Richard Hughes 8800a9c
%dir %{_libdir}/girepository-1.0
Richard Hughes 685bf38
%{_libdir}/girepository-1.0/Xmlb-2.0.typelib
Richard Hughes ab0361b
%{_libdir}/libxmlb.so.2*
Richard Hughes 8800a9c
Richard Hughes 8800a9c
%files devel
Richard Hughes 8800a9c
%dir %{_datadir}/gir-1.0
Richard Hughes 685bf38
%{_datadir}/gir-1.0/Xmlb-2.0.gir
Richard Hughes 8800a9c
%dir %{_datadir}/gtk-doc
Richard Hughes 8800a9c
%dir %{_datadir}/gtk-doc/html
Richard Hughes 8800a9c
%{_datadir}/gtk-doc/html/libxmlb
Richard Hughes 685bf38
%{_includedir}/libxmlb-2
Richard Hughes 8800a9c
%{_libdir}/libxmlb.so
Richard Hughes 8800a9c
%{_libdir}/pkgconfig/xmlb.pc
Richard Hughes 8800a9c
Richard Hughes 5be7483
%files tests
Richard Hughes 685bf38
%dir %{_libexecdir}/installed-tests/libxmlb
Richard Hughes ca89e47
%{_libexecdir}/installed-tests/libxmlb/xb-self-test
Richard Hughes 36af9d2
%{_libexecdir}/installed-tests/libxmlb/test.*
Richard Hughes 5be7483
%dir %{_datadir}/installed-tests/libxmlb
Richard Hughes 685bf38
%{_datadir}/installed-tests/libxmlb/libxmlb.test
Richard Hughes 5be7483
1ecd39e
%if %{with_mingw}
1ecd39e
%files -n mingw32-libxmlb
1ecd39e
%license LICENSE
1ecd39e
%{mingw32_bindir}/xb-tool.exe
1ecd39e
%{mingw32_bindir}/libxmlb-2.dll
1ecd39e
%{mingw32_libdir}/libxmlb.dll.a
1ecd39e
%{mingw32_includedir}/libxmlb-2
1ecd39e
%{mingw32_libdir}/pkgconfig/xmlb.pc
1ecd39e
1ecd39e
%files -n mingw64-libxmlb
1ecd39e
%license LICENSE
1ecd39e
%{mingw64_bindir}/xb-tool.exe
1ecd39e
%{mingw64_bindir}/libxmlb-2.dll
1ecd39e
%{mingw64_libdir}/libxmlb.dll.a
1ecd39e
%{mingw64_includedir}/libxmlb-2
1ecd39e
%{mingw64_libdir}/pkgconfig/xmlb.pc
1ecd39e
%endif
1ecd39e
Richard Hughes 8800a9c
%changelog
Richard Hughes aa97def
%autochangelog