[oe-commits] [openembedded-core] 19/30: adwaita-icon-theme: fix rare install race

git at git.openembedded.org git at git.openembedded.org
Mon Sep 16 08:55:07 UTC 2019


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit f969a8ff160390726565421d4c9b367e49172487
Author: Ross Burton <ross.burton at intel.com>
AuthorDate: Fri Sep 13 13:04:31 2019 +0100

    adwaita-icon-theme: fix rare install race
    
    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.burton at intel.com>
---
 .../0001-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 6c38e23..c4d7e25 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:

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list