diff options
-rw-r--r-- | PHPINFO | 15 | ||||
-rw-r--r-- | REFLECTION | 33 | ||||
-rwxr-xr-x | makedeps.sh | 20 | ||||
-rw-r--r-- | php-pecl-skywalking.spec | 215 | ||||
-rw-r--r-- | skywalking-php85.patch | 102 |
5 files changed, 276 insertions, 109 deletions
@@ -3,15 +3,20 @@ skywalking Directive => Local Value => Master Value skywalking.enable => Off => Off -skywalking.version => 8 => 8 -skywalking.app_code => hello_skywalking => hello_skywalking -skywalking.authentication => no value => no value -skywalking.grpc => 127.0.0.1:11800 => 127.0.0.1:11800 +skywalking.service => hello_skywalking => hello_skywalking +skywalking.service_instance => no value => no value +skywalking.oap_version => 9.0.0 => 9.0.0 +skywalking.oap_cross_process_protocol => 3.0 => 3.0 +skywalking.oap_authentication => no value => no value +skywalking.grpc_address => 127.0.0.1:11800 => 127.0.0.1:11800 skywalking.grpc_tls_enable => Off => Off skywalking.grpc_tls_pem_root_certs => no value => no value skywalking.grpc_tls_pem_private_key => no value => no value skywalking.grpc_tls_pem_cert_chain => no value => no value -skywalking.log_enable => Off => Off +skywalking.log_level => disable => disable skywalking.log_path => /tmp/skywalking-php.log => /tmp/skywalking-php.log +skywalking.curl_response_enable => Off => Off skywalking.error_handler_enable => Off => Off skywalking.mq_max_message_length => 20480 => 20480 +skywalking.mq_unique => 0 => 0 +skywalking.sample_n_per_3_secs => -1 => -1 @@ -1,4 +1,4 @@ -Extension [ <persistent> extension #120 skywalking version 4.1.2 ] { +Extension [ <persistent> extension #118 skywalking version 5.0.1 ] { - Dependencies { Dependency [ json (Required) ] @@ -11,16 +11,22 @@ Extension [ <persistent> extension #120 skywalking version 4.1.2 ] { Entry [ skywalking.enable <ALL> ] Current = '0' } - Entry [ skywalking.version <ALL> ] - Current = '8' - } - Entry [ skywalking.app_code <ALL> ] + Entry [ skywalking.service <ALL> ] Current = 'hello_skywalking' } - Entry [ skywalking.authentication <ALL> ] + Entry [ skywalking.service_instance <ALL> ] + Current = '' + } + Entry [ skywalking.oap_version <ALL> ] + Current = '9.0.0' + } + Entry [ skywalking.oap_cross_process_protocol <ALL> ] + Current = '3.0' + } + Entry [ skywalking.oap_authentication <ALL> ] Current = '' } - Entry [ skywalking.grpc <ALL> ] + Entry [ skywalking.grpc_address <ALL> ] Current = '127.0.0.1:11800' } Entry [ skywalking.grpc_tls_enable <ALL> ] @@ -35,18 +41,27 @@ Extension [ <persistent> extension #120 skywalking version 4.1.2 ] { Entry [ skywalking.grpc_tls_pem_cert_chain <ALL> ] Current = '' } - Entry [ skywalking.log_enable <ALL> ] - Current = '0' + Entry [ skywalking.log_level <ALL> ] + Current = 'disable' } Entry [ skywalking.log_path <ALL> ] Current = '/tmp/skywalking-php.log' } + Entry [ skywalking.curl_response_enable <ALL> ] + Current = '0' + } Entry [ skywalking.error_handler_enable <ALL> ] Current = '0' } Entry [ skywalking.mq_max_message_length <ALL> ] Current = '20480' } + Entry [ skywalking.mq_unique <ALL> ] + Current = '0' + } + Entry [ skywalking.sample_n_per_3_secs <ALL> ] + Current = '-1' + } } - Functions { diff --git a/makedeps.sh b/makedeps.sh new file mode 100755 index 0000000..1179dbb --- /dev/null +++ b/makedeps.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +if [ $# -lt 1 ]; then + echo usage $0 version + exit 0 +fi +if [ -f skywalking-$1.tgz ]; then + echo "+ Unpack" + tar xf skywalking-$1.tgz + + pushd skywalking-$1 + echo "+ Fetch" + cargo vendor mycargo + + echo "+ Pack" + tar czf ../skywalking-deps-$1.tgz mycargo + popd +else + echo skywalking-$version.tgz missing +fi diff --git a/php-pecl-skywalking.spec b/php-pecl-skywalking.spec index 6f44962..3b4b45a 100644 --- a/php-pecl-skywalking.spec +++ b/php-pecl-skywalking.spec @@ -1,31 +1,38 @@ # remirepo spec file for php-pecl-skywalking # -# Copyright (c) 2019-2021 Remi Collet -# License: CC-BY-SA -# http://creativecommons.org/licenses/by-sa/4.0/ +# SPDX-FileCopyrightText: Copyright 2019-2025 Remi Collet +# SPDX-License-Identifier: CECILL-2.1 +# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt # # Please, preserve the changelog entries # %if 0%{?scl:1} -%global sub_prefix %{scl_prefix} %scl_package php-pecl-skywalking +%else +%global _root_bindir %{_bindir} %endif %global pecl_name skywalking # not supported by upstream %global with_zts 0 %global ini_name 40-%{pecl_name}.ini -# TODO need investigation -%bcond_with tests +%global sources %{pecl_name}-%{version} +%global _configure ../%{sources}/configure Summary: The PHP instrument agent for Apache SkyWalking -Name: %{?sub_prefix}php-pecl-%{pecl_name} -Version: 4.1.3 -Release: 1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} -Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz -License: ASL 2.0 +Name: %{?scl_prefix}php-pecl-%{pecl_name} +Version: 5.0.1 +Release: 4%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} +License: Apache-2.0 URL: https://pecl.php.net/package/%{pecl_name} +Source0: https://pecl.php.net/get/%{sources}.tgz +# awfull hack, use a bundled rust registry +Source1: makedeps.sh +Source2: https://pecl.php.net/get/%{pecl_name}-deps-%{version}.tgz + +Patch0: %{pecl_name}-php85.patch + BuildRequires: make BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel >= 7.0 @@ -34,41 +41,43 @@ BuildRequires: %{?scl_prefix}php-curl BuildRequires: %{?scl_prefix}php-json BuildRequires: %{?scl_prefix}php-pcre BuildRequires: libcurl-devel -BuildRequires: protobuf-devel -BuildRequires: protobuf-compiler -BuildRequires: boost-devel -# Missing in EPEL https://bugzilla.redhat.com/1757147 -BuildRequires: grpc-devel -BuildRequires: grpc-plugins +BuildRequires: cargo >= 1.52 +BuildRequires: rustfmt +%if 0%{?fedora} >= 27 || 0%{?rhel} >= 9 +BuildRequires: rust-packaging +%endif +# Using system rust registry +#BuildRequires: (crate(anyhow/default) >= 1.0.57 with crate(anyhow/default) < 2.0.0~) +#BuildRequires: (crate(cbindgen/default) >= 0.23.0 with crate(cbindgen/default) < 0.24.0~) +#BuildRequires: (crate(futures-util/default) >= 0.3.21 with crate(futures-util/default) < 0.4.0~) +#BuildRequires: (crate(gethostname/default) >= 0.2.3 with crate(gethostname/default) < 0.3.0~) +#*************: (crate(ipc-channel/default) >= 0.16.0 with crate(ipc-channel/default) < 0.17.0~) +#*************: (crate(local-ip-address/default) >= 0.4.4 with crate(local-ip-address/default) < 0.5.0~) +#BuildRequires: (crate(log/default) >= 0.4.1 with crate(log/default) < 0.5.0~) +#BuildRequires: (crate(prost-derive/default) >= 0.8.0 with crate(prost-derive/default) < 0.9.0~) +#BuildRequires: (crate(prost/default) >= 0.8.0 with crate(prost/default) < 0.9.0~) +#BuildRequires: (crate(rand/default) >= 0.8.5 with crate(rand/default) < 0.9.0~) +#BuildRequires: (crate(serde/default) >= 1.0.0 with crate(serde/default) < 2.0.0~) +#BuildRequires: (crate(serde/serde_derive) >= 1.0.0 with crate(serde/serde_derive) < 2.0.0~) +#BuildRequires: (crate(serde_json/default) >= 1.0.0 with crate(serde_json/default) < 2.0.0~) +#BuildRequires: (crate(simplelog/default) >= 0.12.0 with crate(simplelog/default) < 0.13.0~) +#BuildRequires: (crate(tokio/default) >= 1.0.0 with crate(tokio/default) < 2.0.0~) +#BuildRequires: (crate(tokio/full) >= 1.0.0 with crate(tokio/full) < 2.0.0~) +#*************: (crate(tonic-build/default) >= 0.5.2 with crate(tonic-build/default) < 0.6.0~) +#*************: (crate(tonic/default) >= 0.5.2 with crate(tonic/default) < 0.6.0~) +#BuildRequires: (crate(uuid/default) >= 1.0.0 with crate(uuid/default) < 2.0.0~) +#BuildRequires: (crate(uuid/v4) >= 1.0.0 with crate(uuid/v4) < 2.0.0~) Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} Requires: %{?scl_prefix}php(api) = %{php_core_api} Requires: %{?scl_prefix}php-curl Requires: %{?scl_prefix}php-json Requires: %{?scl_prefix}php-pcre -%{?_sclreq:Requires: %{?scl_prefix}runtime%{?_sclreq}%{?_isa}} Provides: %{?scl_prefix}php-%{pecl_name} = %{version} Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} -%if "%{?scl_prefix}" != "%{?sub_prefix}" -Provides: %{?scl_prefix}php-pecl-%{pecl_name} = %{version}-%{release} -Provides: %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release} -%endif - -%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel} -# Other third party repo stuff -%if "%{php_version}" > "7.3" -Obsoletes: php73-pecl-%{pecl_name} <= %{version} -%endif -%if "%{php_version}" > "7.4" -Obsoletes: php74-pecl-%{pecl_name} <= %{version} -%endif -%if "%{php_version}" > "8.0" -Obsoletes: php80-pecl-%{pecl_name} <= %{version} -%endif -%endif %description @@ -79,15 +88,37 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO %prep -%setup -q -c -mv %{pecl_name}-%{version} NTS +%setup -q -c -a2 # Don't install/register tests sed -e 's/role="test"/role="src"/' \ - %{?_licensedir:-e '/LICENSE/s/role="doc"/role="src"/' } \ + -e '/LICENSE/s/role="doc"/role="src"/' \ -i package.xml -pushd NTS +pushd %{sources} +%patch -P0 -p1 + +# Create cargo configuration to use vendor directory +mkdir .cargo +cat << EOF | tee .cargo/config.toml +[build] +jobs = %(echo %{?_smp_mflags} | sed 's/\-j//') +rustc = "%{_root_bindir}/rustc" + +[env] +CFLAGS = "%{build_cflags}" +CXXFLAGS = "%{build_cxxflags}" +LDFLAGS = "%{build_ldflags}" + +[term] +verbose = true + +[source.crates-io] +replace-with = "vendored-sources" + +[source.vendored-sources] +directory = "$(dirname $PWD)/mycargo" +EOF : Check version extver=$(sed -n '/#define PHP_SKYWALKING_VERSION /{s/.* "//;s/".*$//;p}' php_skywalking.h) @@ -97,9 +128,10 @@ if test "x${extver}" != "x%{version}%{?prever}"; then fi popd +mkdir NTS + %if %{with_zts} -# Duplicate source tree for NTS / ZTS build -cp -pr NTS ZTS +mkdir ZTS %endif # Create configuration file @@ -109,37 +141,51 @@ extension=%{pecl_name}.so ; Configuration ;skywalking.enable = Off -;skywalking.version = 8 -;skywalking.app_code = 'hello_skywalking' -;skywalking.authentication = '' -;skywalking.grpc = '127.0.0.1:11800' +;skywalking.service = 'hello_skywalking' +;skywalking.service_instance = '' +;skywalking.oap_version = '9.0.0' +;skywalking.oap_cross_process_protocol = '3.0' +;skywalking.oap_authentication = '' +;skywalking.grpc_address = '127.0.0.1:11800' ;skywalking.grpc_tls_enable = Off ;skywalking.grpc_tls_pem_root_certs = '' ;skywalking.grpc_tls_pem_private_key = '' ;skywalking.grpc_tls_pem_cert_chain = '' -;skywalking.log_enable = Off +;skywalking.log_level = 'disable' ;skywalking.log_path = '/tmp/skywalking-php.log'; +;skywalking.curl_response_enable = Off ;skywalking.error_handler_enable = Off ;skywalking.mq_max_message_length = 20480 +;skywalking.mq_unique = 0 +;skywalking.sample_n_per_3_secs = -1 + EOF +: Required rust version +grep -h rust-version mycargo/*/Cargo.toml NTS/Cargo.toml | sort -u | tail -n 4 + %build %{?dtsenable} -cd NTS -%{_bindir}/phpize +export CARGO_HOME=$PWD/mycargo + +cd %{sources} +%{__phpize} + +cd ../NTS +cp -r ../%{sources}/.cargo .cargo %configure \ --enable-skywalking \ - --with-php-config=%{_bindir}/php-config + --with-php-config=%{__phpconfig} make %{?_smp_mflags} %if %{with_zts} cd ../ZTS -%{_bindir}/zts-phpize +cp -r ../%{sources}/.cargo .cargo %configure \ --enable-skywalking \ - --with-php-config=%{_bindir}/zts-php-config + --with-php-config=%{__ztsphpconfig} make %{?_smp_mflags} %endif @@ -162,31 +208,10 @@ install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} %endif # Documentation -cd NTS +cd %{sources} for i in $(grep 'role="doc"' ../package.xml | sed -e 's/^.*name="//;s/".*$//') do install -Dpm 644 $i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i done -%{!?_licensedir:install -Dpm 644 LICENSE %{buildroot}%{pecl_docdir}/%{pecl_name}/LICENSE} - - -%if 0%{?fedora} < 24 && 0%{?rhel} < 8 -# when pear installed alone, after us -%triggerin -- %{?scl_prefix}php-pear -if [ -x %{__pecl} ] ; then - %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : -fi - -# posttrans as pear can be installed after us -%posttrans -if [ -x %{__pecl} ] ; then - %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : -fi - -%postun -if [ $1 -eq 0 -a -x %{__pecl} ] ; then - %{pecl_uninstall} %{pecl_name} >/dev/null || : -fi -%endif %check @@ -204,29 +229,9 @@ OPT="-n -d extension=curl.so -d extension=json.so" --modules | grep %{pecl_name} %endif -%if %{with tests} -: Upstream test suite for NTS extension -cd NTS -TEST_PHP_ARGS="$OPT -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" \ -REPORT_EXIT_STATUS=1 \ -NO_INTERACTION=1 \ -TEST_PHP_EXECUTABLE=%{__php} \ -%{__php} -n run-tests.php --show-diff - -%if %{with_zts} -: Upstream test suite for ZTS extension -cd ../ZTS -TEST_PHP_ARGS="$OPT -d extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so" \ -REPORT_EXIT_STATUS=1 \ -NO_INTERACTION=1 \ -TEST_PHP_EXECUTABLE=%{__ztsphp} \ -%{__ztsphp} -n run-tests.php --show-diff -%endif -%endif - %files -%{?_licensedir:%license NTS/LICENSE} +%license %{sources}/LICENSE %doc %{pecl_docdir}/%{pecl_name} %{pecl_xmldir}/%{name}.xml @@ -238,9 +243,29 @@ TEST_PHP_EXECUTABLE=%{__ztsphp} \ %{php_ztsextdir}/%{pecl_name}.so %endif -# TODO : missing grpc in EPEL %changelog +* Wed Jul 30 2025 Remi Collet <remi@remirepo.net> - 5.0.1-4 +- re-license spec file to CECILL-2.1 + +* Mon Sep 4 2023 Remi Collet <remi@remirepo.net> - 5.0.1-3 +- build out of sources tree + +* Fri Jul 1 2022 Remi Collet <remi@remirepo.net> - 5.0.1-2 +- use cargo vendor feature to reduce sources size + +* Thu Jun 30 2022 Remi Collet <remi@remirepo.net> - 5.0.1-1 +- update to 5.0.1 +- use bundled rust registry + +* Mon Jun 27 2022 Remi Collet <remi@remirepo.net> - 5.0.0-1 +- update to 5.0.0 +- open https://github.com/SkyAPM/SkyAPM-php-sdk/issues/493 + Impossible to build offline + +* Wed Nov 3 2021 Remi Collet <remi@remirepo.net> - 4.2.0-1 +- update to 4.2.0 + * Thu Aug 26 2021 Remi Collet <remi@remirepo.net> - 4.1.3-1 - update to 4.1.3 - open https://github.com/SkyAPM/SkyAPM-php-sdk/issues/429 diff --git a/skywalking-php85.patch b/skywalking-php85.patch new file mode 100644 index 0000000..aa14312 --- /dev/null +++ b/skywalking-php85.patch @@ -0,0 +1,102 @@ +From 7202ec37c4205b84b4df217436ab0e6a64a79d86 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Wed, 30 Jul 2025 14:35:24 +0200 +Subject: [PATCH] use Zend/zend_smart_string.h + +--- + src/sky_core_log.c | 1 - + src/sky_core_segment.c | 2 +- + src/sky_core_span.c | 1 - + src/sky_core_tag.c | 3 +-- + src/sky_plugin_redis.c | 1 - + src/sky_util_php.h | 5 +++++ + 6 files changed, 7 insertions(+), 6 deletions(-) + +diff --git a/src/sky_core_log.c b/src/sky_core_log.c +index cff9081..8b43c2d 100644 +--- a/src/sky_core_log.c ++++ b/src/sky_core_log.c +@@ -20,7 +20,6 @@ + #include "php.h" + #include <sys/time.h> + #include "sky_util_php.h" +-#include "ext/standard/php_smart_string.h" + + sky_core_log_t *sky_core_log_new() { + sky_core_log_t *log = (sky_core_log_t *) emalloc(sizeof(sky_core_log_t)); +diff --git a/src/sky_core_segment.c b/src/sky_core_segment.c +index fd5d9dc..5503cec 100644 +--- a/src/sky_core_segment.c ++++ b/src/sky_core_segment.c +@@ -23,7 +23,7 @@ + #include "sky_core_cross_process.h" + #include "sky_core_segment_reference.h" + #include "sky_core_report.h" +-#include "ext/standard/php_smart_string.h" ++#include "sky_util_php.h" + + sky_core_segment_t *sky_core_segment_new(char *protocol) { + sky_core_segment_t *segment = (sky_core_segment_t *) emalloc(sizeof(sky_core_segment_t)); +diff --git a/src/sky_core_span.c b/src/sky_core_span.c +index dba3c63..0abbb88 100644 +--- a/src/sky_core_span.c ++++ b/src/sky_core_span.c +@@ -22,7 +22,6 @@ + #include <string.h> + #include <sys/time.h> + #include "sky_util_php.h" +-#include "ext/standard/php_smart_string.h" + + sky_core_span_t *sky_core_span_new(sky_core_span_type type, sky_core_span_layer layer, int componentId) { + sky_core_span_t *span = (sky_core_span_t *) emalloc(sizeof(sky_core_span_t)); +diff --git a/src/sky_core_tag.c b/src/sky_core_tag.c +index 228afa6..62559df 100644 +--- a/src/sky_core_tag.c ++++ b/src/sky_core_tag.c +@@ -20,7 +20,6 @@ + #include <stdlib.h> + #include <stdio.h> + #include "sky_util_php.h" +-#include "ext/standard/php_smart_string.h" + + sky_core_tag_t *sky_core_tag_new(char *key, char *value) { + sky_core_tag_t *tag = (sky_core_tag_t *) emalloc(sizeof(sky_core_tag_t)); +@@ -44,4 +43,4 @@ int sky_core_tag_to_json(char **json, sky_core_tag_t *tag) { + efree(tag); + *json = str.c; + return str.len; +-} +\ No newline at end of file ++} +diff --git a/src/sky_plugin_redis.c b/src/sky_plugin_redis.c +index bd3838b..5918d2e 100644 +--- a/src/sky_plugin_redis.c ++++ b/src/sky_plugin_redis.c +@@ -19,7 +19,6 @@ + #include "sky_plugin_redis.h" + #include "sky_util_php.h" + #include "sky_utils.h" +-#include "ext/standard/php_smart_string.h" + + // strings + zif_handler origin_redis_append = NULL; +diff --git a/src/sky_util_php.h b/src/sky_util_php.h +index aeb2694..ffc5503 100644 +--- a/src/sky_util_php.h ++++ b/src/sky_util_php.h +@@ -27,7 +27,12 @@ typedef void (*zif_handler)(INTERNAL_FUNCTION_PARAMETERS); + + #endif + ++ ++#if PHP_VERSION_ID < 70200 + #include "ext/standard/php_smart_string.h" ++#else ++#include "Zend/zend_smart_string.h" ++#endif + + void *sky_util_find_obj_func(const char *obj, const char *name); + +-- +2.50.1 + |