From 4be0ae54fb52129313a68c1433d8cc6e0370a3c1 Mon Sep 17 00:00:00 2001 From: Ousama Ben Younes Date: Tue, 18 Aug 2026 02:31:13 +0000 Subject: [PATCH] fix: define common-user GIR type (#463) The internal property generated an unnamed GIR type, so annotate its concrete type and guard generated GIR metadata in make check. --- .github/workflows/test.yaml | 4 ++-- configure.ac | 3 +++ liblightdm-gobject/Makefile.am | 10 ++++++++++ liblightdm-gobject/user.c | 5 +++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 9493795a5..f3ccfad41 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,12 +25,12 @@ jobs: if: matrix.image.name == 'ubuntu' run: | apt-get update - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends dbus gtk-doc-tools intltool libaudit-dev libgcrypt20-dev libgirepository1.0-dev libglib2.0-dev libpam0g-dev libtool libxcb1-dev libxdmcp-dev libxklavier-dev python3 python3-gi python-is-python3 qtbase5-dev qt6-base-dev valac yelp-tools + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends dbus gtk-doc-tools intltool libaudit-dev libgcrypt20-dev libgirepository1.0-dev libglib2.0-dev libpam0g-dev libtool libxcb1-dev libxdmcp-dev libxklavier-dev libxml2-utils python3 python3-gi python-is-python3 qtbase5-dev qt6-base-dev valac yelp-tools - name: Install dependencies (Fedora) if: matrix.image.name == 'fedora' run: | - dnf install -y audit-libs-devel dbus-daemon gcc gcc-c++ gobject-introspection-devel glib2-devel gtk-doc intltool libgcrypt-devel libtool libxcb-devel libxklavier-devel libXdmcp-devel make pam-devel python3-gobject qt5-qtbase-devel qt6-qtbase-devel redhat-rpm-config vala yelp-tools + dnf install -y audit-libs-devel dbus-daemon gcc gcc-c++ gobject-introspection-devel glib2-devel gtk-doc intltool libgcrypt-devel libtool libxcb-devel libxklavier-devel libXdmcp-devel libxml2 make pam-devel python3-gobject qt5-qtbase-devel qt6-qtbase-devel redhat-rpm-config vala yelp-tools - name: Build and test run: | diff --git a/configure.ac b/configure.ac index 3864695a0..0e52293e4 100644 --- a/configure.ac +++ b/configure.ac @@ -37,6 +37,8 @@ AC_SUBST(WARN_CFLAGS) AC_SUBST(WARN_CXXFLAGS) GOBJECT_INTROSPECTION_CHECK(0.9.5) +AC_PATH_PROG([XMLLINT], [xmllint]) +AM_CONDITIONAL([HAVE_XMLLINT], [test -n "$XMLLINT"]) VAPIGEN_CHECK([0.16]) @@ -265,6 +267,7 @@ echo " Greeter user: $GREETER_USER User session: $DEFAULT_USER_SESSION GObject introspection: $found_introspection + GIR unnamed-type check: $XMLLINT Vala bindings: $enable_vala liblightdm-qt5: $compile_liblightdm_qt5 liblightdm-qt6: $compile_liblightdm_qt6 diff --git a/liblightdm-gobject/Makefile.am b/liblightdm-gobject/Makefile.am index fc672dad9..505fccd07 100644 --- a/liblightdm-gobject/Makefile.am +++ b/liblightdm-gobject/Makefile.am @@ -48,6 +48,16 @@ LightDM_1_gir_SCANNERFLAGS = --symbol-prefix=lightdm --c-include "lightdm.h" LightDM_1_gir_LIBS = liblightdm-gobject-1.la LightDM_1_gir_FILES = $(liblightdm_gobject_1_la_SOURCES) +GIR_UNNAMED_TYPE_XPATH = count(//*[local-name()='type' and not(@name)]) + +if HAVE_XMLLINT +check-local: LightDM-1.gir + @unnamed_type_count="`$(XMLLINT) --xpath \"$(GIR_UNNAMED_TYPE_XPATH)\" LightDM-1.gir`" || \ + { echo "Unable to inspect LightDM-1.gir" >&2; exit 1; }; \ + test "$$unnamed_type_count" = "0" || \ + { echo "LightDM-1.gir contains an unnamed type" >&2; exit 1; } +endif + girdir = $(datadir)/gir-1.0 gir_DATA = LightDM-1.gir diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c index f154a2d02..b63efb806 100644 --- a/liblightdm-gobject/user.c +++ b/liblightdm-gobject/user.c @@ -741,6 +741,11 @@ lightdm_user_class_init (LightDMUserClass *klass) object_class->get_property = lightdm_user_get_property; object_class->finalize = lightdm_user_finalize; + /** + * LightDMUser:common-user: (skip) (type GObject.Object) + * + * Internal user object. + */ g_object_class_install_property (object_class, USER_PROP_COMMON_USER, g_param_spec_object ("common-user",