'Missing `GLib` namespace!' while using Gir

Hi everyone xd, I was trying to make a libgtop binding for rust. If I understood right it’s possible to make a libgtop binding with Gir, because it’s GLib based.
I was following this tutorial for making that, but it failed when I tried to create the sys crate, this is the output that I got:

[WARN  libgir::library_postprocessing] Field `glibtop::input` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop::output` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_total` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_user` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_nice` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_sys` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_idle` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_iowait` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_irq` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_cpu::xcpu_softirq` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_loadavg::loadavg` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_mountentry::devname` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_mountentry::mountdir` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_mountentry::type_` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_netload::address6` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_netload::prefix6` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_netload::hwaddress` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_kernel::wchan` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_map_entry::filename` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_signal::signal` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_signal::blocked` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_signal::sigignore` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_signal::sigcatch` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_state::cmd` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_time::xcpu_utime` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_time::xcpu_stime` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_uid::groups` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_wd::root` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_proc_wd::exe` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_sysinfo::cpuinfo` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_command::parameter` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_open_files_entry_info_sock::dest_host` missing c:type assumed to be `fixed_array`
[WARN  libgir::library_postprocessing] Field `glibtop_open_files_entry_info_localsock::name` missing c:type assumed to be `fixed_array`
thread 'main' panicked at 'Missing `GLib` namespace!', src/analysis/namespaces.rs:76:32
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

This is my Gir.toml file:

[options]
library = "GTop"
version = "2.0"
target_path = "."
min_cfg_version = "2.0"
work_mode = "sys"
girs_directories = ["../gir-files/"]


external_libraries = [
   "GLib",
   "GObject",
   "Gio",
]

Aditionally, this is my crate structure:

/home/auriel/Documentos/libgtop/
├── Cargo.lock
├── Cargo.toml
├── gir-files
│   ├── Atk-1.0.gir
│   ├── cairo-1.0.gir
│   ├── dl.py
│   ├── fix.sh
│   ├── fontconfig-2.0.gir
│   ├── freetype2-2.0.gir
│   ├── Gdk-3.0.gir
│   ├── Gdk-4.0.gir
│   ├── GdkPixbuf-2.0.gir
│   ├── GdkPixdata-2.0.gir
│   ├── GdkWayland-4.0.gir
│   ├── GdkX11-3.0.gir
│   ├── GdkX11-4.0.gir
│   ├── Gio-2.0.gir
│   ├── GL-1.0.gir
│   ├── GLib-2.0.gir
│   ├── GModule-2.0.gir
│   ├── GObject-2.0.gir
│   ├── Graphene-1.0.gir
│   ├── Gsk-4.0.gir
│   ├── Gtk-3.0.gir
│   ├── Gtk-4.0.gir
│   ├── GTop-2.0.gir
│   ├── HarfBuzz-0.0.gir
│   ├── libxml2-2.0.gir
│   ├── Pango-1.0.gir
│   ├── PangoCairo-1.0.gir
│   ├── PangoFc-1.0.gir
│   ├── PangoFT2-1.0.gir
│   ├── PangoOT-1.0.gir
│   ├── PangoXft-1.0.gir
│   ├── README.md
│   ├── reformat.sh
│   ├── Vulkan-1.0.gir
│   ├── win32-1.0.gir
│   ├── xfixes-4.0.gir
│   ├── xft-2.0.gir
│   ├── xlib-2.0.gir
│   └── xrandr-1.3.gir
├── libgtop-sys
│   ├── Gir.toml
│   └── src
│       └── lib.rs
├── src
│   └── lib.rs
└── target
    ├── CACHEDIR.TAG
    └── debug

It’s a little dirty because I copied gir-files from gtk-rs/gir-files and added GTop-2.0.gir which was on my system already.

So, my question, given all the conext is, how can I add Glib to my namespace? So Gir can run properly.

Hey,

I would like to help debugging this, would you mind pushing your code as is in a repo somewhere, that would be the best option to figure out what is going wrong. Thanks!

Here it is, it’s mostly empty because it fails on the first step of creating the binding.

Ah I see what is your issue, the gir file is basically mis-generated. Normally, you need to define the packages your library depends on and it seems like it is not set at all for libgtop, as it is still using autotools, i can’t really help how to fix this properly upstream. I would suggest patching the gir file for now and add <include name="GObject" version="2.0"/> just after the repository tag.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.