Sync from SUSE:ALP:Source:Standard:1.0 php8 revision 028f5a9ce0a8265dbf169bb977be598b
This commit is contained in:
commit
6ca31fe5cd
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
131
README.macros
Normal file
131
README.macros
Normal file
@ -0,0 +1,131 @@
|
||||
README for php-macros
|
||||
|
||||
Author: Christian Wittmer <chris@computersalat.de>
|
||||
Author: Johannes Weberhofer <jweberhofer@weberhofer.at>
|
||||
|
||||
|
||||
%php_pear_gen_filelist generates an rpmlint happy filelist of your installed files
|
||||
|
||||
In most cases you only need to check the %doc part
|
||||
sometimes there is a "Changes" or "ChangeLog",....
|
||||
|
||||
Requirements for %php_pear_gen_filelist
|
||||
You have to define following parts inside your spec file
|
||||
|
||||
Example:
|
||||
|
||||
#
|
||||
# spec file for package php7-pear-Auth_SASL
|
||||
#
|
||||
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define php_name php7
|
||||
%define pear_name Auth_SASL
|
||||
Name: php7-pear-Auth_SASL
|
||||
Version: 1.1.0
|
||||
Release: 0
|
||||
Summary: Abstraction of various SASL mechanism responses
|
||||
License: BSD-3-Clause
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Url: http://pear.php.net/package/%{pear_name}
|
||||
Source: http://pear.php.net/get/%{pear_name}-%{version}.tgz
|
||||
BuildRequires: %{php_name}-devel
|
||||
BuildRequires: %{php_name}-pear >= 1.10.1
|
||||
Requires: %{php_name}-pear >= 1.10.1
|
||||
Provides: php-pear-%{pear_name} = %{version}
|
||||
Provides: php-pear(%{pear_name}) = %{version}
|
||||
Obsoletes: php5-pear-Auth_SASL
|
||||
BuildArch: noarch
|
||||
%if 0%{?suse_version} < 1330
|
||||
BuildRequires: %{php_name}-macros
|
||||
BuildRequires: %{php_name}-pear-Archive_Tar
|
||||
Requires: %{php_name}-pear-Archive_Tar
|
||||
%endif
|
||||
|
||||
%description
|
||||
Provides code to generate responses to common SASL mechanisms, including:
|
||||
- Digest-MD5
|
||||
- CramMD5
|
||||
- Plain
|
||||
- Anonymous
|
||||
- Login (Pseudo mechanism)
|
||||
|
||||
%prep
|
||||
%setup -q %setup -q -n %{pear_name}-%{version}
|
||||
mv ../package.xml .
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
%{__pear} install --nodeps --offline --packagingroot %{buildroot} package.xml
|
||||
install -D -m 0644 package.xml %{buildroot}%{pear_xmldir}/%{pear_name}.xml
|
||||
|
||||
rm -rf %{buildroot}/{doc,tmp}
|
||||
rm -rf %{buildroot}/%{php_peardir}/.{filemap,lock,registry,channels,depdb,depdblock}
|
||||
|
||||
%php_pear_gen_filelist
|
||||
|
||||
%post
|
||||
if [ "$1" = "1" ]; then
|
||||
# on "rpm -ivh"
|
||||
%{__pear} install --nodeps --soft --force --register-only %{pear_xmldir}/%{pear_name}.xml
|
||||
fi
|
||||
if [ "$1" = "2" ]; then
|
||||
# on "rpm -Uvh"
|
||||
%{__pear} upgrade --offline --register-only %{pear_xmldir}/%{pear_name}.xml
|
||||
fi
|
||||
|
||||
%postun
|
||||
if [ "$1" = "0" ]; then
|
||||
# on "rpm -e"
|
||||
%{__pear} uninstall --nodeps --ignore-errors --register-only pear.php.net/%{pear_name}
|
||||
fi
|
||||
|
||||
%files -f %{name}.files
|
||||
|
||||
%changelog
|
||||
|
||||
#############################################################################
|
||||
|
||||
And here an Example of the generated filelist (does not match above package):
|
||||
|
||||
/usr/share/php5/PEAR/Date.php
|
||||
%dir /usr/share/php5/PEAR/Date
|
||||
/usr/share/php5/PEAR/Date/Calc.php
|
||||
/usr/share/php5/PEAR/Date/Human.php
|
||||
/usr/share/php5/PEAR/Date/Span.php
|
||||
/usr/share/php5/PEAR/Date/TimeZone.php
|
||||
%dir /usr/share/php5/PEAR/test
|
||||
%dir /usr/share/php5/PEAR/test/Date
|
||||
%dir /usr/share/php5/PEAR/test/Date/tests
|
||||
/usr/share/php5/PEAR/test/Date/tests/test_date_methods_span.php
|
||||
/usr/share/php5/PEAR/test/Date/tests/testunit_date_span.php
|
||||
/usr/share/php5/PEAR/test/Date/tests/test_calc.php
|
||||
/usr/share/php5/PEAR/test/Date/tests/calc.php
|
||||
/usr/share/php5/PEAR/test/Date/tests/testunit_date.php
|
||||
/usr/share/php5/PEAR/test/Date/tests/testunit.php
|
||||
%dir /usr/share/php5/PEAR/test/Date/tests/bugs
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-727-1.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-727-2.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-727-3.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-727-4.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-674.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-9213.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-9414.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-8912.phpt
|
||||
/usr/share/php5/PEAR/test/Date/tests/bugs/bug-967.phpt
|
||||
/var/lib/pear/Date.xml
|
||||
|
7
_multibuild
Normal file
7
_multibuild
Normal file
@ -0,0 +1,7 @@
|
||||
<multibuild>
|
||||
<package>apache2</package>
|
||||
<package>embed</package>
|
||||
<package>fastcgi</package>
|
||||
<package>fpm</package>
|
||||
<package>test</package>
|
||||
</multibuild>
|
55
build-test.sh
Normal file
55
build-test.sh
Normal file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
TEST_RESULT_FILE_BEFORE='test_results.before'
|
||||
TEST_RESULT_FILE_AFTER='test_results.after'
|
||||
|
||||
function usage
|
||||
{
|
||||
echo "usage: $0 buildroot [osc ARGUMENTS]"
|
||||
echo " 1. Run first time to create ${TEST_RESULT_FILE_BEFORE}."
|
||||
echo " 2. Make source changes."
|
||||
echo " 3. Run second time to create ${TEST_RESULT_FILE_AFTER}"
|
||||
echo " and see changes in test results."
|
||||
}
|
||||
|
||||
if [ -z $1 ]; then
|
||||
echo 'ERROR: missing a parameter: buildroot'
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" == "-h" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
export OSC_BUILD_ROOT=$1
|
||||
shift
|
||||
apiurl=`cat .osc/_apiurl 2>/dev/null`
|
||||
if [ ! -z "$apiurl" ]; then
|
||||
apiurl="-A $apiurl"
|
||||
fi
|
||||
osc $apiurl build $@ --no-verify --with make_test -x valgrind *.spec
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: build failed. See $OSC_BUILD_ROOT/.build.log for details."
|
||||
exit 1
|
||||
fi
|
||||
cat $OSC_BUILD_ROOT/.build.log \
|
||||
| sed 's:^\[[ 0-9]\+s\] ::' \
|
||||
| egrep 'TEST [0-9]+\/[0-9]+|SKIP.*reason' \
|
||||
| sed 's:.*\r::' \
|
||||
| sort \
|
||||
> ${TEST_RESULT_FILE_AFTER}
|
||||
if [ ! -e ${TEST_RESULT_FILE_BEFORE} ]; then
|
||||
echo "Creating ${TEST_RESULT_FILE_BEFORE}"
|
||||
echo "Run $0 again AFTER source changes, to create ${TEST_RESULT_FILE_AFTER}."
|
||||
echo "Differences will be checked then."
|
||||
mv ${TEST_RESULT_FILE_AFTER} ${TEST_RESULT_FILE_BEFORE}
|
||||
else
|
||||
echo --- DIFFERENCES -------------------------------------------
|
||||
diff -up $TEST_RESULT_FILE_BEFORE ${TEST_RESULT_FILE_AFTER}
|
||||
echo -----------------------------------------------------------
|
||||
echo "Do not forgot to "
|
||||
echo "rm ${TEST_RESULT_FILE_BEFORE} ${TEST_RESULT_FILE_AFTER}"
|
||||
echo
|
||||
fi
|
||||
|
96
macros.php
Normal file
96
macros.php
Normal file
@ -0,0 +1,96 @@
|
||||
# macros.php file
|
||||
# macros for module building. handle with care.
|
||||
|
||||
#
|
||||
# Interface versions exposed by PHP:
|
||||
#
|
||||
%php_core_api @PHP_APIVER@
|
||||
%php_zend_api @PHP_ZENDVER@
|
||||
|
||||
# Useful php macros (from Christian Wittmer <chris@computersalat.de>)
|
||||
#
|
||||
%__php /usr/bin/php
|
||||
%__phpize /usr/bin/phpize
|
||||
%__php_config /usr/bin/php-config
|
||||
%php_version %(%{__php_config} --version)
|
||||
%php_cfgdir %(%{__php_config} --ini-dir)
|
||||
%php_extdir %(%{__php_config} --extension-dir)
|
||||
|
||||
# pear related macros
|
||||
%__pear /usr/bin/pear
|
||||
%php_peardir %(%{__pear} config-get php_dir)
|
||||
|
||||
# %pear_xmldir should be replaced by %php_pearxmldir
|
||||
%pear_xmldir /var/lib/pear
|
||||
|
||||
%php_pearxmldir /var/lib/pear
|
||||
%pear_phpdir %(%{__pear} config-get php_dir 2> /dev/null || echo undefined)
|
||||
%pear_docdir %(%{__pear} config-get doc_dir 2> /dev/null || echo undefined)
|
||||
%pear_testdir %(%{__pear} config-get test_dir 2> /dev/null || echo undefined)
|
||||
%pear_datadir %(%{__pear} config-get data_dir 2> /dev/null || echo undefined)
|
||||
%pear_cfgdir %(%{__pear} config-get cfg_dir 2> /dev/null || echo undefined)
|
||||
%pear_wwwdir %(%{__pear} config-get www_dir 2> /dev/null || echo undefined)
|
||||
%pear_metadir %(%{__pear} config-get metadata_dir 2> /dev/null || echo undefined)
|
||||
|
||||
# pecl related macros
|
||||
%__pecl /usr/bin/pecl
|
||||
%pecl_phpdir %(%{__pecl} config-get php_dir 2> /dev/null || echo undefined)
|
||||
%pecl_docdir %(%{__pecl} config-get doc_dir 2> /dev/null || echo undefined)
|
||||
%pecl_testdir %(%{__pecl} config-get test_dir 2> /dev/null || echo undefined)
|
||||
%pecl_datadir %(%{__pecl} config-get data_dir 2> /dev/null || echo undefined)
|
||||
|
||||
# macro: php_pear_gen_filelist
|
||||
# do the rpmlint happy filelist generation
|
||||
# with %dir in front of directories
|
||||
%php_pear_gen_filelist(n)\
|
||||
FILES=%{name}.files\
|
||||
# fgen_dir func\
|
||||
# IN: dir\
|
||||
fgen_dir(){\
|
||||
%{__cat} >> $FILES << EOF\
|
||||
%dir ${1}\
|
||||
EOF\
|
||||
}\
|
||||
# fgen_file func\
|
||||
# IN: file\
|
||||
fgen_file(){\
|
||||
%{__cat} >> $FILES << EOF\
|
||||
${1}\
|
||||
EOF\
|
||||
}\
|
||||
# check for files in %{php_peardir}\
|
||||
RES=`find ${RPM_BUILD_ROOT}%{php_peardir} -maxdepth 1 -type f`\
|
||||
if [ -n "$RES" ]; then\
|
||||
for file in $RES; do\
|
||||
fgen_file "%{php_peardir}/$(basename ${file})"\
|
||||
done\
|
||||
fi\
|
||||
\
|
||||
# get all dirs into array\
|
||||
base_dir="${RPM_BUILD_ROOT}%{php_peardir}/"\
|
||||
for dir in `find ${base_dir} -type d | sort`; do\
|
||||
if [ "$dir" = "${base_dir}" ]; then\
|
||||
continue\
|
||||
else\
|
||||
el=`echo $dir | %{__awk} -F"${base_dir}" '{print $2}'`\
|
||||
all_dir=(${all_dir[@]} $el)\
|
||||
fi\
|
||||
done\
|
||||
\
|
||||
# build filelist\
|
||||
for i in ${all_dir[@]}; do\
|
||||
if [ -d ${base_dir}/${i} ]; then\
|
||||
RES=`find "${base_dir}/${i}" -maxdepth 1 -type f`\
|
||||
if [ -n "$RES" ]; then\
|
||||
fgen_dir "%{php_peardir}/${i}"\
|
||||
for file in $RES; do\
|
||||
fgen_file "%{php_peardir}/${i}/$(basename ${file})"\
|
||||
done\
|
||||
else\
|
||||
fgen_dir "%{php_peardir}/${i}"\
|
||||
fi\
|
||||
fi\
|
||||
done\
|
||||
# add xml file\
|
||||
fgen_file "%php_pearxmldir/%{pear_name}.xml"\
|
||||
#
|
17
mod_php8.conf
Normal file
17
mod_php8.conf
Normal file
@ -0,0 +1,17 @@
|
||||
<IfModule mod_php.c>
|
||||
<FilesMatch "\.ph(p[34578]?|tml)$">
|
||||
SetHandler application/x-httpd-php
|
||||
</FilesMatch>
|
||||
<FilesMatch "\.php[34578]?s$">
|
||||
SetHandler application/x-httpd-php-source
|
||||
</FilesMatch>
|
||||
DirectoryIndex index.php4
|
||||
DirectoryIndex index.php5
|
||||
DirectoryIndex index.php7
|
||||
DirectoryIndex index.php8
|
||||
DirectoryIndex index.php
|
||||
|
||||
php_value session.save_handler "files"
|
||||
php_value session.save_path "/var/lib/php8/sessions"
|
||||
</IfModule>
|
||||
|
BIN
php-8.2.16.tar.xz
(Stored with Git LFS)
Normal file
BIN
php-8.2.16.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
17
php-8.2.16.tar.xz.asc
Normal file
17
php-8.2.16.tar.xz.asc
Normal file
@ -0,0 +1,17 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQJFBAABCgAvFiEEEZjAEXWTSXpexcGZKGrx+Yl0adwFAmXLibURHHBpZXJyaWNr
|
||||
QHBocC5uZXQACgkQKGrx+Yl0adyPvg/+Kfs0y4SRHGcdppHynDIZQhPPqSsUHbTl
|
||||
Z8DVv1e9KCIkFlMboc47s6C2VcPj7eMdnPUr9MYG1JMlW7Q8LzQMBNY9CG4PiWRw
|
||||
dlXnYxzi3s7xAkyZZYSmrd08B84SWpz/h4UhuC45vNoKDL4Gda203GX6Eprv2txf
|
||||
Z1EONizVvVaiLJxEj5r9xRWsoJ8NFNDU2wBfdHYxVEk/G82g4mP7uyjnXGxjHqQN
|
||||
2qPwdVO/5MB9d6gQBrOYoO+S/sx5fK8UC2bElMREbyAouygx3yHBockguTs4Uzwt
|
||||
h+71t+ehJNxiDROpZH6ufoGeZIkkaZRcWzfMCBvrwYckRuBY+6MHryupqFYmfPni
|
||||
P4HxK/noLWtQwvv5lMiHURWoYhc2pGDoHt59D9oZTtTP9D1u2PjGO0e4cyJgdE7N
|
||||
2gA+pRQxdDQceJDHPSDyMEIpkfb4w7u8d/l8L22Inizva9YpuFWKyXeb7u0mQFJg
|
||||
32cB/mR1ffxYWH0hCMM2aWvr1op3CrEupGdG/FdTnBB6dD4LCUsXkuROP1yW7Uoi
|
||||
VjAn/wg/H+CfIUjuKZNxGnRjvjrPsGxfx/2EGU/hRabEe+/cRQXtHtkaBzHbcmZv
|
||||
K6SHC27bBirvxEHTVRGGLcYJX4TU8z4S29EjjA5pyv2NqxWamce0HPNEahWLJ1xv
|
||||
bjxMi6LLmV8=
|
||||
=25i9
|
||||
-----END PGP SIGNATURE-----
|
13
php-ar-flags.patch
Normal file
13
php-ar-flags.patch
Normal file
@ -0,0 +1,13 @@
|
||||
Index: php-8.2.15/configure.ac
|
||||
===================================================================
|
||||
--- php-8.2.15.orig/configure.ac
|
||||
+++ php-8.2.15/configure.ac
|
||||
@@ -1618,7 +1618,7 @@ PHP_CONFIGURE_PART(Configuring libtool)
|
||||
|
||||
dnl Silence warning: `ar: 'u' modifier ignored since 'D' is the default`
|
||||
dnl See https://github.com/php/php-src/pull/3017
|
||||
-AC_SUBST(AR_FLAGS, [cr])
|
||||
+AC_SUBST(AR_FLAGS, [Dcr])
|
||||
|
||||
dnl Only allow AC_PROG_CXX and AC_PROG_CXXCPP if they are explicitly called (by
|
||||
dnl PHP_REQUIRE_CXX). Otherwise AC_PROG_LIBTOOL fails if there is no working C++
|
109
php-build-reproducible-phar.patch
Normal file
109
php-build-reproducible-phar.patch
Normal file
@ -0,0 +1,109 @@
|
||||
From 485e2a4e43458a417603d4ed219af3e79854ef46 Mon Sep 17 00:00:00 2001
|
||||
From: Arjen de Korte <build+github@de-korte.org>
|
||||
Date: Sat, 2 Jan 2021 17:57:18 +0100
|
||||
Subject: [PATCH 1/1] phar: honor SOURCE_DATE_EPOCH for timestamps
|
||||
|
||||
In order to build reproducible phars, honor SOURCE_DATE_EPOCH
|
||||
if set
|
||||
|
||||
Signed-off-by: Arjen de Korte <build+github@de-korte.org>
|
||||
---
|
||||
ext/phar/phar.c | 2 +-
|
||||
ext/phar/phar_internal.h | 15 +++++++++++++++
|
||||
ext/phar/stream.c | 2 +-
|
||||
ext/phar/tar.c | 2 +-
|
||||
ext/phar/util.c | 2 +-
|
||||
ext/phar/zip.c | 2 +-
|
||||
6 files changed, 18 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: php-8.2.16/ext/phar/phar.c
|
||||
===================================================================
|
||||
--- php-8.2.16.orig/ext/phar/phar.c
|
||||
+++ php-8.2.16/ext/phar/phar.c
|
||||
@@ -2999,7 +2999,7 @@ int phar_flush(phar_archive_data *phar,
|
||||
4: metadata-len
|
||||
+: metadata
|
||||
*/
|
||||
- mytime = time(NULL);
|
||||
+ mytime = source_date_epoch_time(NULL);
|
||||
phar_set_32(entry_buffer, entry->uncompressed_filesize);
|
||||
phar_set_32(entry_buffer+4, mytime);
|
||||
phar_set_32(entry_buffer+8, entry->compressed_filesize);
|
||||
Index: php-8.2.16/ext/phar/phar_internal.h
|
||||
===================================================================
|
||||
--- php-8.2.16.orig/ext/phar/phar_internal.h
|
||||
+++ php-8.2.16/ext/phar/phar_internal.h
|
||||
@@ -427,6 +427,21 @@ static inline enum phar_fp_type phar_get
|
||||
return PHAR_G(cached_fp)[entry->phar->phar_pos].manifest[entry->manifest_pos].fp_type;
|
||||
}
|
||||
|
||||
+static inline time_t source_date_epoch_time(time_t *tloc)
|
||||
+{
|
||||
+ const char *sde;
|
||||
+ time_t ts;
|
||||
+
|
||||
+ tsrm_env_lock();
|
||||
+ sde = getenv("SOURCE_DATE_EPOCH");
|
||||
+ ts = (sde) ? strtoul(sde, NULL, 10) : time(0);
|
||||
+ tsrm_env_unlock();
|
||||
+ if (tloc) {
|
||||
+ *tloc = ts;
|
||||
+ }
|
||||
+ return ts;
|
||||
+}
|
||||
+
|
||||
static inline zend_off_t phar_get_fp_offset(phar_entry_info *entry)
|
||||
{
|
||||
if (!entry->is_persistent) {
|
||||
Index: php-8.2.16/ext/phar/stream.c
|
||||
===================================================================
|
||||
--- php-8.2.16.orig/ext/phar/stream.c
|
||||
+++ php-8.2.16/ext/phar/stream.c
|
||||
@@ -474,7 +474,7 @@ static int phar_stream_flush(php_stream
|
||||
phar_entry_data *data = (phar_entry_data *) stream->abstract;
|
||||
|
||||
if (data->internal_file->is_modified) {
|
||||
- data->internal_file->timestamp = time(0);
|
||||
+ data->internal_file->timestamp = source_date_epoch_time(0);
|
||||
ret = phar_flush(data->phar, 0, 0, 0, &error);
|
||||
if (error) {
|
||||
php_stream_wrapper_log_error(stream->wrapper, REPORT_ERRORS, "%s", error);
|
||||
Index: php-8.2.16/ext/phar/tar.c
|
||||
===================================================================
|
||||
--- php-8.2.16.orig/ext/phar/tar.c
|
||||
+++ php-8.2.16/ext/phar/tar.c
|
||||
@@ -972,7 +972,7 @@ int phar_tar_flush(phar_archive_data *ph
|
||||
char halt_stub[] = "__HALT_COMPILER();";
|
||||
|
||||
entry.flags = PHAR_ENT_PERM_DEF_FILE;
|
||||
- entry.timestamp = time(NULL);
|
||||
+ entry.timestamp = source_date_epoch_time(NULL);
|
||||
entry.is_modified = 1;
|
||||
entry.is_crc_checked = 1;
|
||||
entry.is_tar = 1;
|
||||
Index: php-8.2.16/ext/phar/util.c
|
||||
===================================================================
|
||||
--- php-8.2.16.orig/ext/phar/util.c
|
||||
+++ php-8.2.16/ext/phar/util.c
|
||||
@@ -574,7 +574,7 @@ phar_entry_data *phar_get_or_create_entr
|
||||
|
||||
phar_add_virtual_dirs(phar, path, path_len);
|
||||
etemp.is_modified = 1;
|
||||
- etemp.timestamp = time(0);
|
||||
+ etemp.timestamp = source_date_epoch_time(0);
|
||||
etemp.is_crc_checked = 1;
|
||||
etemp.phar = phar;
|
||||
etemp.filename = estrndup(path, path_len);
|
||||
Index: php-8.2.16/ext/phar/zip.c
|
||||
===================================================================
|
||||
--- php-8.2.16.orig/ext/phar/zip.c
|
||||
+++ php-8.2.16/ext/phar/zip.c
|
||||
@@ -1237,7 +1237,7 @@ int phar_zip_flush(phar_archive_data *ph
|
||||
|
||||
pass.error = &temperr;
|
||||
entry.flags = PHAR_ENT_PERM_DEF_FILE;
|
||||
- entry.timestamp = time(NULL);
|
||||
+ entry.timestamp = source_date_epoch_time(NULL);
|
||||
entry.is_modified = 1;
|
||||
entry.is_zip = 1;
|
||||
entry.phar = phar;
|
24
php-date-regenerate-lexers.patch
Normal file
24
php-date-regenerate-lexers.patch
Normal file
@ -0,0 +1,24 @@
|
||||
Index: php-8.2.7/ext/date/config0.m4
|
||||
===================================================================
|
||||
--- php-8.2.7.orig/ext/date/config0.m4
|
||||
+++ php-8.2.7/ext/date/config0.m4
|
||||
@@ -23,6 +23,8 @@ timelib_sources="lib/astro.c lib/dow.c l
|
||||
|
||||
PHP_NEW_EXTENSION(date, php_date.c $timelib_sources, no,, $PHP_DATE_CFLAGS)
|
||||
|
||||
+PHP_ADD_MAKEFILE_FRAGMENT()
|
||||
+
|
||||
PHP_ADD_BUILD_DIR([$ext_builddir/lib], 1)
|
||||
PHP_ADD_INCLUDE([$ext_builddir/lib])
|
||||
PHP_ADD_INCLUDE([$ext_srcdir/lib])
|
||||
Index: php-8.2.7/ext/date/Makefile.frag
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ php-8.2.7/ext/date/Makefile.frag
|
||||
@@ -0,0 +1,6 @@
|
||||
+$(srcdir)/lib/parse_date.c: $(srcdir)/lib/parse_date.re
|
||||
+ @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) -b --no-generation-date -o ext/date/lib/parse_date.c ext/date/lib/parse_date.re)
|
||||
+
|
||||
+$(srcdir)/lib/parse_iso_intervals.c: $(srcdir)/lib/parse_iso_intervals.re
|
||||
+ @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) -b --no-generation-date -o ext/date/lib/parse_iso_intervals.c ext/date/lib/parse_iso_intervals.re)
|
||||
+
|
2
php-fpm.tmpfiles.d
Normal file
2
php-fpm.tmpfiles.d
Normal file
@ -0,0 +1,2 @@
|
||||
# Type Path Mode UID GID Age Argument
|
||||
d /run/php-fpm 0711 root root - -
|
44
php-ini.patch
Normal file
44
php-ini.patch
Normal file
@ -0,0 +1,44 @@
|
||||
Index: php-8.2.7/php.ini-production
|
||||
===================================================================
|
||||
--- php-8.2.7.orig/php.ini-production
|
||||
+++ php-8.2.7/php.ini-production
|
||||
@@ -742,7 +742,7 @@ default_charset = "UTF-8"
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
; UNIX: "/path1:/path2"
|
||||
-;include_path = ".:/php/includes"
|
||||
+include_path = ".:/usr/share/php8:/usr/share/php/PEAR"
|
||||
;
|
||||
; Windows: "\path1;\path2"
|
||||
;include_path = ".;c:\php\includes"
|
||||
@@ -976,7 +976,7 @@ cli_server.color = On
|
||||
[Date]
|
||||
; Defines the default timezone used by the date functions
|
||||
; https://php.net/date.timezone
|
||||
-;date.timezone =
|
||||
+date.timezone = 'UTC'
|
||||
|
||||
; https://php.net/date.default-latitude
|
||||
;date.default_latitude = 31.7667
|
||||
@@ -1169,7 +1169,7 @@ mysqli.max_persistent = -1
|
||||
|
||||
; Allow or prevent persistent links.
|
||||
; https://php.net/mysqli.allow-persistent
|
||||
-mysqli.allow_persistent = On
|
||||
+mysqli.allow_persistent = Off
|
||||
|
||||
; Maximum number of links. -1 means no limit.
|
||||
; https://php.net/mysqli.max-links
|
||||
Index: php-8.2.7/sapi/fpm/www.conf.in
|
||||
===================================================================
|
||||
--- php-8.2.7.orig/sapi/fpm/www.conf.in
|
||||
+++ php-8.2.7/sapi/fpm/www.conf.in
|
||||
@@ -27,6 +27,8 @@
|
||||
; If the group is not set, the user's group is used.
|
||||
user = @php_fpm_user@
|
||||
group = @php_fpm_group@
|
||||
+; session folder has to be writable by user:group
|
||||
+php_value[session.save_path] = /var/lib/php8/sessions
|
||||
|
||||
; The address on which to accept FastCGI requests.
|
||||
; Valid syntaxes are:
|
17
php-php-config.patch
Normal file
17
php-php-config.patch
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
scripts/php-config.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: php-8.0.0/scripts/php-config.in
|
||||
===================================================================
|
||||
--- php-8.0.0.orig/scripts/php-config.in 2020-11-24 18:04:03.000000000 +0100
|
||||
+++ php-8.0.0/scripts/php-config.in 2021-01-07 10:13:28.462563114 +0100
|
||||
@@ -6,7 +6,7 @@ datarootdir="@datarootdir@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
version="@PHP_VERSION@"
|
||||
vernum="@PHP_VERSION_ID@"
|
||||
-include_dir="@includedir@/php"
|
||||
+include_dir="@includedir@/php8"
|
||||
includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib"
|
||||
ldflags="@PHP_LDFLAGS@"
|
||||
libs="@EXTRA_LIBS@"
|
35
php-phpize.patch
Normal file
35
php-phpize.patch
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
scripts/Makefile.frag | 4 ++--
|
||||
scripts/phpize.in | 4 ++--
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: php-8.0.0/scripts/Makefile.frag
|
||||
===================================================================
|
||||
--- php-8.0.0.orig/scripts/Makefile.frag 2020-11-24 18:04:03.000000000 +0100
|
||||
+++ php-8.0.0/scripts/Makefile.frag 2021-01-07 10:13:16.914490379 +0100
|
||||
@@ -2,8 +2,8 @@
|
||||
# Build environment install
|
||||
#
|
||||
|
||||
-phpincludedir = $(includedir)/php
|
||||
-phpbuilddir = $(libdir)/build
|
||||
+phpincludedir = $(includedir)/php8
|
||||
+phpbuilddir = $(datadir)/build
|
||||
|
||||
BUILD_FILES = \
|
||||
scripts/phpize.m4 \
|
||||
Index: php-8.0.0/scripts/phpize.in
|
||||
===================================================================
|
||||
--- php-8.0.0.orig/scripts/phpize.in 2020-11-24 18:04:03.000000000 +0100
|
||||
+++ php-8.0.0/scripts/phpize.in 2021-01-07 10:13:16.914490379 +0100
|
||||
@@ -4,8 +4,8 @@
|
||||
prefix='@prefix@'
|
||||
datarootdir='@datarootdir@'
|
||||
exec_prefix="`eval echo @exec_prefix@`"
|
||||
-phpdir="`eval echo @libdir@`/build"
|
||||
-includedir="`eval echo @includedir@`/php"
|
||||
+phpdir="`eval echo @datadir@`/build"
|
||||
+includedir="`eval echo @includedir@`/php8"
|
||||
builddir="`pwd`"
|
||||
SED="@SED@"
|
||||
|
13
php-sort-filelist-phar.patch
Normal file
13
php-sort-filelist-phar.patch
Normal file
@ -0,0 +1,13 @@
|
||||
Index: php-8.2.8/ext/phar/Makefile.frag
|
||||
===================================================================
|
||||
--- php-8.2.8.orig/ext/phar/Makefile.frag
|
||||
+++ php-8.2.8/ext/phar/Makefile.frag
|
||||
@@ -46,7 +46,7 @@ $(builddir)/phar.phar: $(builddir)/phar.
|
||||
if [ "$(TEST_PHP_EXECUTABLE_RES)" != 1 ]; then \
|
||||
rm -f $(builddir)/phar.phar; \
|
||||
rm -f $(srcdir)/phar.phar; \
|
||||
- $(PHP_PHARCMD_EXECUTABLE) $(PHP_PHARCMD_SETTINGS) $(builddir)/phar.php pack -f $(builddir)/phar.phar -a pharcommand -c auto -x \\.svn -p 0 -s $(srcdir)/phar/phar.php -h sha1 -b "$(PHP_PHARCMD_BANG)" $(srcdir)/phar/; \
|
||||
+ $(PHP_PHARCMD_EXECUTABLE) $(PHP_PHARCMD_SETTINGS) $(builddir)/phar.php pack -f $(builddir)/phar.phar -a pharcommand -c auto -x \\.svn -p 0 -s $(srcdir)/phar/phar.php -h sha1 -b "$(PHP_PHARCMD_BANG)" -l 9 $(srcdir)/phar/*.inc; \
|
||||
chmod +x $(builddir)/phar.phar; \
|
||||
else \
|
||||
echo "Skipping phar.phar generating during cross compilation"; \
|
16
php-systemd-unit.patch
Normal file
16
php-systemd-unit.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: php-7.4.0RC6/sapi/fpm/php-fpm.service.in
|
||||
===================================================================
|
||||
--- php-7.4.0RC6.orig/sapi/fpm/php-fpm.service.in 2019-11-19 11:33:35.195960137 +0100
|
||||
+++ php-7.4.0RC6/sapi/fpm/php-fpm.service.in 2019-11-19 11:35:45.588688471 +0100
|
||||
@@ -5,10 +5,10 @@
|
||||
[Unit]
|
||||
Description=The PHP FastCGI Process Manager
|
||||
After=network.target
|
||||
+Before=apache2.service nginx.service lighttpd.service
|
||||
|
||||
[Service]
|
||||
Type=@php_fpm_systemd@
|
||||
-PIDFile=@EXPANDED_LOCALSTATEDIR@/run/php-fpm.pid
|
||||
ExecStart=@EXPANDED_SBINDIR@/php-fpm --nodaemonize --fpm-config @EXPANDED_SYSCONFDIR@/php-fpm.conf
|
||||
ExecReload=/bin/kill -USR2 $MAINPID
|
||||
|
721
php-systzdata-v23.patch
Normal file
721
php-systzdata-v23.patch
Normal file
@ -0,0 +1,721 @@
|
||||
# License: MIT
|
||||
# http://opensource.org/licenses/MIT
|
||||
|
||||
Add support for use of the system timezone database, rather
|
||||
than embedding a copy. Discussed upstream but was not desired.
|
||||
|
||||
History:
|
||||
r23: fix possible buffer overflow
|
||||
r22: retrieve tzdata version from /usr/share/zoneinfo/tzdata.zi
|
||||
r21: adapt for timelib 2021.03 (in 8.1.0)
|
||||
r20: adapt for timelib 2020.03 (in 8.0.10RC1)
|
||||
r19: adapt for timelib 2020.02 (in 8.0.0beta2)
|
||||
r18: adapt for autotool change in 7.3.3RC1
|
||||
r17: adapt for timelib 2018.01 (in 7.3.2RC1)
|
||||
r16: adapt for timelib 2017.06 (in 7.2.3RC1)
|
||||
r15: adapt for timelib 2017.05beta7 (in 7.2.0RC1)
|
||||
r14: improve check for valid tz file
|
||||
r13: adapt for upstream changes to use PHP allocator
|
||||
r12: adapt for upstream changes for new zic
|
||||
r11: use canonical names to avoid more case sensitivity issues
|
||||
round lat/long from zone.tab towards zero per builtin db
|
||||
r10: make timezone case insensitive
|
||||
r9: fix another compile error without --with-system-tzdata configured (Michael Heimpold)
|
||||
r8: fix compile error without --with-system-tzdata configured
|
||||
r7: improve check for valid timezone id to exclude directories
|
||||
r6: fix fd leak in r5, fix country code/BC flag use in
|
||||
timezone_identifiers_list() using system db,
|
||||
fix use of PECL timezonedb to override system db,
|
||||
r5: reverts addition of "System/Localtime" fake tzname.
|
||||
updated for 5.3.0, parses zone.tab to pick up mapping between
|
||||
timezone name, country code and long/lat coords
|
||||
r4: added "System/Localtime" tzname which uses /etc/localtime
|
||||
r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert)
|
||||
r2: add filesystem trawl to set up name alias index
|
||||
r1: initial revision
|
||||
|
||||
Index: php-8.2.7/ext/date/config0.m4
|
||||
===================================================================
|
||||
--- php-8.2.7.orig/ext/date/config0.m4
|
||||
+++ php-8.2.7/ext/date/config0.m4
|
||||
@@ -4,6 +4,19 @@ AC_CHECK_HEADERS([io.h])
|
||||
dnl Check for strtoll, atoll
|
||||
AC_CHECK_FUNCS(strtoll atoll)
|
||||
|
||||
+PHP_ARG_WITH(system-tzdata, for use of system timezone data,
|
||||
+[ --with-system-tzdata[=DIR] to specify use of system timezone data],
|
||||
+no, no)
|
||||
+
|
||||
+if test "$PHP_SYSTEM_TZDATA" != "no"; then
|
||||
+ AC_DEFINE(HAVE_SYSTEM_TZDATA, 1, [Define if system timezone data is used])
|
||||
+
|
||||
+ if test "$PHP_SYSTEM_TZDATA" != "yes"; then
|
||||
+ AC_DEFINE_UNQUOTED(HAVE_SYSTEM_TZDATA_PREFIX, "$PHP_SYSTEM_TZDATA",
|
||||
+ [Define for location of system timezone data])
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
PHP_DATE_CFLAGS="-Wno-implicit-fallthrough -I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1"
|
||||
timelib_sources="lib/astro.c lib/dow.c lib/parse_date.c lib/parse_tz.c lib/parse_posix.c
|
||||
lib/timelib.c lib/tm2unixtime.c lib/unixtime2tm.c lib/parse_iso_intervals.c lib/interval.c"
|
||||
Index: php-8.2.7/ext/date/lib/parse_tz.c
|
||||
===================================================================
|
||||
--- php-8.2.7.orig/ext/date/lib/parse_tz.c
|
||||
+++ php-8.2.7/ext/date/lib/parse_tz.c
|
||||
@@ -26,9 +26,22 @@
|
||||
#include "timelib.h"
|
||||
#include "timelib_private.h"
|
||||
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+#include <sys/mman.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <limits.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#include "php_scandir.h"
|
||||
+
|
||||
+#else
|
||||
#define TIMELIB_SUPPORTS_V2DATA
|
||||
#define TIMELIB_SUPPORT_SLIM_FILE
|
||||
#include "timezonedb.h"
|
||||
+#endif
|
||||
+
|
||||
+#include <ctype.h>
|
||||
|
||||
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
|
||||
# if defined(__LITTLE_ENDIAN__)
|
||||
@@ -95,6 +108,11 @@ static int read_php_preamble(const unsig
|
||||
{
|
||||
uint32_t version;
|
||||
|
||||
+ if (memcmp(*tzf, "TZif", 4) == 0) {
|
||||
+ *tzf += 20;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/* read ID */
|
||||
version = (*tzf)[3] - '0';
|
||||
*tzf += 4;
|
||||
@@ -577,7 +595,467 @@ void timelib_dump_tzinfo(timelib_tzinfo
|
||||
}
|
||||
}
|
||||
|
||||
-static int seek_to_tz_position(const unsigned char **tzf, const char *timezone, const timelib_tzdb *tzdb)
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+
|
||||
+#ifdef HAVE_SYSTEM_TZDATA_PREFIX
|
||||
+#define ZONEINFO_PREFIX HAVE_SYSTEM_TZDATA_PREFIX
|
||||
+#else
|
||||
+#define ZONEINFO_PREFIX "/usr/share/zoneinfo"
|
||||
+#endif
|
||||
+
|
||||
+/* System timezone database pointer. */
|
||||
+static const timelib_tzdb *timezonedb_system;
|
||||
+
|
||||
+/* Hash table entry for the cache of the zone.tab mapping table. */
|
||||
+struct location_info {
|
||||
+ char code[2];
|
||||
+ double latitude, longitude;
|
||||
+ char name[64];
|
||||
+ char *comment;
|
||||
+ struct location_info *next;
|
||||
+};
|
||||
+
|
||||
+/* Cache of zone.tab. */
|
||||
+static struct location_info **system_location_table;
|
||||
+
|
||||
+/* Size of the zone.tab hash table; a random-ish prime big enough to
|
||||
+ * prevent too many collisions. */
|
||||
+#define LOCINFO_HASH_SIZE (1021)
|
||||
+
|
||||
+/* Compute a case insensitive hash of str */
|
||||
+static uint32_t tz_hash(const char *str)
|
||||
+{
|
||||
+ const unsigned char *p = (const unsigned char *)str;
|
||||
+ uint32_t hash = 5381;
|
||||
+ int c;
|
||||
+
|
||||
+ while ((c = tolower(*p++)) != '\0') {
|
||||
+ hash = (hash << 5) ^ hash ^ c;
|
||||
+ }
|
||||
+
|
||||
+ return hash % LOCINFO_HASH_SIZE;
|
||||
+}
|
||||
+
|
||||
+/* Parse an ISO-6709 date as used in zone.tab. Returns end of the
|
||||
+ * parsed string on success, or NULL on parse error. On success,
|
||||
+ * writes the parsed number to *result. */
|
||||
+static char *parse_iso6709(char *p, double *result)
|
||||
+{
|
||||
+ double v, sign;
|
||||
+ char *pend;
|
||||
+ size_t len;
|
||||
+
|
||||
+ if (*p == '+')
|
||||
+ sign = 1.0;
|
||||
+ else if (*p == '-')
|
||||
+ sign = -1.0;
|
||||
+ else
|
||||
+ return NULL;
|
||||
+
|
||||
+ p++;
|
||||
+ for (pend = p; *pend >= '0' && *pend <= '9'; pend++)
|
||||
+ ;;
|
||||
+
|
||||
+ /* Annoying encoding used by zone.tab has no decimal point, so use
|
||||
+ * the length to determine the format:
|
||||
+ *
|
||||
+ * 4 = DDMM
|
||||
+ * 5 = DDDMM
|
||||
+ * 6 = DDMMSS
|
||||
+ * 7 = DDDMMSS
|
||||
+ */
|
||||
+ len = pend - p;
|
||||
+ if (len < 4 || len > 7) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ /* p => [D]DD */
|
||||
+ v = (p[0] - '0') * 10.0 + (p[1] - '0');
|
||||
+ p += 2;
|
||||
+ if (len == 5 || len == 7)
|
||||
+ v = v * 10.0 + (*p++ - '0');
|
||||
+ /* p => MM[SS] */
|
||||
+ v += (10.0 * (p[0] - '0')
|
||||
+ + p[1] - '0') / 60.0;
|
||||
+ p += 2;
|
||||
+ /* p => [SS] */
|
||||
+ if (len > 5) {
|
||||
+ v += (10.0 * (p[0] - '0')
|
||||
+ + p[1] - '0') / 3600.0;
|
||||
+ p += 2;
|
||||
+ }
|
||||
+
|
||||
+ /* Round to five decimal place, not because it's a good idea,
|
||||
+ * but, because the builtin data uses rounded data, so, match
|
||||
+ * that. */
|
||||
+ *result = trunc(v * sign * 100000.0) / 100000.0;
|
||||
+
|
||||
+ return p;
|
||||
+}
|
||||
+
|
||||
+/* This function parses the zone.tab file to build up the mapping of
|
||||
+ * timezone to country code and geographic location, and returns a
|
||||
+ * hash table. The hash table is indexed by the function:
|
||||
+ *
|
||||
+ * tz_hash(timezone-name)
|
||||
+ */
|
||||
+static struct location_info **create_location_table(void)
|
||||
+{
|
||||
+ struct location_info **li, *i;
|
||||
+ char zone_tab[PATH_MAX];
|
||||
+ char line[512];
|
||||
+ FILE *fp;
|
||||
+
|
||||
+ strncpy(zone_tab, ZONEINFO_PREFIX "/zone.tab", sizeof zone_tab);
|
||||
+
|
||||
+ fp = fopen(zone_tab, "r");
|
||||
+ if (!fp) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ li = calloc(LOCINFO_HASH_SIZE, sizeof *li);
|
||||
+
|
||||
+ while (fgets(line, sizeof line, fp)) {
|
||||
+ char *p = line, *code, *name, *comment;
|
||||
+ uint32_t hash;
|
||||
+ double latitude, longitude;
|
||||
+
|
||||
+ while (isspace(*p))
|
||||
+ p++;
|
||||
+
|
||||
+ if (*p == '#' || *p == '\0' || *p == '\n')
|
||||
+ continue;
|
||||
+
|
||||
+ if (!isalpha(p[0]) || !isalpha(p[1]) || p[2] != '\t')
|
||||
+ continue;
|
||||
+
|
||||
+ /* code => AA */
|
||||
+ code = p;
|
||||
+ p[2] = 0;
|
||||
+ p += 3;
|
||||
+
|
||||
+ /* coords => [+-][D]DDMM[SS][+-][D]DDMM[SS] */
|
||||
+ p = parse_iso6709(p, &latitude);
|
||||
+ if (!p) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ p = parse_iso6709(p, &longitude);
|
||||
+ if (!p) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (!p || *p != '\t') {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ /* name = string */
|
||||
+ name = ++p;
|
||||
+ while (*p != '\t' && *p && *p != '\n')
|
||||
+ p++;
|
||||
+
|
||||
+ *p++ = '\0';
|
||||
+
|
||||
+ /* comment = string */
|
||||
+ comment = p;
|
||||
+ while (*p != '\t' && *p && *p != '\n')
|
||||
+ p++;
|
||||
+
|
||||
+ if (*p == '\n' || *p == '\t')
|
||||
+ *p = '\0';
|
||||
+
|
||||
+ hash = tz_hash(name);
|
||||
+ i = malloc(sizeof *i);
|
||||
+ memcpy(i->code, code, 2);
|
||||
+ strncpy(i->name, name, sizeof i->name);
|
||||
+ i->comment = strdup(comment);
|
||||
+ i->longitude = longitude;
|
||||
+ i->latitude = latitude;
|
||||
+ i->next = li[hash];
|
||||
+ li[hash] = i;
|
||||
+ /* printf("%s [%u, %f, %f]\n", name, hash, latitude, longitude); */
|
||||
+ }
|
||||
+
|
||||
+ fclose(fp);
|
||||
+
|
||||
+ return li;
|
||||
+}
|
||||
+
|
||||
+/* Return location info from hash table, using given timezone name.
|
||||
+ * Returns NULL if the name could not be found. */
|
||||
+const struct location_info *find_zone_info(struct location_info **li,
|
||||
+ const char *name)
|
||||
+{
|
||||
+ uint32_t hash = tz_hash(name);
|
||||
+ const struct location_info *l;
|
||||
+
|
||||
+ if (!li) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ for (l = li[hash]; l; l = l->next) {
|
||||
+ if (timelib_strcasecmp(l->name, name) == 0)
|
||||
+ return l;
|
||||
+ }
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+/* Filter out some non-tzdata files and the posix/right databases, if
|
||||
+ * present. */
|
||||
+static int index_filter(const struct dirent *ent)
|
||||
+{
|
||||
+ return strcmp(ent->d_name, ".") != 0
|
||||
+ && strcmp(ent->d_name, "..") != 0
|
||||
+ && strcmp(ent->d_name, "posix") != 0
|
||||
+ && strcmp(ent->d_name, "posixrules") != 0
|
||||
+ && strcmp(ent->d_name, "right") != 0
|
||||
+ && strstr(ent->d_name, ".list") == NULL
|
||||
+ && strstr(ent->d_name, ".tab") == NULL;
|
||||
+}
|
||||
+
|
||||
+static int sysdbcmp(const void *first, const void *second)
|
||||
+{
|
||||
+ const timelib_tzdb_index_entry *alpha = first, *beta = second;
|
||||
+
|
||||
+ return timelib_strcasecmp(alpha->id, beta->id);
|
||||
+}
|
||||
+
|
||||
+/* Retrieve tzdata version. */
|
||||
+static void retrieve_zone_version(timelib_tzdb *db)
|
||||
+{
|
||||
+ static char buf[30];
|
||||
+ char path[PATH_MAX];
|
||||
+ FILE *fp;
|
||||
+
|
||||
+ strncpy(path, ZONEINFO_PREFIX "/tzdata.zi", sizeof(path));
|
||||
+
|
||||
+ fp = fopen(path, "r");
|
||||
+ if (fp) {
|
||||
+ if (fgets(buf, sizeof(buf), fp)) {
|
||||
+ if (!memcmp(buf, "# version ", 10) &&
|
||||
+ isdigit(buf[10]) &&
|
||||
+ isdigit(buf[11]) &&
|
||||
+ isdigit(buf[12]) &&
|
||||
+ isdigit(buf[13]) &&
|
||||
+ islower(buf[14])) {
|
||||
+ if (buf[14] >= 't') { /* 2022t = 2022.20 */
|
||||
+ buf[17] = 0;
|
||||
+ buf[16] = buf[14] - 't' + '0';
|
||||
+ buf[15] = '2';
|
||||
+ } else if (buf[14] >= 'j') { /* 2022j = 2022.10 */
|
||||
+ buf[17] = 0;
|
||||
+ buf[16] = buf[14] - 'j' + '0';
|
||||
+ buf[15] = '1';
|
||||
+ } else { /* 2022a = 2022.1 */
|
||||
+ buf[16] = 0;
|
||||
+ buf[15] = buf[14] - 'a' + '1';
|
||||
+ }
|
||||
+ buf[14] = '.';
|
||||
+ db->version = buf+10;
|
||||
+ }
|
||||
+ }
|
||||
+ fclose(fp);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/* Create the zone identifier index by trawling the filesystem. */
|
||||
+static void create_zone_index(timelib_tzdb *db)
|
||||
+{
|
||||
+ size_t dirstack_size, dirstack_top;
|
||||
+ size_t index_size, index_next;
|
||||
+ timelib_tzdb_index_entry *db_index;
|
||||
+ char **dirstack;
|
||||
+
|
||||
+ /* LIFO stack to hold directory entries to scan; each slot is a
|
||||
+ * directory name relative to the zoneinfo prefix. */
|
||||
+ dirstack_size = 32;
|
||||
+ dirstack = malloc(dirstack_size * sizeof *dirstack);
|
||||
+ dirstack_top = 1;
|
||||
+ dirstack[0] = strdup("");
|
||||
+
|
||||
+ /* Index array. */
|
||||
+ index_size = 64;
|
||||
+ db_index = malloc(index_size * sizeof *db_index);
|
||||
+ index_next = 0;
|
||||
+
|
||||
+ do {
|
||||
+ struct dirent **ents;
|
||||
+ char name[PATH_MAX], *top;
|
||||
+ int count;
|
||||
+
|
||||
+ /* Pop the top stack entry, and iterate through its contents. */
|
||||
+ top = dirstack[--dirstack_top];
|
||||
+ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s", top);
|
||||
+
|
||||
+ count = php_scandir(name, &ents, index_filter, php_alphasort);
|
||||
+
|
||||
+ while (count > 0) {
|
||||
+ struct stat st;
|
||||
+ const char *leaf = ents[count - 1]->d_name;
|
||||
+
|
||||
+ snprintf(name, sizeof name, ZONEINFO_PREFIX "/%s/%s",
|
||||
+ top, leaf);
|
||||
+
|
||||
+ if (strlen(name) && stat(name, &st) == 0) {
|
||||
+ /* Name, relative to the zoneinfo prefix. */
|
||||
+ const char *root = top;
|
||||
+
|
||||
+ if (root[0] == '/') root++;
|
||||
+
|
||||
+ snprintf(name, sizeof name, "%s%s%s", root,
|
||||
+ *root ? "/": "", leaf);
|
||||
+
|
||||
+ if (S_ISDIR(st.st_mode)) {
|
||||
+ if (dirstack_top == dirstack_size) {
|
||||
+ dirstack_size *= 2;
|
||||
+ dirstack = realloc(dirstack,
|
||||
+ dirstack_size * sizeof *dirstack);
|
||||
+ }
|
||||
+ dirstack[dirstack_top++] = strdup(name);
|
||||
+ }
|
||||
+ else {
|
||||
+ if (index_next == index_size) {
|
||||
+ index_size *= 2;
|
||||
+ db_index = realloc(db_index,
|
||||
+ index_size * sizeof *db_index);
|
||||
+ }
|
||||
+
|
||||
+ db_index[index_next++].id = strdup(name);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ free(ents[--count]);
|
||||
+ }
|
||||
+
|
||||
+ if (count != -1) free(ents);
|
||||
+ free(top);
|
||||
+ } while (dirstack_top);
|
||||
+
|
||||
+ qsort(db_index, index_next, sizeof *db_index, sysdbcmp);
|
||||
+
|
||||
+ db->index = db_index;
|
||||
+ db->index_size = index_next;
|
||||
+
|
||||
+ free(dirstack);
|
||||
+}
|
||||
+
|
||||
+#define FAKE_HEADER "1234\0??\1??"
|
||||
+#define FAKE_UTC_POS (7 - 4)
|
||||
+
|
||||
+/* Create a fake data segment for database 'sysdb'. */
|
||||
+static void fake_data_segment(timelib_tzdb *sysdb,
|
||||
+ struct location_info **info)
|
||||
+{
|
||||
+ size_t n;
|
||||
+ char *data, *p;
|
||||
+
|
||||
+ data = malloc(3 * sysdb->index_size + sizeof(FAKE_HEADER) - 1);
|
||||
+
|
||||
+ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1);
|
||||
+
|
||||
+ for (n = 0; n < sysdb->index_size; n++) {
|
||||
+ const struct location_info *li;
|
||||
+ timelib_tzdb_index_entry *ent;
|
||||
+
|
||||
+ ent = (timelib_tzdb_index_entry *)&sysdb->index[n];
|
||||
+
|
||||
+ /* Lookup the timezone name in the hash table. */
|
||||
+ if (strcmp(ent->id, "UTC") == 0) {
|
||||
+ ent->pos = FAKE_UTC_POS;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ li = find_zone_info(info, ent->id);
|
||||
+ if (li) {
|
||||
+ /* If found, append the BC byte and the
|
||||
+ * country code; set the position for this
|
||||
+ * section of timezone data. */
|
||||
+ ent->pos = (p - data) - 4;
|
||||
+ *p++ = '\1';
|
||||
+ *p++ = li->code[0];
|
||||
+ *p++ = li->code[1];
|
||||
+ }
|
||||
+ else {
|
||||
+ /* If not found, the timezone data can
|
||||
+ * point at the header. */
|
||||
+ ent->pos = 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ sysdb->data = (unsigned char *)data;
|
||||
+}
|
||||
+
|
||||
+/* Returns true if the passed-in stat structure describes a
|
||||
+ * probably-valid timezone file. */
|
||||
+static int is_valid_tzfile(const struct stat *st, int fd)
|
||||
+{
|
||||
+ if (fd) {
|
||||
+ char buf[20];
|
||||
+ if (read(fd, buf, 20)!=20) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ lseek(fd, SEEK_SET, 0);
|
||||
+ if (memcmp(buf, "TZif", 4)) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+ return S_ISREG(st->st_mode) && st->st_size > 20;
|
||||
+}
|
||||
+
|
||||
+/* To allow timezone names to be used case-insensitively, find the
|
||||
+ * canonical name for this timezone, if possible. */
|
||||
+static const char *canonical_tzname(const char *timezone)
|
||||
+{
|
||||
+ if (timezonedb_system) {
|
||||
+ timelib_tzdb_index_entry *ent, lookup;
|
||||
+
|
||||
+ lookup.id = (char *)timezone;
|
||||
+
|
||||
+ ent = bsearch(&lookup, timezonedb_system->index,
|
||||
+ timezonedb_system->index_size, sizeof lookup,
|
||||
+ sysdbcmp);
|
||||
+ if (ent) {
|
||||
+ return ent->id;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return timezone;
|
||||
+}
|
||||
+
|
||||
+/* Return the mmap()ed tzfile if found, else NULL. On success, the
|
||||
+ * length of the mapped data is placed in *length. */
|
||||
+static char *map_tzfile(const char *timezone, size_t *length)
|
||||
+{
|
||||
+ char fname[PATH_MAX];
|
||||
+ struct stat st;
|
||||
+ char *p;
|
||||
+ int fd;
|
||||
+
|
||||
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", canonical_tzname(timezone));
|
||||
+
|
||||
+ fd = open(fname, O_RDONLY);
|
||||
+ if (fd == -1) {
|
||||
+ return NULL;
|
||||
+ } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st, fd)) {
|
||||
+ close(fd);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ *length = st.st_size;
|
||||
+ p = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
|
||||
+ close(fd);
|
||||
+
|
||||
+ return p != MAP_FAILED ? p : NULL;
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+static int inmem_seek_to_tz_position(const unsigned char **tzf, const char *timezone, const timelib_tzdb *tzdb)
|
||||
{
|
||||
int left = 0, right = tzdb->index_size - 1;
|
||||
|
||||
@@ -603,9 +1081,49 @@ static int seek_to_tz_position(const uns
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int seek_to_tz_position(const unsigned char **tzf, const char *timezone,
|
||||
+ char **map, size_t *maplen,
|
||||
+ const timelib_tzdb *tzdb)
|
||||
+{
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+ if (tzdb == timezonedb_system) {
|
||||
+ char *orig;
|
||||
+
|
||||
+ orig = map_tzfile(timezone, maplen);
|
||||
+ if (orig == NULL) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ (*tzf) = (unsigned char *)orig;
|
||||
+ *map = orig;
|
||||
+ return 1;
|
||||
+ }
|
||||
+ else
|
||||
+#endif
|
||||
+ {
|
||||
+ return inmem_seek_to_tz_position(tzf, timezone, tzdb);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
const timelib_tzdb *timelib_builtin_db(void)
|
||||
{
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+ if (timezonedb_system == NULL) {
|
||||
+ timelib_tzdb *tmp = malloc(sizeof *tmp);
|
||||
+
|
||||
+ tmp->version = "0.system";
|
||||
+ tmp->data = NULL;
|
||||
+ create_zone_index(tmp);
|
||||
+ retrieve_zone_version(tmp);
|
||||
+ system_location_table = create_location_table();
|
||||
+ fake_data_segment(tmp, system_location_table);
|
||||
+ timezonedb_system = tmp;
|
||||
+ }
|
||||
+
|
||||
+ return timezonedb_system;
|
||||
+#else
|
||||
return &timezonedb_builtin;
|
||||
+#endif
|
||||
}
|
||||
|
||||
const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count)
|
||||
@@ -617,7 +1135,30 @@ const timelib_tzdb_index_entry *timelib_
|
||||
int timelib_timezone_id_is_valid(const char *timezone, const timelib_tzdb *tzdb)
|
||||
{
|
||||
const unsigned char *tzf;
|
||||
- return (seek_to_tz_position(&tzf, timezone, tzdb));
|
||||
+
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+ if (tzdb == timezonedb_system) {
|
||||
+ char fname[PATH_MAX];
|
||||
+ struct stat st;
|
||||
+
|
||||
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ if (system_location_table) {
|
||||
+ if (find_zone_info(system_location_table, timezone) != NULL) {
|
||||
+ /* found in cache */
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", canonical_tzname(timezone));
|
||||
+
|
||||
+ return stat(fname, &st) == 0 && is_valid_tzfile(&st, 0);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ return (inmem_seek_to_tz_position(&tzf, timezone, tzdb));
|
||||
}
|
||||
|
||||
static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
|
||||
@@ -662,6 +1203,8 @@ static timelib_tzinfo* timelib_tzinfo_ct
|
||||
timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code)
|
||||
{
|
||||
const unsigned char *tzf;
|
||||
+ char *memmap = NULL;
|
||||
+ size_t maplen;
|
||||
timelib_tzinfo *tmp;
|
||||
int version;
|
||||
int transitions_result, types_result;
|
||||
@@ -669,7 +1212,7 @@ timelib_tzinfo *timelib_parse_tzfile(con
|
||||
|
||||
*error_code = TIMELIB_ERROR_NO_ERROR;
|
||||
|
||||
- if (seek_to_tz_position(&tzf, timezone, tzdb)) {
|
||||
+ if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
|
||||
tmp = timelib_tzinfo_ctor(timezone);
|
||||
|
||||
version = read_preamble(&tzf, tmp, &type);
|
||||
@@ -712,11 +1255,36 @@ timelib_tzinfo *timelib_parse_tzfile(con
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+ if (memmap) {
|
||||
+ const struct location_info *li;
|
||||
+
|
||||
+ /* TZif-style - grok the location info from the system database,
|
||||
+ * if possible. */
|
||||
+
|
||||
+ if ((li = find_zone_info(system_location_table, timezone)) != NULL) {
|
||||
+ tmp->location.comments = timelib_strdup(li->comment);
|
||||
+ strncpy(tmp->location.country_code, li->code, 2);
|
||||
+ tmp->location.longitude = li->longitude;
|
||||
+ tmp->location.latitude = li->latitude;
|
||||
+ tmp->bc = 1;
|
||||
+ }
|
||||
+ else {
|
||||
+ set_default_location_and_comments(&tzf, tmp);
|
||||
+ }
|
||||
+
|
||||
+ /* Now done with the mmap segment - discard it. */
|
||||
+ munmap(memmap, maplen);
|
||||
+ } else {
|
||||
+#endif
|
||||
if (type == TIMELIB_TZINFO_PHP) {
|
||||
read_location(&tzf, tmp);
|
||||
} else {
|
||||
set_default_location_and_comments(&tzf, tmp);
|
||||
}
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+ }
|
||||
+#endif
|
||||
} else {
|
||||
*error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
|
||||
tmp = NULL;
|
||||
Index: php-8.2.7/ext/date/php_date.c
|
||||
===================================================================
|
||||
--- php-8.2.7.orig/ext/date/php_date.c
|
||||
+++ php-8.2.7/ext/date/php_date.c
|
||||
@@ -472,7 +472,11 @@ PHP_MINFO_FUNCTION(date)
|
||||
php_info_print_table_row(2, "date/time support", "enabled");
|
||||
php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION);
|
||||
php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version);
|
||||
+#ifdef HAVE_SYSTEM_TZDATA
|
||||
+ php_info_print_table_row(2, "Timezone Database", "system");
|
||||
+#else
|
||||
php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal");
|
||||
+#endif
|
||||
php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb));
|
||||
php_info_print_table_end();
|
||||
|
15
php8-fpm.conf
Normal file
15
php8-fpm.conf
Normal file
@ -0,0 +1,15 @@
|
||||
<IfModule mod_proxy_fcgi.c>
|
||||
<FilesMatch "\.ph(p[34578]?|tml)$">
|
||||
SetHandler "proxy:fcgi://127.0.0.1:9000"
|
||||
</FilesMatch>
|
||||
|
||||
<FilesMatch "\.php[34578]?s$">
|
||||
SetHandler "proxy:fcgi://127.0.0.1:9000"
|
||||
</FilesMatch>
|
||||
|
||||
DirectoryIndex index.php4
|
||||
DirectoryIndex index.php5
|
||||
DirectoryIndex index.php7
|
||||
DirectoryIndex index.php8
|
||||
DirectoryIndex index.php
|
||||
</IfModule>
|
5342
php8.changes
Normal file
5342
php8.changes
Normal file
File diff suppressed because it is too large
Load Diff
249
php8.keyring
Normal file
249
php8.keyring
Normal file
@ -0,0 +1,249 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
wpxdIIyaoaS8NSuPIrV1g4SUXYs=
|
||||
=fB6k
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
iU/+
|
||||
=pJ+M
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
bItY
|
||||
=z8k6
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBGBlop0BEADECekUKq62YGCekiH8yT7At8xXdNAv1MS0KGmogEBxD5xEII5w
|
||||
D6pL7KUhOzKZsgKIW1M11ZwzvsnMc5yJC89MmI7P5talQeoUzMPz5Q9dBC6AOpt6
|
||||
Jv9hNb0ECO/FN8N3rwYFZRi8wSF1ii1+2bAUpuMaD5g/ZporDLDNMYakM1bhptCP
|
||||
NYLypCJVhzwfk6lFgabw8JiHQkbhorO/NdDgSmjJk0P63YYNU2GSJ2T343rlvqGf
|
||||
C6rOMN3H5srg22ykDfG9UHdnfZScJLnSOioSMh+7lNBdRnhyIIvYWSWWXJ5Q4qrX
|
||||
B2eWGBFBxMw+qzwC9C6FBaUunT+AxXIfEeKAaVvF044Ngc38GUQr9SLiIHeh4RFH
|
||||
Llo+UBjIuobghf9llQxKBrPyt9isoftSYODjjqbiz9P2Kr7ETgDG3WPNMaaUdsjD
|
||||
LaUyT4bOWgspGfH3xyhLIeFRr4vsRSMLjhhJal6ACxT2rPDfg+Y15yUEdf9s3pHo
|
||||
vWIjOow16bNEiAoQS+rxtOXLmul+Svu9WBx5Q6FLm2/rY4iB8hWLcxHtTzzIi5el
|
||||
7QHapZS6lEL8vjHB4HajTiFPhcW1g1ow7WeYZQ3WfrCJc93rBsJf80EDHUXU7I3D
|
||||
bhJTnZdqTJi5QPAr4STPiJB1bCB6aJy7QajdCG68PkodZF9LBHI5H6w0iQARAQAB
|
||||
tChQYXRyaWNrIEFsbGFlcnQgPHBhdHJpY2thbGxhZXJ0QHBocC5uZXQ+iQJlBBMB
|
||||
CAA4FiEE8faSI4+8FmblpczUGZ+d/vb/uv0FAmBlop0CGwMFCwkIBwIGFQoJCAsC
|
||||
BBYCAwECHgECF4AAIQkQGZ+d/vb/uv0WIQTx9pIjj7wWZuWlzNQZn53+9v+6/cLo
|
||||
EACbjFwLJ05NpuBLHWtUeuiGjsd4ZrOPYU7aCd105Dj9M/2PPeupidGaf7Y4aH++
|
||||
I0cDfhKPUdFXOFqbl3S+mWjpumpXOIWLE/td2ztYTRFxT+9Dhd7IrYR2nPMEoXXr
|
||||
rQXVxlvw3EfJuwlzrDVnUAJW2Jwm94Lds06eA068ZmFT+GKbQbEAULWk6h5TtCtF
|
||||
BqBxJKpOT22znrlL7wQMnkhL4rJTsXkgkGpAVxVUTiqI3fdEG4ulxZTb2Vsz4AR7
|
||||
K1USrqKYIjanzQCs/5+a7oWXCOEinZ4u85r/Qi4gTvD/6qs7WvVr+ds+uvTID0TH
|
||||
zgya+0PaRugGQgJvfaCglErV/2nShgZ37tJsf79GyMiu2Elqf/JeIqIrpQbNOMXm
|
||||
dUvU+pzBBq8vJNqpRK3BiOfQwEdPGjgGyrP+Nlu9BKMXqcfKcEvCksgn0wrhe/Gw
|
||||
3cV797rrWG/gNQIh7KbvnrIybHIHFzUT2K7kBQQ1ENGlM1a57G3j1+otWV2JD1E0
|
||||
kbOh7vSvLCUPpq+XUxGntvLMw8XzfZj6pTRm7CnNtQrF8DiYVCIFOmt9oLWe8auI
|
||||
PwPQ2B2NY0j4SotquSTG3JENqs65de814VSEhHD03m0NEHLt2EtuPpP5gKiBgq5U
|
||||
pxbSzn+jD07S/CaXlvX4rsrNrKW/6R4appQnr23WvAlLS7kCDQRgZaKdARAAy2SZ
|
||||
x5SO3XxEPrYViiy3S6XdDGQTroAqlo2HVHy/PTmOtFtgty684H3sI4jS8Qc8L6po
|
||||
BGMkFEbZVe6NOCyVbcjtQdm+2UGEKAuoLvilec/vMNRDrOhvjCDXWv0MnY0JPMpg
|
||||
oYIBnR7VrRs02eStY7PnvMCYJBdNJ/WAsZJM/oyQitS+8O977WL0tKmHmtVFcZhh
|
||||
vnAbH0PRm8HkZek70o5Zi7Ze5uodXKRg0K58sqf8q3zjS28tbUN9pTIXx9PVwDx6
|
||||
SVgn4b/XaL4Bx7W+Cq6Go/NlAGc9iXtkZ+0iYgAi73s1hBU2TFgpZ7ZR6hyFbZmr
|
||||
J7c4c84CuhNSB+uw4Fkd5vNp6C6Zm2JRwDi5jQbDmERnXzkBtvC9uT9x61lfQD4p
|
||||
MHTx4OP9LSi4Dc4QesjunY+R7P2EbCQ9CZ/V/nAjWrD+VUyzhbGQ+CdYvI0/G65X
|
||||
/39+u6jrXt2hQD0KuzhWD76RWP3NCdA+nm9xRwsX3o1UC+GFeG4NxzlBsp1HgRsB
|
||||
4MkCcPy2NC3Qno6JMpUGa+w4/B+Jd2+sfOVISUikaCIp/nPGl4iO/9giWxQwCL97
|
||||
KL8jLAIUvhsp7cSKWJqAJdI66kQq+glgmhZdU44d8ayfqUQkpE1avTgEh1KgG+d9
|
||||
gd07fgyc8K5X+KrUAxc+6O5TxlzJ8WC1vyhGu0EAEQEAAYkCTQQYAQgAIBYhBPH2
|
||||
kiOPvBZm5aXM1Bmfnf72/7r9BQJgZaKdAhsMACEJEBmfnf72/7r9FiEE8faSI4+8
|
||||
FmblpczUGZ+d/vb/uv3HLw/9EV2+3aC3OmIpXpGXBKrb7wq4KP2Q23WtbY0W6UBs
|
||||
i8vSfcISHQ+xu5UqBiC0nfFNfIAi+z2averRqu+Qg8vPbtLyPiENVnpkZX6wWW+a
|
||||
pEjhjtmK/1WFccY2W7WIjOOGicq3oYQNzAr8M8j9u4nJR+zdF7F4CThdadwFRH7l
|
||||
x4QFUm0d7ZCz3u6LFysg1IFArrySDy0oJQqjx7JveV3IfD6VFyUXpj6RZ7DyJagy
|
||||
rv73yKwzGbZxBQaIP2n4wOrKpgvF9gUyhek4r/CistHYr5MLJnQKvlntL5JCDKtT
|
||||
zHNlJAy7/A7o6ReE1zLwVztwFqCjwzbei+8zFHcpraOUyCAPVrCG5/mhk3230n5S
|
||||
ZYZcyed58s5f8fbpBWm8Ke44xelcoeymDEBOqG9eiVk6PgGWN5ryqFF8Oo8BqJ2g
|
||||
YzZLkfRJvyMo1w8dLYiimjT3VYfE4PKXBjbd7LK6BClqi61I1pa7KP/kD3h9hpef
|
||||
jY0GEiHEDnGKPzBroopAPRibtPPPiICfG5k4hYDLqv2SwLkOoJKWQUFwDdoVSJFe
|
||||
h+SCcKfJW8n/BhtKgQpPVWtN/j2Y4WS7v32/RM1Zocl/eXBDWDVBO0F0KZbCWanI
|
||||
bAW44EBN/A1omSk+7skYWVAlA94fWSLGKOtza0DaAPsZM/bbm/uHF0FeoiYvxqng
|
||||
U3I=
|
||||
=wkmV
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
11
php8.rpmlintrc
Normal file
11
php8.rpmlintrc
Normal file
@ -0,0 +1,11 @@
|
||||
# Non-versioned shared library, php-embed requires
|
||||
# exact version of main package, parallel installation
|
||||
# not wanted
|
||||
addFilter("php.-embed.* shlib-policy-name-error")
|
||||
# PHP7 is (almost) obsolete, replaced by PHP8
|
||||
addFilter("obsolete-not-provided php7-*")
|
||||
# Silence expected error in configuration script
|
||||
addFilter("rpath-in-buildconfig /usr/bin/php-config")
|
||||
# False positives for scripts which check used shell
|
||||
addFilter("potential-bashisms /usr/share/php8/build/config.guess")
|
||||
addFilter("potential-bashisms /usr/share/php8/build/shtool")
|
Loading…
Reference in New Issue
Block a user