mirror of
https://github.com/php/php-src.git
synced 2025-01-07 19:44:02 +08:00
23917b451b
We probably will need to go to 8.37 once it is released.
138 lines
2.8 KiB
PHP
138 lines
2.8 KiB
PHP
<?php
|
|
|
|
// script to upgrade PCRE. just drop the pcre-x.x.tar.xx here and run the script
|
|
|
|
$pattern = 'pcre-*.tar.*';
|
|
$newpcre = glob($pattern);
|
|
|
|
if (count($newpcre) > 1) {
|
|
echo "more than one '$pattern' file. aborting\n";
|
|
print_r($newpcre);
|
|
exit;
|
|
}
|
|
|
|
if (count($newpcre) == 0) {
|
|
die("need one '$pattern' file. aborting.\n");
|
|
}
|
|
|
|
|
|
$newpcre = $newpcre[0];
|
|
|
|
if (strpos($newpcre, 'gz')) {
|
|
system("tar xfz $newpcre");
|
|
} elseif (strpos($newpcre, 'bz2')) {
|
|
system("tar xfj $newpcre");
|
|
} else {
|
|
die("file type not recognized: $newpcre\n");
|
|
}
|
|
|
|
$newpcre = substr($newpcre, 0, strpos($newpcre, '.tar'));
|
|
$dirlen = strlen('pcrelib');
|
|
|
|
function recurse($path)
|
|
{
|
|
global $newpcre, $dirlen;
|
|
|
|
foreach (scandir($path) as $file) {
|
|
|
|
if ($file[0] === '.' ||
|
|
$file === 'CVS' ||
|
|
@substr_compare($file, '.lo', -3, 3) === 0 ||
|
|
@substr_compare($file, '.loT', -4, 4) === 0 ||
|
|
@substr_compare($file, '.o', -2, 2) === 0) continue;
|
|
|
|
$file = "$path/$file";
|
|
|
|
if (is_dir($file)) {
|
|
recurse($file);
|
|
continue;
|
|
}
|
|
|
|
echo "processing $file... ";
|
|
|
|
$newfile = $newpcre . substr($file, $dirlen);
|
|
|
|
if (is_file($tmp = $newfile . '.generic') || is_file($tmp = $newfile . '.dist')) {
|
|
$newfile = $tmp;
|
|
}
|
|
|
|
|
|
if (!is_file($newfile)) {
|
|
die("$newfile is not available any more\n");
|
|
}
|
|
|
|
// maintain file mtimes so that cvs doesnt get crazy
|
|
if (file_get_contents($newfile) !== file_get_contents($file)) {
|
|
copy($newfile, $file);
|
|
}
|
|
|
|
// always include the config.h file
|
|
$content = file_get_contents($newfile);
|
|
//$newcontent = preg_replace('/#\s*ifdef HAVE_CONFIG_H\s*(.+)\s*#\s*endif/', '$1', $content);
|
|
|
|
//if ($content !== $newcontent) {
|
|
// file_put_contents($file, $newcontent);
|
|
//}
|
|
|
|
echo "OK\n";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
recurse('pcrelib');
|
|
|
|
$dirorig = scandir('pcrelib/testdata');
|
|
$k = array_search('CVS', $dirorig);
|
|
if ($k !== false)
|
|
unset($dirorig[$k]);
|
|
|
|
$k = array_search('.svn', $dirorig);
|
|
if ($k !== false)
|
|
unset($dirorig[$k]);
|
|
|
|
$dirnew = scandir("$newpcre/testdata");
|
|
$diff = array_diff($dirorig, $dirnew);
|
|
|
|
foreach ($diff as $file) {
|
|
$file2 = 'pcrelib'.substr($file, strlen($newpcre));
|
|
copy($file, $file2);
|
|
}
|
|
|
|
|
|
// the config.h needs special care
|
|
$prepend_config_h = '
|
|
#include <php_compat.h>
|
|
|
|
#ifndef PHP_WIN32
|
|
# include <php_config.h>
|
|
#endif
|
|
|
|
#undef PACKAGE_NAME
|
|
#undef PACKAGE_VERSION
|
|
#undef PACKAGE_TARNAME
|
|
#undef PACKAGE_STRING
|
|
|
|
#define SUPPORT_UCP
|
|
#define SUPPORT_UTF8
|
|
|
|
#if defined(__GNUC__) && __GNUC__ >= 4
|
|
# ifdef __cplusplus
|
|
# define PCRE_EXP_DECL extern "C" __attribute__ ((visibility("default")))
|
|
# else
|
|
# define PCRE_EXP_DECL extern __attribute__ ((visibility("default")))
|
|
# endif
|
|
# define PCRE_EXP_DEFN __attribute__ ((visibility("default")))
|
|
# define PCRE_EXP_DATA_DEFN __attribute__ ((visibility("default")))
|
|
#endif
|
|
|
|
|
|
';
|
|
|
|
file_put_contents('pcrelib/config.h', $prepend_config_h . file_get_contents('pcrelib/config.h'));
|
|
|
|
|
|
echo "\nThe End :-)\n\n"
|
|
|
|
?>
|