php-src/ext/pcre/upgrade-pcre.php
Peter Kokot 02294f0c84 Make PHP development tools files and scripts executable
This patch makes several scripts and PHP development tools files
executable and adds more proper shebangs to the PHP scripts.

The `#!/usr/bin/env php` shebang provides running the script via
`./script.php` and uses env to find PHP script location on the system.
At the same time it still provides running the script with a user
defined PHP location using `php script.php`.
2018-08-29 20:58:17 +02:00

138 lines
2.8 KiB
PHP
Executable file

#!/usr/bin/env 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 doesn't 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"
?>