diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/pcre/upgrade-pcre.php | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/pcre/upgrade-pcre.php')
-rw-r--r-- | ext/pcre/upgrade-pcre.php | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/ext/pcre/upgrade-pcre.php b/ext/pcre/upgrade-pcre.php new file mode 100644 index 0000000..a48f8d7 --- /dev/null +++ b/ext/pcre/upgrade-pcre.php @@ -0,0 +1,137 @@ +<?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" + +?> |