| 
					
				 | 
			
			
				@@ -55,7 +55,10 @@ sudo apt-get install -y \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   libc6 \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   libc6-dbg \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   libc6-dev \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  libcurl4-openssl-dev \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   libgtest-dev \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  libreadline-dev \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  libssl-dev \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   libtool \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   make \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   strace \ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -71,7 +74,8 @@ sudo apt-get install -y \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   telnet \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   unzip \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   wget \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  zip 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  zip \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  zlib1g-dev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # perftools 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo apt-get install -y google-perftools libgoogle-perftools-dev 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -87,14 +91,15 @@ sudo pip install tabulate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo pip install google-api-python-client 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo pip install virtualenv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# TODO(jtattermusch): For some reason, building gRPC Python depends on python3.4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# being installed, but python3.4 is not available on Ubuntu 16.04. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Temporarily fixing this by adding a PPA with python3.4, but we should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# really remove this hack once possible. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo add-apt-repository -y ppa:fkrull/deadsnakes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo apt-get update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo apt-get install -y python3.4 python3.4-dev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-python3.4 -m pip install virtualenv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Building gRPC Python depends on python3.4 being installed, but python3.4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# is not available on Ubuntu 16.10, so install from source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+curl -O https://www.python.org/ftp/python/3.4.6/Python-3.4.6.tgz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+tar xzvf Python-3.4.6.tgz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cd Python-3.4.6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,--rpath=/usr/local/lib" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo make altinstall 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cd .. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rm Python-3.4.6.tgz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 curl -O https://bootstrap.pypa.io/get-pip.py 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo pypy get-pip.py 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -117,18 +122,25 @@ sudo apt-get update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo apt-get install -y mono-devel nuget 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # C# .NET Core dependencies (https://www.microsoft.com/net/core#ubuntu) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo apt-get update 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo apt-get install -y dotnet-dev-1.0.0-preview2-003131 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo apt-get install -y dotnet-dev-1.0.0-preview2.1-003155 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 sudo apt-get install -y dotnet-dev-1.0.1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Ruby dependencies 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-curl -sSL https://get.rvm.io | bash -s stable --ruby 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+git clone https://github.com/rbenv/rbenv.git ~/.rbenv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export PATH="$HOME/.rbenv/bin:$PATH" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+eval "$(rbenv init -)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rbenv install 2.4.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rbenv global 2.4.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ruby -v 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Install bundler (prerequisite for gRPC Ruby) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source ~/.rvm/scripts/rvm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 gem install bundler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Java dependencies - nothing as we already have Java JDK 8 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -163,15 +175,7 @@ echo 4096 | sudo tee /proc/sys/kernel/perf_event_mlock_kb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 git clone -v https://github.com/brendangregg/FlameGraph ~/FlameGraph 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Install scipy and numpy for benchmarking scripts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo apt-get install python-scipy python-numpy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Update Linux kernel to 4.9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-wget \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.20/linux-headers-4.9.20-040920_4.9.20-040920.201703310531_all.deb \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.20/linux-headers-4.9.20-040920-generic_4.9.20-040920.201703310531_amd64.deb \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.20/linux-image-4.9.20-040920-generic_4.9.20-040920.201703310531_amd64.deb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-sudo dpkg -i linux-headers-4.9*.deb linux-image-4.9*.deb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-rm linux-* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sudo apt-get install -y python-scipy python-numpy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Add pubkey of jenkins@grpc-jenkins-master to authorized keys of jenkins@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # This needs to happen as the last step to prevent Jenkins master from connecting 
			 |