# Template file for 'glib'
# keep in sync with glib-bootstrap
pkgname=glib
version=2.82.4
revision=1
build_style=meson
build_helper="qemu"
# static version is necessary for qemu-user
# also disable LTO, otherwise there are multiple failures when linking qemu
configure_args="-Dman=true -Dselinux=disabled -Dintrospection=enabled
 $(vopt_bool gtk_doc documentation) --default-library=both -Db_lto=false"
hostmakedepends="gettext pkg-config gobject-introspection-bootstrap
 libxslt docbook-xsl $(vopt_if gtk_doc gi-docgen) python3-packaging python3-docutils"
makedepends="zlib-devel pcre2-devel libffi-devel dbus-devel elfutils-devel libmount-devel"
checkdepends="glib-bootstrap desktop-file-utils shared-mime-info dbus python3-pytest"
short_desc="GNU library of C routines"
maintainer="Orphaned <orphan@voidlinux.org>"
license="LGPL-2.1-or-later"
homepage="https://wiki.gnome.org/Projects/GLib"
changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-82/NEWS"
#changelog="https://gitlab.gnome.org/GNOME/glib/raw/main/NEWS"
distfiles="${GNOME_SITE}/glib/${version%.*}/glib-${version}.tar.xz"
checksum=37dd0877fe964cd15e9a2710b044a1830fb1bd93652a6d0cb6b8b2dff187c709
conflicts="gir-freedesktop<1.80.0_1" # glib typelibs are now in glib
make_check_pre="dbus-run-session"

build_options="gtk_doc"
build_options_default="gtk_doc"
desc_option_gtk_doc="Build Glib API docs"

if [ "$CROSS_BUILD" ]; then
	hostmakedepends+=" prelink-cross"
	makedepends+=" gobject-introspection-bootstrap"
fi

post_patch() {
	# Timer test is flaky on 32 bit (does float comparisons)
	if [ "${XBPS_TARGET_WORDSIZE}" = "32" ]; then
		vsed -e "s/'timer' : {},//" -i glib/tests/meson.build
	fi
	# Test fails in CI
	vsed -e '/test_cleanup_handles_errors)/d' -i glib/tests/utils-isolated.c
}

post_install() {
	# Install introspection wrappers for cross compiling
	vbin ${FILESDIR}/gi-xbps-qemuwrapper

	# Install emulator wrappers for tools that require it
	for tool in gi-compile-repository gi-decompile-typelib gi-inspect-typelib; do
		mv ${DESTDIR}/usr/bin/${tool}{,.wrapped}
		sed -e "s|@TOOL@|${tool}|" ${FILESDIR}/gi-tool-emulator-wrapper > gi-tool-emulator-wrapper
		vbin gi-tool-emulator-wrapper ${tool}
	done
}

pre_check() {
	# machine-id is a random, non-zero value
	echo 'dcb30309cd6c8b7cc20383d85a5c7012' > /etc/machine-id
}

post_check() {
	rm /etc/machine-id
}

libglib-devel_package() {
	depends="${makedepends/gobject-introspection-bootstrap/} ${sourcepkg}>=${version}_${revision}"
	conflicts="libgirepository-devel<1.80.0_1"
	short_desc+=" - development files"
	lib32files="/usr/lib/glib-2.0/include/glibconfig.h"
	pkg_install() {
		vmove usr/include
		vmove usr/share/gir-1.0
		vmove usr/lib/glib-2.0
		vmove usr/lib/pkgconfig
		vmove "usr/lib/*.so"
		vmove "usr/lib/*.a"
	}
}

glib-devel_package() {
	depends="python3-packaging libglib-devel>=${version}_${revision}"
	short_desc+=" - development files"
	python_version=3
	pycompile_dirs="usr/share/glib-2.0/codegen usr/share/glib-2.0/gdb"
	pkg_install() {
		vmove usr/bin/glib-compile-resources
		vmove usr/bin/glib-genmarshal
		vmove usr/bin/glib-mkenums
		vmove usr/bin/gtester-report
		vmove usr/bin/gdbus-codegen
		vmove usr/bin/gtester
		vmove usr/bin/glib-gettextize
		vmove "usr/bin/gi-*"
		vmove usr/share/man/man1/glib-compile-resources.1
		vmove usr/share/man/man1/glib-gettextize.1
		vmove usr/share/man/man1/gtester.1
		vmove usr/share/man/man1/glib-mkenums.1
		vmove usr/share/man/man1/gdbus-codegen.1
		vmove usr/share/man/man1/glib-genmarshal.1
		vmove usr/share/man/man1/gtester-report.1
		for f in aclocal glib-2.0 gdb; do
			vmove usr/share/${f}
		done
		if [ "$build_option_gtk_doc" ]; then
			vmove usr/share/doc
		fi
	}
}
