[packages/glycin] - workaround broken hacks to build introspection+vapi+docs

qboosh qboosh at pld-linux.org
Fri Feb 7 17:55:16 CET 2025


commit c26c3acda3dab978533ef50b60259f0a4b649ffb
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Fri Feb 7 17:28:48 2025 +0100

    - workaround broken hacks to build introspection+vapi+docs

 glycin.spec | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 105 insertions(+), 8 deletions(-)
---
diff --git a/glycin.spec b/glycin.spec
index bdb8731..96e988d 100644
--- a/glycin.spec
+++ b/glycin.spec
@@ -1,4 +1,7 @@
-# TODO: introspection, vapi, capi_docs (there are some meson issues with fake library stubs)
+#
+# Conditional build:
+%bcond_without	apidocs	 # API documentation
+
 Summary:	Sandboxed and extendable image rendering
 Summary(pl.UTF-8):	Rozszerzalne renderowanie obrazów w piaskownicy
 Name:		glycin
@@ -11,7 +14,9 @@ Source0:	https://download.gnome.org/sources/glycin/1.1/%{name}-%{version}.tar.xz
 URL:		https://gitlab.gnome.org/sophie-h/glycin
 BuildRequires:	cairo-devel >= 1.17.0
 BuildRequires:	cargo
+%{?with_apidocs:BuildRequires:	gi-docgen}
 BuildRequires:	glib2-devel >= 1:2.60
+BuildRequires:	gobject-introspection-devel
 BuildRequires:	gtk4-devel >= 4.12.0
 BuildRequires:	lcms2-devel >= 2.14
 BuildRequires:	libheif-devel >= 1.17.0
@@ -21,8 +26,12 @@ BuildRequires:	libseccomp-devel >= 2.5.0
 BuildRequires:	meson >= 1.2
 BuildRequires:	ninja >= 1.5
 BuildRequires:	pkgconfig
-BuildRequires:	rpmbuild(macros) >= 2.038
+BuildRequires:	rpm-build >= 4.6
+BuildRequires:	rpmbuild(macros) >= 2.042
 BuildRequires:	rust >= 1.77
+BuildRequires:	tar >= 1:1.22
+BuildRequires:	vala
+BuildRequires:	xz
 Requires:	glib2 >= 1:2.60
 Requires:	lcms2 >= 2.14
 Requires:	libseccomp >= 2.5.0
@@ -64,6 +73,32 @@ Static glycin library.
 %description static -l pl.UTF-8
 Statyczna biblioteka glycin.
 
+%package -n vala-glycin
+Summary:	Vala API for glycin library
+Summary(pl.UTF-8):	API języka Vala do biblioteki glycin
+Group:		Development/Libraries
+Requires:	%{name}-devel = %{version}-%{release}
+Requires:	vala
+BuildArch:	noarch
+
+%description -n vala-glycin
+Vala API for glycin library.
+
+%description -n vala-glycin -l pl.UTF-8
+API języka Vala do biblioteki glycin.
+
+%package apidocs
+Summary:	API documentation for glycin library
+Summary(pl.UTF-8):	Dokumentacja API biblioteki glycin
+Group:		Documentation
+BuildArch:	noarch
+
+%description apidocs
+API documentation for glycin library.
+
+%description apidocs -l pl.UTF-8
+Dokumentacja API biblioteki glycin.
+
 %package gtk4
 Summary:	Sandboxed and extendable image decoding for GTK 4
 Summary(pl.UTF-8):	Rozszerzalne renderowanie obrazów w piaskownicy dla GTK 4
@@ -102,6 +137,32 @@ Static glycin-gtk4 library.
 %description gtk4-static -l pl.UTF-8
 Statyczna biblioteka glycin-gtk4.
 
