From a4615b1def0ae9874211769975136f006abc4867 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 14 Jun 2016 16:34:13 +0200 Subject: [PATCH] buildserver: handle loops in bash, not ruby, to save memory Apparently, ruby is quite a memory hog when it forks. I've been getting errors like this with ./makebuildserver: Errno::ENOMEM - script[add_btools_17] (android-sdk::default line 72) had an error: Errno::ENOMEM: Cannot allocate memory - fork(2) So instead of looping in ruby and forking for each loop, handle the looping in the bash script, so ruby is just calling a single bash script. --- .../cookbooks/android-sdk/recipes/default.rb | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/buildserver/cookbooks/android-sdk/recipes/default.rb b/buildserver/cookbooks/android-sdk/recipes/default.rb index 82d68972..3be497f1 100644 --- a/buildserver/cookbooks/android-sdk/recipes/default.rb +++ b/buildserver/cookbooks/android-sdk/recipes/default.rb @@ -33,20 +33,16 @@ execute "add-android-sdk-path" do not_if "grep PATH-SDK /home/#{user}/.bsenv" end -%w{ - platform-tools - extra-android-m2repository -}.each do |pkg| - script "add_pkg_#{pkg}" do - interpreter "bash" - user user - code " - #{sdk_loc}/tools/android update sdk --no-ui -a -t #{pkg} <