From 70e3afc12a48cc8c3848932f41b7b118f27a3d04 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 22 Jun 2017 15:59:02 -0700 Subject: [PATCH] Protobuf extension (#317) * Build protobuf from pecl * build protobuf package from github release until published on pecl * protobuf 3.3.2 was pushed to pecl. download from there * Enable extension installer for protobufs * need to install the protobuf package --- deb-package-builder/build.sh | 2 +- .../extensions/protobuf/build.sh | 13 +++++++ .../extensions/protobuf/debian/compat | 1 + .../extensions/protobuf/debian/control.in | 12 ++++++ .../extensions/protobuf/debian/copyright | 37 +++++++++++++++++++ .../protobuf/debian/ext-protobuf.ini | 1 + .../debian/gcp-php-protobuf.install.in | 1 + .../extensions/protobuf/debian/rules.in | 14 +++++++ php-base/build-scripts/install_extensions.php | 1 + php-base/build-scripts/install_php56.sh | 1 + php-base/build-scripts/install_php70.sh | 1 + php-base/build-scripts/install_php71.sh | 1 + testapps/php56_extensions/composer.json | 3 +- .../php56_extensions/tests/ProtobufTest.php | 26 +++++++++++++ testapps/php70_extensions/composer.json | 3 +- .../php70_extensions/tests/ProtobufTest.php | 26 +++++++++++++ testapps/php71_extensions/composer.json | 3 +- .../php71_extensions/tests/ProtobufTest.php | 26 +++++++++++++ 18 files changed, 168 insertions(+), 4 deletions(-) create mode 100755 deb-package-builder/extensions/protobuf/build.sh create mode 100644 deb-package-builder/extensions/protobuf/debian/compat create mode 100644 deb-package-builder/extensions/protobuf/debian/control.in create mode 100644 deb-package-builder/extensions/protobuf/debian/copyright create mode 100644 deb-package-builder/extensions/protobuf/debian/ext-protobuf.ini create mode 100644 deb-package-builder/extensions/protobuf/debian/gcp-php-protobuf.install.in create mode 100644 deb-package-builder/extensions/protobuf/debian/rules.in create mode 100644 testapps/php56_extensions/tests/ProtobufTest.php create mode 100644 testapps/php70_extensions/tests/ProtobufTest.php create mode 100644 testapps/php71_extensions/tests/ProtobufTest.php diff --git a/deb-package-builder/build.sh b/deb-package-builder/build.sh index d5da5ff2..8de50f61 100755 --- a/deb-package-builder/build.sh +++ b/deb-package-builder/build.sh @@ -40,7 +40,7 @@ PHP_VERSIONS=${1} EXTENSIONS=${2} if [ -z "$EXTENSIONS" ]; then # Explicitly declaring because some extenions depend on others (pq depends on raphf) - EXTENSIONS="apcu,apcu_bc,ev,event,grpc,imagick,jsonc,mailparse,memcache,memcached,mongodb,oauth,phalcon,raphf,pq,rdkafka,redis,suhosin,libuv,cassandra-cpp-driver,cassandra" + EXTENSIONS="apcu,apcu_bc,ev,event,grpc,imagick,jsonc,mailparse,memcache,memcached,mongodb,oauth,phalcon,protobuf,raphf,pq,rdkafka,redis,suhosin,libuv,cassandra-cpp-driver,cassandra" fi diff --git a/deb-package-builder/extensions/protobuf/build.sh b/deb-package-builder/extensions/protobuf/build.sh new file mode 100755 index 00000000..7139a938 --- /dev/null +++ b/deb-package-builder/extensions/protobuf/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -ex + +source ${DEB_BUILDER_DIR}/extensions/functions.sh + +echo "Building protobuf for gcp-php${SHORT_VERSION}" + +PNAME="gcp-php${SHORT_VERSION}-protobuf" + +# Download the source +download_from_pecl protobuf +build_package protobuf diff --git a/deb-package-builder/extensions/protobuf/debian/compat b/deb-package-builder/extensions/protobuf/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/deb-package-builder/extensions/protobuf/debian/compat @@ -0,0 +1 @@ +9 diff --git a/deb-package-builder/extensions/protobuf/debian/control.in b/deb-package-builder/extensions/protobuf/debian/control.in new file mode 100644 index 00000000..e903c10b --- /dev/null +++ b/deb-package-builder/extensions/protobuf/debian/control.in @@ -0,0 +1,12 @@ +Source: gcp-php${SHORT_VERSION}-protobuf +Section: php +Priority: optional +Maintainer: Jeff Ching +Build-Depends: debhelper (>= 9), gcp-php${SHORT_VERSION} +Standards-Version: 3.9.5 +Homepage: http://pecl.php.net/package/protobuf + +Package: gcp-php${SHORT_VERSION}-protobuf +Architecture: any +Depends: libc6 (>= 2.4), gcp-php${SHORT_VERSION} +Description: protobuf extension module for gcp-php${SHORT_VERSION} diff --git a/deb-package-builder/extensions/protobuf/debian/copyright b/deb-package-builder/extensions/protobuf/debian/copyright new file mode 100644 index 00000000..0819d54e --- /dev/null +++ b/deb-package-builder/extensions/protobuf/debian/copyright @@ -0,0 +1,37 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: protobuf +Upstream-Contact: Stanley Cheung +Source: http://pecl.php.net/package/protobuf/ + +Files: * +Copyright: 2015, Google Inc. +License: BSD + 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. + +Files: debian/* +Copyright: 2017 Google, Inc. +License: Apache-2.0 diff --git a/deb-package-builder/extensions/protobuf/debian/ext-protobuf.ini b/deb-package-builder/extensions/protobuf/debian/ext-protobuf.ini new file mode 100644 index 00000000..d4688773 --- /dev/null +++ b/deb-package-builder/extensions/protobuf/debian/ext-protobuf.ini @@ -0,0 +1 @@ +extension=protobuf.so diff --git a/deb-package-builder/extensions/protobuf/debian/gcp-php-protobuf.install.in b/deb-package-builder/extensions/protobuf/debian/gcp-php-protobuf.install.in new file mode 100644 index 00000000..98ef2da1 --- /dev/null +++ b/deb-package-builder/extensions/protobuf/debian/gcp-php-protobuf.install.in @@ -0,0 +1 @@ +debian/ext-protobuf.ini opt/php${SHORT_VERSION}/lib/ext.available diff --git a/deb-package-builder/extensions/protobuf/debian/rules.in b/deb-package-builder/extensions/protobuf/debian/rules.in new file mode 100644 index 00000000..48c09239 --- /dev/null +++ b/deb-package-builder/extensions/protobuf/debian/rules.in @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +%: + dh $@ + +override_dh_auto_configure: + phpize && \ + ./configure + +override_dh_auto_test: + +override_dh_auto_install: + INSTALL_ROOT=$(CURDIR)/debian/gcp-php${SHORT_VERSION}-protobuf \ + dh_auto_install diff --git a/php-base/build-scripts/install_extensions.php b/php-base/build-scripts/install_extensions.php index 4f58a3d0..4860468d 100644 --- a/php-base/build-scripts/install_extensions.php +++ b/php-base/build-scripts/install_extensions.php @@ -46,6 +46,7 @@ class InstallExtensions 'oauth', 'phalcon', 'pq', + 'protobuf', 'raphf', 'rdkafka', 'redis' diff --git a/php-base/build-scripts/install_php56.sh b/php-base/build-scripts/install_php56.sh index 156dd16a..c7e74a59 100644 --- a/php-base/build-scripts/install_php56.sh +++ b/php-base/build-scripts/install_php56.sh @@ -34,6 +34,7 @@ apt-get install -y \ gcp-php56-oauth \ gcp-php56-phalcon \ gcp-php56-pq \ + gcp-php56-protobuf \ gcp-php56-rdkafka \ gcp-php56-redis \ gcp-php56-suhosin \ diff --git a/php-base/build-scripts/install_php70.sh b/php-base/build-scripts/install_php70.sh index 750c5c7e..aa7aab29 100644 --- a/php-base/build-scripts/install_php70.sh +++ b/php-base/build-scripts/install_php70.sh @@ -33,6 +33,7 @@ apt-get install -y \ gcp-php70-oauth \ gcp-php70-phalcon \ gcp-php70-pq \ + gcp-php70-protobuf \ gcp-php70-rdkafka \ gcp-php70-redis \ --no-install-recommends diff --git a/php-base/build-scripts/install_php71.sh b/php-base/build-scripts/install_php71.sh index 97fd9d36..2f8e665b 100644 --- a/php-base/build-scripts/install_php71.sh +++ b/php-base/build-scripts/install_php71.sh @@ -32,6 +32,7 @@ apt-get install -y \ gcp-php71-mongodb \ gcp-php71-oauth \ gcp-php71-pq \ + gcp-php71-protobuf \ gcp-php71-rdkafka \ gcp-php71-redis \ --no-install-recommends diff --git a/testapps/php56_extensions/composer.json b/testapps/php56_extensions/composer.json index bd73e861..0f7a0deb 100644 --- a/testapps/php56_extensions/composer.json +++ b/testapps/php56_extensions/composer.json @@ -27,6 +27,7 @@ "ext-raphf": "*", "ext-pq": "*", "ext-rdkafka": "*", - "ext-cassandra": "*" + "ext-cassandra": "*", + "ext-protobuf": "*" } } diff --git a/testapps/php56_extensions/tests/ProtobufTest.php b/testapps/php56_extensions/tests/ProtobufTest.php new file mode 100644 index 00000000..6a0e55e5 --- /dev/null +++ b/testapps/php56_extensions/tests/ProtobufTest.php @@ -0,0 +1,26 @@ +assertTrue(extension_loaded('protobuf')); + } +} diff --git a/testapps/php70_extensions/composer.json b/testapps/php70_extensions/composer.json index b5507164..3cdeceeb 100644 --- a/testapps/php70_extensions/composer.json +++ b/testapps/php70_extensions/composer.json @@ -26,6 +26,7 @@ "ext-raphf": "*", "ext-pq": "*", "ext-rdkafka": "*", - "ext-cassandra": "*" + "ext-cassandra": "*", + "ext-protobuf": "*" } } diff --git a/testapps/php70_extensions/tests/ProtobufTest.php b/testapps/php70_extensions/tests/ProtobufTest.php new file mode 100644 index 00000000..6a0e55e5 --- /dev/null +++ b/testapps/php70_extensions/tests/ProtobufTest.php @@ -0,0 +1,26 @@ +assertTrue(extension_loaded('protobuf')); + } +} diff --git a/testapps/php71_extensions/composer.json b/testapps/php71_extensions/composer.json index ad5be772..6433a0bb 100644 --- a/testapps/php71_extensions/composer.json +++ b/testapps/php71_extensions/composer.json @@ -25,6 +25,7 @@ "ext-raphf": "*", "ext-pq": "*", "ext-rdkafka": "*", - "ext-cassandra": "*" + "ext-cassandra": "*", + "ext-protobuf": "*" } } diff --git a/testapps/php71_extensions/tests/ProtobufTest.php b/testapps/php71_extensions/tests/ProtobufTest.php new file mode 100644 index 00000000..6a0e55e5 --- /dev/null +++ b/testapps/php71_extensions/tests/ProtobufTest.php @@ -0,0 +1,26 @@ +assertTrue(extension_loaded('protobuf')); + } +}