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
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
GLib Dependencies
Recommended
libxslt-1.1.39 and pcre2-10.42
Optional
dbus-1.14.10 (for some tests), Fuse-3.16.2 and bindfs (both needed for one test), GDB-14.1 (for bindings), docbook-xml-4.5, docbook-xsl-nons-1.79.2, GTK-Doc-1.33.2 (to build API documentation), glib-networking-2.78.0 (for some tests, but this is a circular dependency), and sysprof
Additional Runtime Dependencies
gobject-introspection-1.78.1 (should be installed before gtk+, atk, etc.)
Quoted directly from the INSTALL
file: “Some of the mimetype-related functionality in GIO requires the update-mime-database and update-desktop-database utilities”, which are part of shared-mime-info-2.4 and desktop-file-utils-0.27, respectively. These two utilities are also needed for some tests.
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.40, 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
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 \
-Dman=true &&
ninja
Note
If libxslt-1.1.39 is installed, the above command may indicate several (about 33) errors that start with "Error: no ID for constraint linkend:" when generating the man pages. These are harmless.
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.
Now, as the root
user:
ninja install &&
mkdir -p /usr/share/doc/glib-2.78.3 &&
cp -r ../docs/reference/{gio,glib,gobject} /usr/share/doc/glib-2.78.3
You should now install desktop-file-utils-0.27 and shared-mime-info-2.4 and proceed to run the test suite.
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 package, issue: LC_ALL=C ninja test as a non-root
user.
Command Explanations
--buildtype=release
: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.
-Dman=true
: This switch causes the build to create and install the package man pages.
-Dgtk_doc=true
: This switch causes the build to create and install the API documentation.