diff --git a/tools/README.md b/tools/README.md index 7cee610e35b27d86458ef29c6c77d5cbd8bbd067..1dbbad886f93728f1028df379b9c59959721d41d 100644 --- a/tools/README.md +++ b/tools/README.md @@ -1,4 +1,5 @@ buildgen: contains the template renderer for our build system. +distpackages: contains script to generate debian packages. dockerfile: contains all of the docker files to test gRPC. gce_setup: contains boilerplate for running the docker files under GCE. run_tests: contains python scripts to properly run the tests in parallel. diff --git a/tools/distpackages/.gitignore b/tools/distpackages/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..7a7d3f3fa989d01bedf7592dbcb8f85046f87c3b --- /dev/null +++ b/tools/distpackages/.gitignore @@ -0,0 +1 @@ +deb_out diff --git a/tools/distpackages/build_deb_packages.sh b/tools/distpackages/build_deb_packages.sh new file mode 100755 index 0000000000000000000000000000000000000000..f9cf8023402c8b36cee5ce1a2912f2d138d8eb8c --- /dev/null +++ b/tools/distpackages/build_deb_packages.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Where to put resulting .deb packages. +deb_dest="deb_out" +mkdir -p $deb_dest + +version='0.8.0.0' + +arch=`uname -p` +if [ $arch != "x86_64" ] +then + echo Unsupported architecture. + exit 1 +fi + +# Build debian packages +for pkg_name in libgrpc libgrpc-dev +do + echo + echo "Building package $pkg_name" + tmp_dir=`mktemp -d` + echo "Using tmp dir $tmp_dir to build the package" + + cp -a templates/$pkg_name $tmp_dir + + arch_lib_dir=$tmp_dir/$pkg_name/usr/lib/$arch-linux-gnu + + if [ $pkg_name == "libgrpc" ] + then + # Copy shared libraries + (cd ../..; make install-shared_c prefix=$tmp_dir/$pkg_name/usr/lib) + mv $tmp_dir/$pkg_name/usr/lib/lib $arch_lib_dir + + # non-dev package should contain so.0 symlinks + for symlink in $arch_lib_dir/*.so + do + mv $symlink $symlink.0 + done + fi + + if [ $pkg_name == "libgrpc-dev" ] + then + # Copy headers and static libraries + (cd ../..; make install-headers_c install-static_c prefix=$tmp_dir/$pkg_name/usr/lib) + mv $tmp_dir/$pkg_name/usr/lib/include $tmp_dir/$pkg_name/usr/include + mv $tmp_dir/$pkg_name/usr/lib/lib $arch_lib_dir + + # create symlinks to shared libraries + for libname in $arch_lib_dir/*.a + do + base=`basename -s .a $libname` + 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 f | xargs chmod 644 + chmod 755 $tmp_dir/$pkg_name/DEBIAN/{postinst,postrm} + + # Build the debian package + fakeroot dpkg-deb --build $tmp_dir/$pkg_name || { echo "dpkg-deb failed"; exit 1; } + + deb_path=$deb_dest/${pkg_name}_amd64.deb + + # Copy the .deb file to destination dir + cp $tmp_dir/$pkg_name.deb $deb_path + + echo "Resulting package: $deb_path" + echo "Package info:" + dpkg-deb -I $deb_path + echo "Package contents:" + dpkg-deb -c $deb_path + echo "Problems reported by lintian:" + lintian $deb_path + + echo +done + + diff --git a/tools/distpackages/templates/libgrpc-dev/DEBIAN/control b/tools/distpackages/templates/libgrpc-dev/DEBIAN/control new file mode 100644 index 0000000000000000000000000000000000000000..64dc79af1956a487e39e7ee88494826bdb45a375 --- /dev/null +++ b/tools/distpackages/templates/libgrpc-dev/DEBIAN/control @@ -0,0 +1,10 @@ +Package: libgrpc-dev +Version: 0.8.0 +Architecture: amd64 +Maintainer: Jan Tattermusch <jtattermusch@google.com> +Depends: libgrpc, libc6-dev | libc-dev +Section: libdevel +Priority: optional +Homepage: https://github.com/grpc/grpc +Description: gRPC C Core - header files + Core C libraries for gRPC - An RPC library and framework. diff --git a/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz b/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz new file mode 100644 index 0000000000000000000000000000000000000000..eabdf46e6e2d798dab32e8ea88029448c988e330 Binary files /dev/null and b/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz differ diff --git a/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/copyright b/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/copyright new file mode 100644 index 0000000000000000000000000000000000000000..83fb6f45774159427f419fa5ea14ca3170bcabc6 --- /dev/null +++ b/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/copyright @@ -0,0 +1,34 @@ +Copyright: + + Copyright (C) 2015 Google Inc. + +License (new style BSD, with Google Inc. as copyright holder): + + Copyright 2015, Google Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/tools/distpackages/templates/libgrpc/DEBIAN/control b/tools/distpackages/templates/libgrpc/DEBIAN/control new file mode 100644 index 0000000000000000000000000000000000000000..75c224e9a491ae1591d513ea2c13a7e82b428171 --- /dev/null +++ b/tools/distpackages/templates/libgrpc/DEBIAN/control @@ -0,0 +1,10 @@ +Package: libgrpc +Version: 0.8.0 +Architecture: amd64 +Maintainer: Jan Tattermusch <jtattermusch@google.com> +Depends: libc6 +Section: libs +Priority: optional +Homepage: https://github.com/grpc/grpc +Description: gRPC C Core + Core C libraries for gRPC - An RPC library and framework. diff --git a/tools/distpackages/templates/libgrpc/DEBIAN/postinst b/tools/distpackages/templates/libgrpc/DEBIAN/postinst new file mode 100644 index 0000000000000000000000000000000000000000..379f1fae0c1af00a36f211b27f094b44eeeedc24 --- /dev/null +++ b/tools/distpackages/templates/libgrpc/DEBIAN/postinst @@ -0,0 +1,7 @@ +#!/bin/sh +set -e +# Automatically added by dh_makeshlibs +if [ "$1" = "configure" ]; then + ldconfig +fi +# End automatically added section diff --git a/tools/distpackages/templates/libgrpc/DEBIAN/postrm b/tools/distpackages/templates/libgrpc/DEBIAN/postrm new file mode 100644 index 0000000000000000000000000000000000000000..3e73d38a7e3f68c36ec05e471accdf0e5e1cb60c --- /dev/null +++ b/tools/distpackages/templates/libgrpc/DEBIAN/postrm @@ -0,0 +1,7 @@ +#!/bin/sh +set -e +# Automatically added by dh_makeshlibs +if [ "$1" = "remove" ]; then + ldconfig +fi +# End automatically added section diff --git a/tools/distpackages/templates/libgrpc/DEBIAN/shlibs b/tools/distpackages/templates/libgrpc/DEBIAN/shlibs new file mode 100644 index 0000000000000000000000000000000000000000..31d0e0a3b3d5035c79f0928aa4ab0f0779ce185e --- /dev/null +++ b/tools/distpackages/templates/libgrpc/DEBIAN/shlibs @@ -0,0 +1,3 @@ +libgpr 0 +libgrpc 0 +libgrpc_unsecure 0 diff --git a/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz b/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz new file mode 100644 index 0000000000000000000000000000000000000000..c07b4d2637133dc9f0f7d8eb373bb203dd4af141 Binary files /dev/null and b/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz differ diff --git a/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/copyright b/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/copyright new file mode 100644 index 0000000000000000000000000000000000000000..83fb6f45774159427f419fa5ea14ca3170bcabc6 --- /dev/null +++ b/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/copyright @@ -0,0 +1,34 @@ +Copyright: + + Copyright (C) 2015 Google Inc. + +License (new style BSD, with Google Inc. as copyright holder): + + Copyright 2015, Google Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file