GLib-2.82.2

Introduction to GLib

The GLib package contains low-level libraries useful for providing data structure handling for C, portability wrappers and interfaces for runtime functionality such as an event loop, threads, dynamic loading and an object system.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

Package Information

Additional Downloads

GObject Introspection (Recommended)

Patch for Log Level Selection (Optional)

GLib Dependencies

Recommended

Optional

Cairo-1.18.2 (for some GObject Introspection tests), dbus-1.14.10 (for some tests), Fuse-3.16.2 and bindfs (both needed for one test), GDB-15.2 (for bindings), Gjs-1.82.1 (for some GObject Introspection tests), GTK-Doc-1.34.0 (for GObject Introspection documentation), docbook-xml-4.5, docbook-xsl-nons-1.79.2, Gi-DocGen-2024.1 (to build API documentation), glib-networking-2.80.0 (for some tests, but this is a circular dependency), Mako-1.3.5 and Markdown-3.7 (both for g-ir-doc-tool), and sysprof

Additional Runtime Dependencies

Installation of GLib

If desired, apply the optional patch. In many cases, applications that use this library, either directly or indirectly via other libraries such as GTK+-3.24.43, output numerous warnings when run from the command line. This patch enables the use of an environment variable, GLIB_LOG_LEVEL, that suppresses unwanted messages. The value of the variable is a digit that corresponds to:

1 Alert
2 Critical
3 Error
4 Warning
5 Notice

For instance export GLIB_LOG_LEVEL=4 will skip output of Warning and Notice messages (and Info/Debug messages if they are turned on). If GLIB_LOG_LEVEL is not defined, normal message output will not be affected.

patch -Np1 -i ../glib-skip_warnings-1.patch
[Warning]

Warning

If a previous version of glib is installed, move the headers out of the way so that later packages do not encounter conflicts:

if [ -e /usr/include/glib-2.0 ]; then
    rm -rf /usr/include/glib-2.0.old &&
    mv -vf /usr/include/glib-2.0{,.old}
fi

Install GLib by running the following commands:

mkdir build &&
cd    build &&

meson setup ..                  \
      --prefix=/usr             \
      --buildtype=release       \
      -D introspection=disabled \
      -D glib_debug=disabled    \
      -D man-pages=enabled      \
      -D sysprof=disabled       &&
ninja

The GLib test suite requires desktop-file-utils for some tests. However, desktop-file-utils requires GLib in order to compile; therefore, you must first install GLib and then run the test suite.

As the root user, install this package for the first time to allow building GObject Introspection:

ninja install

Build GObject Introspection:

tar xf ../../gobject-introspection-1.82.0.tar.xz &&

meson setup gobject-introspection-1.82.0 gi-build \
            --prefix=/usr --buildtype=release     &&
ninja -C gi-build

To test the results of GObject Introspection, issue: ninja -C gi-build test.

As the root user, install GObject Introspection for generating the introspection data of GLib libraries (required by various packages using Glib, especially some GNOME packages):

ninja -C gi-build install

Now generate the introspection data:

meson configure -D introspection=enabled &&
ninja

If you have Gi-DocGen-2024.1 installed and wish to build the API documentation for this package, issue:

sed 's/glib-2.0/glib-2.82.2/'        \
    -i ../docs/reference/meson.build &&
meson configure -D documentation=true &&
ninja

As the root user, install this package again for the introspection data (and optionally, the documentation):

ninja install

You should now install desktop-file-utils-0.27 and shared-mime-info-2.4 and proceed to run the test suite.

[Warning]

Warning

Do not run the test suite as root or some tests will fail unexpectedly and leave some non-FHS-compliant directories in the /usr hierarchy.

To test the results, after having installed the packages, issue: LC_ALL=C ninja test as a non-root user. One test named gdatetime is known to fail with tzdata-2024b or later.

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-D man-pages=enabled: This switch causes the build to create and install the package man pages.

-D glib_debug=disabled: This switch causes the build to not include some expensive checks for debugging in the built programs and libraries.

