The Makefile contains an install-system target that depends on both install-schemas and compile-shemas (sic).
Hoever: the compile-shemas target reads files from paths that are created by the install-schemas target, and they can both run in parallel when make's parallelism is enabled (-j).
Expected behavior
The .gschema.xml files required for the compile-shemas target should always exist before the compile-shemas target is run.
Actual behavior
When make parallelism is enabled a gschemas.compiled file may or may not be created, depending on the runtime behaviour of the race condition.
To Reproduce
The sample below uses make -j12 install-system to approximate the behaviour:
$ PREFIX=/.../bugreport/ make -j12 install-system
install -dm755 "//.../bugreport//share/applications"
if [ 1 = 1 ]; then glib-compile-schemas //.../bugreport//share/glib-2.0/schemas; fi
for f in $(find po -iname "*.mo"); do \
l="${f%%.*}"; \
lb=$(basename $l); \
install -Dm644 "$f" "//.../bugreport//share/locale/$lb/LC_MESSAGES/guake.mo"; \
done;
install -Dm644 "/.../guake/data/guake.desktop" "//.../bugreport//share/applications/"
# you probably want to execute this target with sudo:
Error opening directory “//.../bugreport//share/glib-2.0/schemas”: No such file or directory
make: *** [Makefile:147: compile-shemas] Error 1
Note: sometimes the output differs, due to the race condition; for example if the directory has been created but does not yet contain .gschema.xml files then a message No schema files found: doing nothing. appears instead.
Describe the bug
The Makefile contains an
install-system
target that depends on bothinstall-schemas
andcompile-shemas
(sic).Hoever: the
compile-shemas
target reads files from paths that are created by theinstall-schemas
target, and they can both run in parallel whenmake
's parallelism is enabled (-j
).Expected behavior
The
.gschema.xml
files required for thecompile-shemas
target should always exist before thecompile-shemas
target is run.Actual behavior
When
make
parallelism is enabled agschemas.compiled
file may or may not be created, depending on the runtime behaviour of the race condition.To Reproduce
The sample below uses
make -j12 install-system
to approximate the behaviour:Note: sometimes the output differs, due to the race condition; for example if the directory has been created but does not yet contain
.gschema.xml
files then a messageNo schema files found: doing nothing.
appears instead.