From bf74d69ed601796fca2d6e737519cc1c2de7c60c Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Tue, 23 Feb 2016 22:39:25 -0800
Subject: [PATCH] fix php artifact name and update config.m4 template

---
 config.m4                           | 63 +++++++++++++-------
 package.xml                         | 90 +++++++++++++++++------------
 templates/config.m4.template        | 14 +++++
 tools/run_tests/artifact_targets.py | 10 ++--
 tools/run_tests/package_targets.py  |  2 +-
 5 files changed, 114 insertions(+), 65 deletions(-)

diff --git a/config.m4 b/config.m4
index 6d04add8e9..0323d5d2ad 100644
--- a/config.m4
+++ b/config.m4
@@ -9,8 +9,22 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_INCLUDE(../../grpc/src/php/ext/grpc)
   PHP_ADD_INCLUDE(../../grpc/third_party/boringssl/include)
 
+  LIBS="-lpthread $LIBS"
+
+  GRPC_SHARED_LIBADD="-lpthread $GRPC_SHARED_LIBADD"
   PHP_ADD_LIBRARY(pthread)
 
+  PHP_ADD_LIBRARY(dl,,GRPC_SHARED_LIBADD)
+  PHP_ADD_LIBRARY(dl)
+
+  case $host in
+    *darwin*) ;;
+    *)
+      PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD)
+      PHP_ADD_LIBRARY(rt)
+      ;;
+  esac
+
   PHP_NEW_EXTENSION(grpc,
     src/php/ext/grpc/byte_buffer.c \
     src/php/ext/grpc/call.c \
@@ -65,27 +79,6 @@ if test "$PHP_GRPC" != "no"; then
     src/core/support/time_win32.c \
     src/core/support/tls_pthread.c \
     src/core/support/wrap_memcpy.c \
-    src/core/httpcli/httpcli_security_connector.c \
-    src/core/security/base64.c \
-    src/core/security/client_auth_filter.c \
-    src/core/security/credentials.c \
-    src/core/security/credentials_metadata.c \
-    src/core/security/credentials_posix.c \
-    src/core/security/credentials_win32.c \
-    src/core/security/google_default_credentials.c \
-    src/core/security/handshake.c \
-    src/core/security/json_token.c \
-    src/core/security/jwt_verifier.c \
-    src/core/security/secure_endpoint.c \
-    src/core/security/security_connector.c \
-    src/core/security/security_context.c \
-    src/core/security/server_auth_filter.c \
-    src/core/security/server_secure_chttp2.c \
-    src/core/surface/init_secure.c \
-    src/core/surface/secure_channel_create.c \
-    src/core/tsi/fake_transport_security.c \
-    src/core/tsi/ssl_transport_security.c \
-    src/core/tsi/transport_security.c \
     src/core/census/grpc_context.c \
     src/core/census/grpc_filter.c \
     src/core/channel/channel_args.c \
@@ -101,6 +94,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/client_config/connector.c \
     src/core/client_config/default_initial_connect_string.c \
     src/core/client_config/initial_connect_string.c \
+    src/core/client_config/lb_policies/load_balancer_api.c \
     src/core/client_config/lb_policies/pick_first.c \
     src/core/client_config/lb_policies/round_robin.c \
     src/core/client_config/lb_policy.c \
@@ -113,6 +107,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/client_config/resolvers/sockaddr_resolver.c \
     src/core/client_config/subchannel.c \
     src/core/client_config/subchannel_factory.c \
+    src/core/client_config/subchannel_index.c \
     src/core/client_config/uri_parser.c \
     src/core/compression/algorithm.c \
     src/core/compression/message_compress.c \
@@ -164,6 +159,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/json/json_reader.c \
     src/core/json/json_string.c \
     src/core/json/json_writer.c \
+    src/core/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/surface/alarm.c \
     src/core/surface/api_trace.c \
     src/core/surface/byte_buffer.c \
@@ -213,11 +209,36 @@ if test "$PHP_GRPC" != "no"; then
     src/core/transport/static_metadata.c \
     src/core/transport/transport.c \
     src/core/transport/transport_op_string.c \
+    src/core/httpcli/httpcli_security_connector.c \
+    src/core/security/base64.c \
+    src/core/security/client_auth_filter.c \
+    src/core/security/credentials.c \
+    src/core/security/credentials_metadata.c \
+    src/core/security/credentials_posix.c \
+    src/core/security/credentials_win32.c \
+    src/core/security/google_default_credentials.c \
+    src/core/security/handshake.c \
+    src/core/security/json_token.c \
+    src/core/security/jwt_verifier.c \
+    src/core/security/secure_endpoint.c \
+    src/core/security/security_connector.c \
+    src/core/security/security_context.c \
+    src/core/security/server_auth_filter.c \
+    src/core/security/server_secure_chttp2.c \
+    src/core/surface/init_secure.c \
+    src/core/surface/secure_channel_create.c \
+    src/core/tsi/fake_transport_security.c \
+    src/core/tsi/ssl_transport_security.c \
+    src/core/tsi/transport_security.c \
     src/core/census/context.c \
     src/core/census/initialize.c \
+    src/core/census/mlog.c \
     src/core/census/operation.c \
     src/core/census/placeholders.c \
     src/core/census/tracing.c \
+    third_party/nanopb/pb_common.c \
+    third_party/nanopb/pb_decode.c \
+    third_party/nanopb/pb_encode.c \
     src/boringssl/err_data.c \
     third_party/boringssl/crypto/aes/aes.c \
     third_party/boringssl/crypto/aes/mode_wrappers.c \
diff --git a/package.xml b/package.xml
index 0d672512e5..99109ada8f 100644
--- a/package.xml
+++ b/package.xml
@@ -10,7 +10,7 @@
   <email>grpc-packages@google.com</email>
   <active>yes</active>
  </lead>
- <date>2016-02-12</date>
+ <date>2016-02-23</date>
  <time>16:06:07</time>
  <version>
   <release>0.8.0</release>
@@ -158,20 +158,6 @@
     <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/census.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/auth_filters.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/base64.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/credentials.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/handshake.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/json_token.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/jwt_verifier.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/secure_endpoint.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/security_connector.h" role="src" />
-    <file baseinstalldir="/" name="src/core/security/security_context.h" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.h" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.h" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/ssl_types.h" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/transport_security.h" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/transport_security_interface.h" role="src" />
     <file baseinstalldir="/" name="src/core/census/grpc_filter.h" role="src" />
     <file baseinstalldir="/" name="src/core/channel/channel_args.h" role="src" />
     <file baseinstalldir="/" name="src/core/channel/channel_stack.h" role="src" />
@@ -186,6 +172,7 @@
     <file baseinstalldir="/" name="src/core/client_config/client_config.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/connector.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/initial_connect_string.h" role="src" />
+    <file baseinstalldir="/" name="src/core/client_config/lb_policies/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/lb_policies/pick_first.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/lb_policies/round_robin.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/lb_policy.h" role="src" />
@@ -198,6 +185,7 @@
     <file baseinstalldir="/" name="src/core/client_config/resolvers/sockaddr_resolver.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/subchannel.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/subchannel_factory.h" role="src" />
+    <file baseinstalldir="/" name="src/core/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/uri_parser.h" role="src" />
     <file baseinstalldir="/" name="src/core/compression/algorithm_metadata.h" role="src" />
     <file baseinstalldir="/" name="src/core/compression/message_compress.h" role="src" />
@@ -235,7 +223,6 @@
     <file baseinstalldir="/" name="src/core/iomgr/time_averaged_stats.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/timer.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/timer_heap.h" role="src" />
-    <file baseinstalldir="/" name="src/core/iomgr/timer_internal.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/udp_server.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_pipe.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_posix.h" role="src" />
@@ -246,6 +233,7 @@
     <file baseinstalldir="/" name="src/core/json/json_common.h" role="src" />
     <file baseinstalldir="/" name="src/core/json/json_reader.h" role="src" />
     <file baseinstalldir="/" name="src/core/json/json_writer.h" role="src" />
+    <file baseinstalldir="/" name="src/core/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="src/core/statistics/census_interface.h" role="src" />
     <file baseinstalldir="/" name="src/core/statistics/census_rpc_stats.h" role="src" />
     <file baseinstalldir="/" name="src/core/surface/api_trace.h" role="src" />
@@ -285,29 +273,27 @@
     <file baseinstalldir="/" name="src/core/transport/static_metadata.h" role="src" />
     <file baseinstalldir="/" name="src/core/transport/transport.h" role="src" />
     <file baseinstalldir="/" name="src/core/transport/transport_impl.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/auth_filters.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/base64.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/credentials.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/handshake.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/json_token.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/jwt_verifier.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/secure_endpoint.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/security_connector.h" role="src" />
+    <file baseinstalldir="/" name="src/core/security/security_context.h" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.h" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.h" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/ssl_types.h" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/transport_security.h" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/transport_security_interface.h" role="src" />
     <file baseinstalldir="/" name="src/core/census/aggregation.h" role="src" />
+    <file baseinstalldir="/" name="src/core/census/mlog.h" role="src" />
     <file baseinstalldir="/" name="src/core/census/rpc_metric_id.h" role="src" />
-    <file baseinstalldir="/" name="src/core/httpcli/httpcli_security_connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/base64.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/client_auth_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/credentials_metadata.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/credentials_posix.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/credentials_win32.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/google_default_credentials.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/handshake.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/json_token.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/jwt_verifier.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/secure_endpoint.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/security_connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/security_context.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/server_auth_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/security/server_secure_chttp2.c" role="src" />
-    <file baseinstalldir="/" name="src/core/surface/init_secure.c" role="src" />
-    <file baseinstalldir="/" name="src/core/surface/secure_channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.c" role="src" />
-    <file baseinstalldir="/" name="src/core/tsi/transport_security.c" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb_common.h" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb_decode.h" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb_encode.h" role="src" />
     <file baseinstalldir="/" name="src/core/census/grpc_context.c" role="src" />
     <file baseinstalldir="/" name="src/core/census/grpc_filter.c" role="src" />
     <file baseinstalldir="/" name="src/core/channel/channel_args.c" role="src" />
@@ -323,6 +309,7 @@
     <file baseinstalldir="/" name="src/core/client_config/connector.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/default_initial_connect_string.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/initial_connect_string.c" role="src" />
+    <file baseinstalldir="/" name="src/core/client_config/lb_policies/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/lb_policies/pick_first.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/lb_policies/round_robin.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/lb_policy.c" role="src" />
@@ -335,6 +322,7 @@
     <file baseinstalldir="/" name="src/core/client_config/resolvers/sockaddr_resolver.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/subchannel.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/subchannel_factory.c" role="src" />
+    <file baseinstalldir="/" name="src/core/client_config/subchannel_index.c" role="src" />
     <file baseinstalldir="/" name="src/core/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/compression/algorithm.c" role="src" />
     <file baseinstalldir="/" name="src/core/compression/message_compress.c" role="src" />
@@ -386,6 +374,7 @@
     <file baseinstalldir="/" name="src/core/json/json_reader.c" role="src" />
     <file baseinstalldir="/" name="src/core/json/json_string.c" role="src" />
     <file baseinstalldir="/" name="src/core/json/json_writer.c" role="src" />
+    <file baseinstalldir="/" name="src/core/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="src/core/surface/alarm.c" role="src" />
     <file baseinstalldir="/" name="src/core/surface/api_trace.c" role="src" />
     <file baseinstalldir="/" name="src/core/surface/byte_buffer.c" role="src" />
@@ -435,11 +424,36 @@
     <file baseinstalldir="/" name="src/core/transport/static_metadata.c" role="src" />
     <file baseinstalldir="/" name="src/core/transport/transport.c" role="src" />
     <file baseinstalldir="/" name="src/core/transport/transport_op_string.c" role="src" />
+    <file baseinstalldir="/" name="src/core/httpcli/httpcli_security_connector.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/base64.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/client_auth_filter.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/credentials.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/credentials_metadata.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/credentials_posix.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/credentials_win32.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/google_default_credentials.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/handshake.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/json_token.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/jwt_verifier.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/secure_endpoint.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/security_connector.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/security_context.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/server_auth_filter.c" role="src" />
+    <file baseinstalldir="/" name="src/core/security/server_secure_chttp2.c" role="src" />
+    <file baseinstalldir="/" name="src/core/surface/init_secure.c" role="src" />
+    <file baseinstalldir="/" name="src/core/surface/secure_channel_create.c" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.c" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.c" role="src" />
+    <file baseinstalldir="/" name="src/core/tsi/transport_security.c" role="src" />
     <file baseinstalldir="/" name="src/core/census/context.c" role="src" />
     <file baseinstalldir="/" name="src/core/census/initialize.c" role="src" />
+    <file baseinstalldir="/" name="src/core/census/mlog.c" role="src" />
     <file baseinstalldir="/" name="src/core/census/operation.c" role="src" />
     <file baseinstalldir="/" name="src/core/census/placeholders.c" role="src" />
     <file baseinstalldir="/" name="src/core/census/tracing.c" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb_decode.c" role="src" />
+    <file baseinstalldir="/" name="third_party/nanopb/pb_encode.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/aes/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/asn1_locl.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/internal.h" role="src" />
@@ -974,7 +988,7 @@ Update to wrap gRPC C Core version 0.10.0
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2016-02-12</date>
+   <date>2016-02-23</date>
    <license>BSD</license>
    <notes>
 - Simplify gRPC PHP installation #4517
diff --git a/templates/config.m4.template b/templates/config.m4.template
index 1f8c1d9ca4..dbc12188dc 100644
--- a/templates/config.m4.template
+++ b/templates/config.m4.template
@@ -11,8 +11,22 @@
     PHP_ADD_INCLUDE(../../grpc/src/php/ext/grpc)
     PHP_ADD_INCLUDE(../../grpc/third_party/boringssl/include)
 
+    LIBS="-lpthread $LIBS"
+
+    GRPC_SHARED_LIBADD="-lpthread $GRPC_SHARED_LIBADD"
     PHP_ADD_LIBRARY(pthread)
 
+    PHP_ADD_LIBRARY(dl,,GRPC_SHARED_LIBADD)
+    PHP_ADD_LIBRARY(dl)
+
+    case $host in
+      *darwin*) ;;
+      *)
+        PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD)
+        PHP_ADD_LIBRARY(rt)
+        ;;
+    esac
+
     PHP_NEW_EXTENSION(grpc,
       % for source in php_config_m4.src:
       ${source} ${"\\"}
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index 15a1e2a681..803d3d106b 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -241,11 +241,11 @@ class NodeExtArtifact:
                               ['tools/run_tests/build_artifact_node.sh',
                                self.gyp_arch])
 