-D sysprof=disabled: This switch disables the tracing support for sysprof. Remove this option if you want the tracing support. Note that if sysprof is not installed, removing this option will cause the build system to download a copy of sysprof from the Internet.

Contents

GLib Contents

Installed Programs: gapplication, gdbus, gdbus-codegen, gi-compile-repository, gi-decompile-typelib, gi-inspect-typelib gio, gio-querymodules, glib-compile-resources, glib-compile-schemas, glib-genmarshal, glib-gettextize, glib-mkenums, gobject-query, gresource, gsettings, gtester, and gtester-report
Installed Libraries: libgio-2.0.so, libgirepository-2.0.so, libglib-2.0.so, libgmodule-2.0.so, libgobject-2.0.so, and libgthread-2.0.so
Installed Directories: /usr/include/gio-unix-2.0, /usr/include/glib-2.0, /usr/lib/gio, /usr/lib/glib-2.0, /usr/share/glib-2.0, and /usr/share/doc/glib-2.82.2 (optional)

GObject Introspection Contents

Installed Program: g-ir-annotation-tool, g-ir-compiler, g-ir-doc-tool (optional), g-ir-generate, g-ir-inspect, and g-ir-scanner
Installed Libraries: libgirepository-1.0.so and _giscanner.cpython-312-<arch>-linux-gnu.so
Installed Directories: /usr/include/gobject-introspection-1.0, /usr/lib/girepository-1.0, /usr/lib/gobject-introspection, /usr/share/gir-1.0, and /usr/share/gobject-introspection-1.0

Short Descriptions

gapplication

can be used to start applications and to send messages to already-running instances of other applications

gdbus

is a simple tool used for working with D-Bus objects

gdbus-codegen

is used to generate code and/or documentation for one or more D-Bus interfaces

gi-compile-repository

converts one or more GIR files into one or more typelib files

gi-decompile-typelib

is a GIR decompiler that uses the repository API

gi-inspect-typelib

is a utility that gives information about a GI typelib

gio

is a utility that makes many GIO features available from the command line

gio-querymodules

is used to create a giomodule.cache file in the listed directories. This file lists the implemented extension points for each module that has been found

glib-compile-resources

is used to read the resource description from a file and the files that it references to create a binary resource bundle that is suitable for use with the GResource API

glib-compile-schemas

is used to compile all the GSettings XML schema files in a directory into a binary file with the name gschemas.compiled that can be used by GSettings

glib-genmarshal

is a C code marshaller generation utility for GLib closures

glib-gettextize

is a variant of the gettext internationalization utility

glib-mkenums

is a C language enum description generation utility

gobject-query

is a small utility that draws a tree of types

gresource

offers a simple command line interface to GResource

gsettings

offers a simple command line interface to GSettings

gtester

is a test running utility

gtester-report

is a test report formatting utility

libgio-2.0.so

is a library providing useful classes for general purpose I/O, networking, IPC, settings, and other high level application functionality

libgirepository-2.0.so

is a library providing access to typelibs and introspection data which describes C APIs

libglib-2.0.so

is a general-purpose, portable utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a mainloop abstraction, and so on

libgmodule-2.0.so

provides portable API for dynamically loading modules

libgobject-2.0.so

provides the GLib base type system and object class

libgthread-2.0.so

is a skeleton library for backwards compatibility; it used to be the GLib thread library but the functionalities has been merged info libglib-2.0

g-ir-annotation-tool

creates or extracts annotation data from GI typelibs

g-ir-compiler

is a counterpart of gi-compile-repository for the old libgirepository-1.0 API

g-ir-doc-tool

generates Mallard files that can be viewed with yelp or rendered to HTML with yelp-build from yelp-tools

g-ir-inspect

is a counterpart of gi-inspect-typelib for the old libgirepository-1.0 API

g-ir-generate

is a counterpart of gi-decompile-typelib for the old libgirepository-1.0 API

g-ir-scanner

is a tool which generates GIR XML files by parsing headers and introspecting GObject based libraries

libgirepository-1.0.so

is a counterpart of libgirepository-2.0 with the old 1.0 API