[Pkg-rust-maintainers] Bug#1104991: Bug#1104991: FTBFS: rust-glib fails to with <!nocheck>
Fabian Grünbichler
debian at fabian.gruenbichler.email
Wed May 21 17:15:40 BST 2025
On Wed, May 21, 2025, at 5:43 PM, Andrey Feofilaktov wrote:
> Hey Matthias,
>
> I tried to reproduce it, and it is true that on a raw trixie it is not
> reproducible as is.
>
> However, it would be if librust-gobject-sys-dev would have been built
> from source that is uploaded. That does not seem to be the case.
> If I build it from source manually, the resulting package would contain
> a different src/lib.rs file (with the expected feature guards present):
if I do
apt source rust-gobject-sys/testing
apt source rust-glib/testing
and build both (injecting librust-gobject-sys-dev into the rust-glib build)
for testing, the built librust-gobject-sys-dev package differs from the one
in the archive. I guess src/lib.rs is rebuilt as part of the build of the
package, but not as part of just building a reverse-dep, since that rebuilding
is not part of build.rs, but in d/rules..
and sure enough, there have been uploads of glib2.0 (where the gir binaries
responsible for generating are from) since the last upload of
librust-gobject-sys-dev, including an update from .83 to .84 that would
match the diff below (which is identical to the one I see).
I suspect uploads of glib2.0 should include pro-active test-rebuilds of those
language specific bindings? or maybe a custom autopkgtest triggered
accordingly? or build.rs patched to regenerate at rust-build time?
FWIW, rust-glib still builds for me, with a small diff compared to the archive
as well though:
--- librust-glib-dev_0.20.9-1_amd64.deb
+++ stock/librust-glib-dev_0.20.9-1_amd64.deb
├── file list
│ @@ -1,3 +1,3 @@
│ -rw-r--r-- 0 0 0 4 2025-02-16 21:36:29.000000 debian-binary
│ --rw-r--r-- 0 0 0 4932 2025-02-16 21:36:29.000000 control.tar.xz
│ --rw-r--r-- 0 0 0 210092 2025-02-16 21:36:29.000000 data.tar.xz
│ +-rw-r--r-- 0 0 0 4936 2025-02-16 21:36:29.000000 control.tar.xz
│ +-rw-r--r-- 0 0 0 210060 2025-02-16 21:36:29.000000 data.tar.xz
├── control.tar.xz
│ ├── control.tar
│ │ ├── ./md5sums
│ │ │ ├── ./md5sums
│ │ │ │┄ Files differ
├── data.tar.xz
│ ├── data.tar
│ │ ├── file list
│ │ │ @@ -23,15 +23,15 @@
│ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/
│ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/
│ │ │ -rw-r--r-- 0 root (0) root (0) 285 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/alias.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 1364 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/checksum.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 6503 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/constants.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 16265 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/date_time.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 91249 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/enums.rs
│ │ │ --rw-r--r-- 0 root (0) root (0) 22859 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/flags.rs
│ │ │ +-rw-r--r-- 0 root (0) root (0) 22654 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/flags.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 25453 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/functions.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 12304 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/key_file.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 5676 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/main_context.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 1506 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/main_loop.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 3279 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/markup_parse_context.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 4575 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/mod.rs
│ │ │ -rw-r--r-- 0 root (0) root (0) 2974 2025-02-16 21:36:29.000000 ./usr/share/cargo/registry/glib-0.20.9/src/auto/regex.rs
│ │ ├── ./usr/share/cargo/registry/glib-0.20.9/src/auto/flags.rs
│ │ │ @@ -335,18 +335,14 @@
│ │ │ const NO_ARG = ffi::G_OPTION_FLAG_NO_ARG as _;
│ │ │ #[doc(alias = "G_OPTION_FLAG_FILENAME")]
│ │ │ const FILENAME = ffi::G_OPTION_FLAG_FILENAME as _;
│ │ │ #[doc(alias = "G_OPTION_FLAG_OPTIONAL_ARG")]
│ │ │ const OPTIONAL_ARG = ffi::G_OPTION_FLAG_OPTIONAL_ARG as _;
│ │ │ #[doc(alias = "G_OPTION_FLAG_NOALIAS")]
│ │ │ const NOALIAS = ffi::G_OPTION_FLAG_NOALIAS as _;
│ │ │ - #[cfg(feature = "v2_84")]
│ │ │ - #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
│ │ │ - #[doc(alias = "G_OPTION_FLAG_DEPRECATED")]
│ │ │ - const DEPRECATED = ffi::G_OPTION_FLAG_DEPRECATED as _;
│ │ │ }
│ │ │ }
│ │ │
│ │ │ #[doc(hidden)]
│ │ │ impl IntoGlib for OptionFlags {
│ │ │ type GlibType = ffi::GOptionFlags;
with or without nocheck ;) did you maybe rebuild other packages
as well that sit inbetween, and only that combination would then
expose the problem?
> $ diff
> /tmp/gobject/usr/share/cargo/registry/gobject-sys-0.20.9/src/lib.rs
> /usr/share/cargo/registry/gobject-sys-0.20.9/src/lib.rs
> 111,112d110
> < #[cfg(feature = "v2_68")]
> < #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
> 1504,1506d1501
> < #[cfg(feature = "v2_84")]
> < #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
> < pub fn g_type_class_get(type_: GType) -> gpointer;
> 1942,1944d1936
> < #[cfg(feature = "v2_84")]
> < #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
> < pub fn g_type_default_interface_get(g_type: GType) -> gpointer;
>
> So to reproduce the failure I am talking about you'd have to get a
> machine on trixie, build rust-gobject-sys, and then build rust-glib
> forcing it to use the just built librust-gobject-sys-dev.
>
> On Sat, May 10, 2025 at 3:19 PM Matthias Geiger <werdahias at riseup.net> wrote:
>> Control: tags -1 moreinfo
>>
>> On Fri, 9 May 2025 14:10:36 +0200 Andrey Feofilaktov <andarpolis at gmail.com> wrote:
>> > Package: rust-glib
>> > Version: 0.20.9-1
>> >
>> > rust-glib seems to have outdated/malformed gobject bindings and fails to
>> > build:
>> >
>> > error[E0425]: cannot find value `G_SIGNAL_ACCUMULATOR_FIRST_RUN` in crate
>> > `crate::gobject_ffi`
>> > --> src/gobject/auto/flags.rs:119:59
>> > |
>> > 119 | const ACCUMULATOR_FIRST_RUN =
>> > crate::gobject_ffi::G_SIGNAL_ACCUMULATOR_FIRST_RUN as _;
>> > |
>> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in `crate::gobject_ffi`
>> > |
>> > note: found an item that was configured out
>> > --> /usr/share/cargo/registry/gobject-sys-0.20.9/src/lib.rs:113:11
>> > |
>> > 113 | pub const G_SIGNAL_ACCUMULATOR_FIRST_RUN: GSignalFlags = 131072;
>> > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> > note: the item is gated behind the `v2_68` feature
>> > --> /usr/share/cargo/registry/gobject-sys-0.20.9/src/lib.rs:111:7
>> > |
>> > 111 | #[cfg(feature = "v2_68")]
>> > | ^^^^^^^^^^^^^^^^^
>> >
>> > I can fix this by updating debian/rules to also run gir for
>> > Gir_GObject.toml (the same way it does for the sys bindings in
>> > rust-gobject-sys):
>> >
>> > Index: rust-glib-0.20.9-1/debian/rules
>> > ===================================================================
>> > --- rust-glib-0.20.9-1.orig/debian/rules
>> > +++ rust-glib-0.20.9-1/debian/rules
>> > @@ -6,6 +6,7 @@
>> > # regenerating the source code
>> > # the xmlstarlet fixes are taken from upstream here:
>> > https://github.com/gtk-rs/gir-files/blob/master/fix.sh
>> > execute_before_dh_auto_build:
>> > + cp /usr/share/gir-1.0/GObject-2.0.gir $(CURDIR)
>> > cp /usr/share/gir-1.0/GLib-2.0.gir $(CURDIR)
>> > xmlstarlet ed -L \
>> > -u
>> > '//*[@glib:error-domain="g-option-context-error-quark"]/@glib:error-domain'
>> > -v g-option-error-quark \
>> > @@ -15,9 +16,20 @@ execute_before_dh_auto_build:
>> > -u
>> > '//_:record[@name="KeyFile"]/_:method[@name="set_locale_string_list"]//_:parameter[@name="list"]/_:array/@c:type'
>> > -v "const gchar* const*" \
>> > -u
>> > '//_:record[@name="KeyFile"]/_:method[@name="set_string_list"]//_:parameter[@name="list"]/_:array/@c:type'
>> > -v "const gchar* const*" \
>> > GLib-2.0.gir
>> > - sed -i
>> > 's/girs_directories\s=\s\[\"\.\.\/gir-files\"\]/girs_directories=\[\".\"\]/'
>> > $(CURDIR)/Gir.toml
>> > + xmlstarlet ed -L \
>> > + -u
>> > '//_:class[@name="Object"]/_:method[@name="getv"]//_:parameter[@name="names"]/_:array/@c:type'
>> > -v "const gchar**" \
>> >
>> Hi Andrey,
>>
>> thanks for the bug report and the patch. For me simply building
>> rust-glib works (with both !nocheck and without) (though I skipped
>> autopkgtest). Can you mabe share a full buildlog so we can compare notes
>> ?
>>
>> best,
>>
>> werdahias
>
>
> --
> Regards,
> Andrey
> _______________________________________________
> Pkg-rust-maintainers mailing list
> Pkg-rust-maintainers at alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-rust-maintainers
More information about the Pkg-rust-maintainers
mailing list