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.
This commit is contained in:
Hans-Christoph Steiner 2016-06-14 16:34:13 +02:00
parent fc0df30404
commit a4615b1def

View file

@ -33,20 +33,16 @@ execute "add-android-sdk-path" do
not_if "grep PATH-SDK /home/#{user}/.bsenv" not_if "grep PATH-SDK /home/#{user}/.bsenv"
end end
%w{
platform-tools script "add_android_packages" do
extra-android-m2repository
}.each do |pkg|
script "add_pkg_#{pkg}" do
interpreter "bash" interpreter "bash"
user user user user
code " code "
#{sdk_loc}/tools/android update sdk --no-ui -a -t #{pkg} <<X #{sdk_loc}/tools/android update sdk --no-ui --all --filter platform-tools,extra-android-m2repository <<X
y y
X X
" "
end
end end
script "add-platforms" do script "add-platforms" do
@ -66,28 +62,29 @@ script "add-platforms" do
" "
end end
%w{17 18.0.1 18.1 18.1.1 19 19.0.1 19.0.2 19.0.3 19.1 20 21 21.0.1 21.0.2 21.1 script "add_build_tools" do
21.1.1 21.1.2 22 22.0.1 23 23.0.1 23.0.2 23.0.3
}.each do |ver|
script "add_btools_#{ver}" do
interpreter "bash" interpreter "bash"
user user user user
cwd "/tmp" cwd "/tmp"
code " code "
unzip /vagrant/cache/build-tools_r#{ver}-linux.zip rm -rf current-build-tools
case `echo #{ver} | wc -c` in mkdir current-build-tools
cd current-build-tools
for ver in 17 18.0.1 18.1 18.1.1 19 19.0.1 19.0.2 19.0.3 19.1 20 21 21.0.1 21.0.2 21.1 21.1.1 21.1.2 22 22.0.1 23 23.0.1 23.0.2 23.0.3; do
unzip /vagrant/cache/build-tools_r${ver}-linux.zip
case `echo ${ver} | wc -c` in
3) 3)
dirver=#{ver}.0.0 dirver=${ver}.0.0
;; ;;
5) 5)
dirver=#{ver}.0 dirver=${ver}.0
;; ;;
7) 7)
dirver=#{ver} dirver=${ver}
;; ;;
esac esac
rm -rf #{sdk_loc}/build-tools/${dirver} rm -rf #{sdk_loc}/build-tools/${dirver}
mv android-*/ #{sdk_loc}/build-tools/${dirver} mv android-*/ #{sdk_loc}/build-tools/${dirver}
done
" "
end
end end