-class PHPExtArtifact:
-  """Builds PHP native extension"""
+class PHPArtifact:
+  """Builds PHP PECL package"""
 
   def __init__(self, platform, arch):
-    self.name = 'php_ext_{0}_{1}'.format(platform, arch)
+    self.name = 'php_pecl_package_{0}_{1}'.format(platform, arch)
     self.platform = platform
     self.arch = arch
     self.labels = ['artifact', 'php', platform, arch]
@@ -317,5 +317,5 @@ def targets():
            RubyArtifact('linux', 'x86'),
            RubyArtifact('linux', 'x64'),
            RubyArtifact('macos', 'x64'),
-           PHPExtArtifact('linux', 'x64'),
-           PHPExtArtifact('macos', 'x64')])
+           PHPArtifact('linux', 'x64'),
+           PHPArtifact('macos', 'x64')])
diff --git a/tools/run_tests/package_targets.py b/tools/run_tests/package_targets.py
index 8aee1f86de..87bc4865ce 100644
--- a/tools/run_tests/package_targets.py
+++ b/tools/run_tests/package_targets.py
@@ -140,7 +140,7 @@ class PythonPackage:
 
 
 class PHPPackage:
-  """Builds PHP PECL package and collects precompiled package"""
+  """Copy PHP PECL package artifact"""
 
   def __init__(self):
     self.name = 'php_package'
-- 
GitLab