Subject: Building totem-3.26.0 fails, ordering issue with repsect to vala plugins and Totem-1.0.gir

From: Adam Van Ymeren <[email-masked]>
Date: Fri, 13 Oct 2017 11:48:29 -0400

$ guix build totem

Exerpt from log

[81/150] Compiling C object 'src/plugins/media-player-keys/media_player_keys@sha/totem-media-player-keys.c.o'.
[82/150] Compiling C object 'src/plugins/media-player-keys/media_player_keys@sha/src_backend_bacon-video-widget-enums.c.o'.
[83/150] Compiling C object 'src/plugins/ontop/ontop@sha/totem-ontop.c.o'.
[84/150] Compiling C object 'src/plugins/autoload-subtitles/autoload-subtitles@sha/src_backend_bacon-video-widget-enums.c.o'.
[85/150] Generating screensaver.plugin with a custom command.
Found cached translation database
Merging translations into src/plugins/screensaver/screensaver.plugin.
[86/150] Compiling C object 'src/plugins/ontop/ontop@sha/src_backend_bacon-video-widget-enums.c.o'.
[87/150] Compiling Vala source ../totem-3.26.0/src/plugins/rotation/bacon-video.vapi ../totem-3.26.0/src/plugins/rotation/totem-rotation-plugin.vala.
FAILED: src/plugins/rotation/rotation@sha/totem-rotation-plugin.c src/plugins/rotation/rotation.h src/plugins/rotation/rotation.vapi 
valac -C --pkg clutter-gtk-1.0 --pkg cogl-pango-1.0 --pkg libpeas-1.0 --pkg gtk+-3.0 -d src/plugins/rotation/rotation@sha --library=rotation -H src/plugins/rotation/rotation.h --vapi ../rotation.vapi --girdir=/tmp/guix-build-totem-3.26.0.drv-0/build/src --pkg=Totem-1.0 ../totem-3.26.0/src/plugins/rotation/bacon-video.vapi ../totem-3.26.0/src/plugins/rotation/totem-rotation-plugin.vala
error: Package `Totem-1.0' not found in specified Vala API directories or GObject-Introspection GIR directories
Compilation failed: 1 error(s), 0 warning(s)
...

It tries to build the totem-rotation-plugin which requires the
src/Totem-1.0.gir file.  However src/Totem-1.0.gir has not been
generated yet.

The offending rule in the generated build.ninja file is this

build src/plugins/sample-vala/sample-vala@sha/totem-sample-vala-plugin.c src/plugins/sample-vala/sample-vala.h src/plugins/sample-vala/sample-vala.vapi: vala_COMPILER ../totem-3.26.0/src/plugins/sample-vala/totem-sample-vala-plugin.vala

which should instead read

build src/plugins/sample-vala/sample-vala@sha/totem-sample-vala-plugin.c src/plugins/sample-vala/sample-vala.h
src/plugins/sample-vala/sample-vala.vapi: vala_COMPILER ../totem-3.26.0/src/plugins/sample-vala/totem-sample-vala-plugin.vala || src/Totem-1.0.gir

Unforunately I don't know enough about meson and ninja to figure out how
to fix this.

It also builds successfully if you force ninja to only use one thread.

This should probably be reported upstream.  Other distros may not notice
this if valac picks up the system Totem-1.0.gir if Totem is already
installed.

-Adam