diff --git a/tools/distpackages/build_deb_packages.sh b/tools/distpackages/build_deb_packages.sh index f9cf8023402c8b36cee5ce1a2912f2d138d8eb8c..a5f945bd9a168767b9324cc6ad2f337e64218d6f 100755 --- a/tools/distpackages/build_deb_packages.sh +++ b/tools/distpackages/build_deb_packages.sh @@ -35,7 +35,13 @@ mkdir -p $deb_dest version='0.8.0.0' -arch=`uname -p` +if [ -f /.dockerinit ]; then + # We're in Docker where uname -p returns "unknown". + arch=x86_64 +else + arch=`uname -p` +fi + if [ $arch != "x86_64" ] then echo Unsupported architecture. @@ -77,13 +83,14 @@ do # create symlinks to shared libraries for libname in $arch_lib_dir/*.a do - base=`basename -s .a $libname` + base=`basename $libname .a` ln -s $base.so.$version $arch_lib_dir/$base.so done fi # Adjust mode for some files in the package find $tmp_dir/$pkg_name -type d | xargs chmod 755 + find $tmp_dir/$pkg_name -type d | xargs chmod a-s find $tmp_dir/$pkg_name -type f | xargs chmod 644 chmod 755 $tmp_dir/$pkg_name/DEBIAN/{postinst,postrm} diff --git a/tools/dockerfile/grpc_build_deb/Dockerfile b/tools/dockerfile/grpc_build_deb/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ad26fb35d016ac923d9d501e87ee17511683ff80 --- /dev/null +++ b/tools/dockerfile/grpc_build_deb/Dockerfile @@ -0,0 +1,13 @@ +# Dockerfile to build Debian packages for gRPC C core. +FROM grpc/base + +# Install dependencies +RUN apt-get update && apt-get install -y lintian + +# Get the source from GitHub +RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc +RUN cd /var/local/git/grpc && \ + git pull --recurse-submodules && \ + git submodule update --init --recursive + +RUN /bin/bash -l -c 'cd /var/local/git/grpc/tools/distpackages && ./build_deb_packages.sh' diff --git a/tools/dockerfile/grpc_ruby_deb/Dockerfile b/tools/dockerfile/grpc_ruby_deb/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..25ea2c54bd868ce236c14e6352fbd11e3f1763be --- /dev/null +++ b/tools/dockerfile/grpc_ruby_deb/Dockerfile @@ -0,0 +1,31 @@ +# Dockerfile for gRPC Ruby, but using Debian packages for gRPC C core. +FROM grpc/ruby_base + +# Pull the latest sources +RUN cd /var/local/git/grpc \ + && git pull --recurse-submodules \ + && git submodule update --init --recursive + +# Make sure we don't rely on things that shouldn't be there. +RUN make clean -C /var/local/git/grpc + +# Debian packages need to be supplied externally +ADD libgrpc_amd64.deb libgrpc_amd64.deb +ADD libgrpc-dev_amd64.deb libgrpc-dev_amd64.deb + +# Install the C core .deb packages +RUN /bin/bash -l -c 'dpkg -i libgrpc_amd64.deb libgrpc-dev_amd64.deb' + +# Build ruby gRPC and run its tests +RUN /bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && bundle && rake' + +# Add a cacerts directory containing the Google root pem file, allowing the +# ruby client to access the production test instance +ADD cacerts cacerts + +# Add a service_account directory containing the auth creds file +ADD service_account service_account + +# Specify the default command such that the interop server runs on its known +# testing port +CMD ["/bin/bash", "-l", "-c", "ruby /var/local/git/grpc/src/ruby/bin/interop/interop_server.rb --use_tls --port 8060"] diff --git a/tools/dockerfile/grpc_ruby_deb/README.md b/tools/dockerfile/grpc_ruby_deb/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0a3716b938598cdf87b282eae9e085aae10f68f1 --- /dev/null +++ b/tools/dockerfile/grpc_ruby_deb/README.md @@ -0,0 +1,5 @@ +GRPC RUBY Base Dockerfile (Debian package version) +======================== + +Dockerfile for creating the Ruby gRPC development Docker instance. +Uses gRPC C core Debian packages instead of installing it using make.