There have been rare errors during the build of adwaita-icon-theme, such as:

Exception: bb.process.ExecutionError: Execution of 
'.../temp/run.sysroot_stage_all.45186' failed with exit code 2:
cpio: ./icons/Adwaita/32x32/legacy/_inst.34160_: Cannot stat: No such file or 
directory
cpio: ./icons/Adwaita/32x32/legacy/_inst.33428_: Cannot stat: No such file or 
directory
cpio: ./icons/Adwaita/32x32/legacy/_inst.35421_: Cannot stat: No such file or 
directory
cpio: ./icons/Adwaita/32x32/legacy/_inst.34533_: Cannot stat: No such file or 
directory
cpio: ./icons/Adwaita/32x32/legacy/_inst.35366_: Cannot stat: No such file or 
directory

The problem was that a previous optimisation (oe-core cd9af17028) to massively
increase the install speed (by parallelling the hundreds of installs) was subtly
wrong.  It was essentially doing this:

  for i in list; do
    install i &
  done
  wait

In pure shell this does parallelise the install commands and then wait for them
all to finish before exiting, but in Makefiles *each line in a separate shell*. 
 The actual Makefile is closer to this:

  for i in list; do \
    install i & \
  done
  wait

The backslashes are required to write a multi-line for loop in a Makefile, but
note that when the loop ends the shell exits and all of the install processes
that are still running are disowned.  The wait command then executes in a new
shell, and there are no childen to wait for.

The fix is trivial: add more backslashes so that the wait is part of the same
shell.

Signed-off-by: Ross Burton <ross.bur...@intel.com>
---
 ...001-Run-installation-commands-as-shell-jobs.patch | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
 
b/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
index 6c38e237f40..c4d7e2583bd 100644
--- 
a/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
+++ 
b/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
@@ -24,7 +24,8 @@ index 1c940a5..3998ee6 100644
 -                      $(install_sh_DATA) 
$(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file; \
 +                      $(install_sh_DATA) 
$(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file & \
                done; \
-       done;
+-      done;
++      done; \
 +      wait
  
  ## FIXME we should add a way to remove links generated by icon mapping
@@ -45,7 +46,8 @@ index 86f4d7c..3fae8c1 100644
                $(mkdir_p) $(DESTDIR)$(themedir)/scalable-up-to-32/$$context; \
 -              $(install_sh_DATA) 
$(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file 
$(DESTDIR)$(themedir)/scalable-up-to-32/$$file; \
 +              $(install_sh_DATA) 
$(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file 
$(DESTDIR)$(themedir)/scalable-up-to-32/$$file & \
-       done
+-      done
++      done; \
 +      wait
  
  uninstall-local:
@@ -61,7 +63,8 @@ index 24aac9b..61ba071 100644
 -                      $(install_sh_DATA) 
$(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file; \
 +                      $(install_sh_DATA) 
$(top_srcdir)/$(SVGOUTDIR)/$$size/$$file $(DESTDIR)$(themedir)/$$size/$$file & \
                done; \
-       done
+-      done
++      done; \
        for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable; find . -name 
"*.svg"`; do \
                context="`dirname $$file`"; \
                $(mkdir_p) $(DESTDIR)$(themedir)/scalable/$$context; \
@@ -72,7 +75,8 @@ index 24aac9b..61ba071 100644
 -                      $(GTK_ENCODE_SYMBOLIC_SVG) 
$(top_srcdir)/$(SVGOUTDIR)/scalable/$$file $$size -o 
$(DESTDIR)$(themedir)/$$size/$$context; \
 +                      $(GTK_ENCODE_SYMBOLIC_SVG) 
$(top_srcdir)/$(SVGOUTDIR)/scalable/$$file $$size -o 
$(DESTDIR)$(themedir)/$$size/$$context & \
                done \
-       done
+-      done
++      done; \
 +      wait
  
  uninstall-local:
-- 
2.20.1

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to