Introduction to GLib
The GLib package contains
low-level libraries useful for providing data structure handling
for C, portability wrappers and interfaces for such runtime
functionality as an event loop, threads, dynamic loading and an
object system.
This package is known to build and work properly using an LFS 11.3
platform.
Package Information
Additional Downloads
GLib Dependencies
Recommended
libxslt-1.1.37 and pcre2-10.42
Optional
dbus-1.14.6 (for some tests), Fuse-3.13.1 and
bindfs (both needed
for one test), GDB-13.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.74.0 (for some
tests, but this is a circular dependency), and sysprof-3.46.0
Additional Runtime Dependencies
gobject-introspection-1.74.0
(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.2 and desktop-file-utils-0.26,
respectively. These two utilities are also needed for some tests.
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/glib2
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.36, 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-2.74.5-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 --prefix=/usr \
--buildtype=release \
-Dman=true \
.. &&
ninja
Note
If libxslt-1.1.37 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.74.5 &&
cp -r ../docs/reference/{gio,glib,gobject} /usr/share/doc/glib-2.74.5
You should now install desktop-file-utils-0.26 and shared-mime-info-2.2 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. One test named
glib:glib / error
is known to fail.
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.