+%package -n vala-glycin-gtk4
+Summary:	Vala API for glycin-gtk4 library
+Summary(pl.UTF-8):	API języka Vala do biblioteki glycin-gtk4
+Group:		Development/Libraries
+Requires:	%{name}-gtk4-devel = %{version}-%{release}
+Requires:	vala-glycin = %{version}-%{release}
+BuildArch:	noarch
+
+%description -n vala-glycin-gtk4
+Vala API for glycin library.
+
+%description -n vala-glycin-gtk4 -l pl.UTF-8
+API języka Vala do biblioteki glycin.
+
+%package gtk4-apidocs
+Summary:	API documentation for glycin-gtk4 library
+Summary(pl.UTF-8):	Dokumentacja API biblioteki glycin-gtk4
+Group:		Documentation
+BuildArch:	noarch
+
+%description gtk4-apidocs
+API documentation for glycin-gtk4 library.
+
+%description gtk4-apidocs -l pl.UTF-8
+Dokumentacja API biblioteki glycin-gtk4.
+
 %package loaders
 Summary:	Sandboxed image rendering
 Summary(pl.UTF-8):	Renderowanie obrazów w piaskownicy
@@ -130,20 +191,30 @@ wczytujących działających w piaskownicy.
 %build
 export PKG_CONFIG_ALLOW_CROSS=1
 export RUSTFLAGS="%{rpmrustflags}"
-%meson build \
-	-Dintrospection=false \
-	-Dvapi=false
+%meson \
+	%{?with_apidocs:-Dcapi_docs=true}
+
+# There are some strange hacks with empty stub libraries for meson overwritten by rust libs.
+# Because of some mistaken dependency processing gir build fails after linking to empty stubs
+# instead of real libraries...
+# Workaround: ensure libs are overwritten by rust copies before further processing for gir.
+%meson_build libglycin/libglycin-copy-library
+
+%meson_build libglycin/libglycin-gtk4-copy-library
 
 %meson_build
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
-%ifarch x32
 export PKG_CONFIG_ALLOW_CROSS=1
-%endif
 %meson_install
 
+%if %{with apidocs}
+install -d $RPM_BUILD_ROOT%{_gidocdir}
+%{__mv} $RPM_BUILD_ROOT%{_docdir}/libglycin*-1 $RPM_BUILD_ROOT%{_gidocdir}
+%endif
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -157,31 +228,57 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %doc NEWS LICENSE README.md
 %attr(755,root,root) %{_libdir}/libglycin-1.so.0
+%{_libdir}/girepository-1.0/Gly-1.typelib
 
 %files devel
 %defattr(644,root,root,755)
 %{_libdir}/libglycin-1.so
 %{_includedir}/glycin-1
+%{_datadir}/gir-1.0/Gly-1.gir
 %{_pkgconfigdir}/glycin-1.pc
 
 %files static
 %defattr(644,root,root,755)
 %{_libdir}/libglycin-1.a
 
+%files -n vala-glycin
+%defattr(644,root,root,755)
+%{_datadir}/vala/vapi/libglycin-1.deps
+%{_datadir}/vala/vapi/libglycin-1.vapi
+
+%if %{with apidocs}
+%files apidocs
+%defattr(644,root,root,755)
+%{_gidocdir}/libglycin-1
+%endif
+
 %files gtk4
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/libglycin-gtk4-1.so.0
-%{_pkgconfigdir}/glycin-gtk4-1.pc
+%{_libdir}/girepository-1.0/GlyGtk4-1.typelib
 
 %files gtk4-devel
 %defattr(644,root,root,755)
 %{_libdir}/libglycin-gtk4-1.so
 %{_includedir}/glycin-gtk4-1
+%{_datadir}/gir-1.0/GlyGtk4-1.gir
+%{_pkgconfigdir}/glycin-gtk4-1.pc
 
 %files gtk4-static
 %defattr(644,root,root,755)
 %{_libdir}/libglycin-gtk4-1.a
 
+%files -n vala-glycin-gtk4
+%defattr(644,root,root,755)
+%{_datadir}/vala/vapi/libglycin-gtk4-1.deps
+%{_datadir}/vala/vapi/libglycin-gtk4-1.vapi
+
+%if %{with apidocs}
+%files gtk4-apidocs
+%defattr(644,root,root,755)
+%{_gidocdir}/libglycin-gtk4-1
+%endif
+
 %files loaders
 %defattr(644,root,root,755)
 %doc NEWS LICENSE README.md
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/glycin.git/commitdiff/c26c3acda3dab978533ef50b60259f0a4b649ffb



More information about the pld-cvs-commit mailing list