summaryrefslogtreecommitdiff
path: root/win32/build/mkdist.php
diff options
context:
space:
mode:
Diffstat (limited to 'win32/build/mkdist.php')
-rw-r--r--win32/build/mkdist.php800
1 files changed, 400 insertions, 400 deletions
diff --git a/win32/build/mkdist.php b/win32/build/mkdist.php
index f4155308af..d5fb9d1e7b 100644
--- a/win32/build/mkdist.php
+++ b/win32/build/mkdist.php
@@ -31,136 +31,136 @@ $pecl_dll_deps = array();
function get_depends($module)
{
- static $no_dist = array(
- /* windows system dlls that should not be bundled */
- 'advapi32.dll', 'comdlg32.dll', 'crypt32.dll', 'gdi32.dll', 'kernel32.dll', 'ntdll.dll',
- 'odbc32.dll', 'ole32.dll', 'oleaut32.dll', 'rpcrt4.dll',
- 'shell32.dll', 'shlwapi.dll', 'user32.dll', 'ws2_32.dll', 'ws2help.dll',
- 'comctl32.dll', 'winmm.dll', 'wsock32.dll', 'winspool.drv', 'msasn1.dll',
- 'secur32.dll', 'netapi32.dll', 'dnsapi.dll', 'psapi.dll', 'normaliz.dll',
- 'iphlpapi.dll', 'bcrypt.dll',
-
- /* apache */
- 'apachecore.dll',
-
- /* apache 2 */
- 'libhttpd.dll', 'libapr.dll', 'libaprutil.dll','libapr-1.dll', 'libaprutil-1.dll',
-
- /* oracle */
- 'oci.dll', 'ociw32.dll',
-
- /* sybase */
- 'libcs.dll', 'libct.dll',
-
- /* firebird */
- 'fbclient.dll',
-
- /* visual C++; mscvrt.dll is present on everyones system,
- * but the debug version (msvcrtd.dll) and those from visual studio.net
- * (msvcrt7x.dll) are not */
- 'msvcrt.dll',
- 'msvcr90.dll',
- 'wldap32.dll',
- 'vcruntime140.dll',
- 'msvcp140.dll',
- );
- static $no_dist_re = array(
- "api-ms-win-crt-.+\.dll",
- );
- global $build_dir, $extra_dll_deps, $ext_targets, $sapi_targets, $pecl_targets, $phpdll, $per_module_deps, $pecl_dll_deps;
-
- $bd = strtolower(realpath($build_dir));
-
- $is_pecl = in_array($module, $pecl_targets);
-
- $cmd = "$GLOBALS[build_dir]\\deplister.exe \"$module\" \"$GLOBALS[build_dir]\"";
- $proc = proc_open($cmd,
- array(1 => array("pipe", "w")),
- $pipes);
-
- $n = 0;
- while (($line = fgetcsv($pipes[1]))) {
- $n++;
-
- $dep = strtolower($line[0]);
- $depbase = basename($dep);
- /* ignore stuff in our build dir, but only if it is
- * one of our targets */
- if (((in_array($depbase, $sapi_targets) ||
- in_array($depbase, $ext_targets) || in_array($depbase, $pecl_targets)) ||
- $depbase == $phpdll) && file_exists($GLOBALS['build_dir'] . "/$depbase")) {
- continue;
- }
- /* ignore some well-known system dlls */
- if (in_array(basename($dep), $no_dist)) {
- continue;
- } else {
- $skip = false;
- foreach ($no_dist_re as $re) {
- if (preg_match(",$re,", basename($dep)) > 0) {
- $skip = true;
- break;
- }
- }
- if ($skip) {
- continue;
- }
- }
-
- if ($is_pecl) {
- if (!in_array($dep, $pecl_dll_deps)) {
- $pecl_dll_deps[] = $dep;
- }
- } else {
- if (!in_array($dep, $extra_dll_deps)) {
- $extra_dll_deps[] = $dep;
- }
- }
-
- if (!isset($per_module_deps[basename($module)]) || !in_array($dep, $per_module_deps[basename($module)])) {
- $per_module_deps[basename($module)][] = $dep;
- //recursively check dll dependencies
- get_depends($dep);
- }
- }
- fclose($pipes[1]);
- proc_close($proc);
+ static $no_dist = array(
+ /* windows system dlls that should not be bundled */
+ 'advapi32.dll', 'comdlg32.dll', 'crypt32.dll', 'gdi32.dll', 'kernel32.dll', 'ntdll.dll',
+ 'odbc32.dll', 'ole32.dll', 'oleaut32.dll', 'rpcrt4.dll',
+ 'shell32.dll', 'shlwapi.dll', 'user32.dll', 'ws2_32.dll', 'ws2help.dll',
+ 'comctl32.dll', 'winmm.dll', 'wsock32.dll', 'winspool.drv', 'msasn1.dll',
+ 'secur32.dll', 'netapi32.dll', 'dnsapi.dll', 'psapi.dll', 'normaliz.dll',
+ 'iphlpapi.dll', 'bcrypt.dll',
+
+ /* apache */
+ 'apachecore.dll',
+
+ /* apache 2 */
+ 'libhttpd.dll', 'libapr.dll', 'libaprutil.dll','libapr-1.dll', 'libaprutil-1.dll',
+
+ /* oracle */
+ 'oci.dll', 'ociw32.dll',
+
+ /* sybase */
+ 'libcs.dll', 'libct.dll',
+
+ /* firebird */
+ 'fbclient.dll',
+
+ /* visual C++; mscvrt.dll is present on everyones system,
+ * but the debug version (msvcrtd.dll) and those from visual studio.net
+ * (msvcrt7x.dll) are not */
+ 'msvcrt.dll',
+ 'msvcr90.dll',
+ 'wldap32.dll',
+ 'vcruntime140.dll',
+ 'msvcp140.dll',
+ );
+ static $no_dist_re = array(
+ "api-ms-win-crt-.+\.dll",
+ );
+ global $build_dir, $extra_dll_deps, $ext_targets, $sapi_targets, $pecl_targets, $phpdll, $per_module_deps, $pecl_dll_deps;
+
+ $bd = strtolower(realpath($build_dir));
+
+ $is_pecl = in_array($module, $pecl_targets);
+
+ $cmd = "$GLOBALS[build_dir]\\deplister.exe \"$module\" \"$GLOBALS[build_dir]\"";
+ $proc = proc_open($cmd,
+ array(1 => array("pipe", "w")),
+ $pipes);
+
+ $n = 0;
+ while (($line = fgetcsv($pipes[1]))) {
+ $n++;
+
+ $dep = strtolower($line[0]);
+ $depbase = basename($dep);
+ /* ignore stuff in our build dir, but only if it is
+ * one of our targets */
+ if (((in_array($depbase, $sapi_targets) ||
+ in_array($depbase, $ext_targets) || in_array($depbase, $pecl_targets)) ||
+ $depbase == $phpdll) && file_exists($GLOBALS['build_dir'] . "/$depbase")) {
+ continue;
+ }
+ /* ignore some well-known system dlls */
+ if (in_array(basename($dep), $no_dist)) {
+ continue;
+ } else {
+ $skip = false;
+ foreach ($no_dist_re as $re) {
+ if (preg_match(",$re,", basename($dep)) > 0) {
+ $skip = true;
+ break;
+ }
+ }
+ if ($skip) {
+ continue;
+ }
+ }
+
+ if ($is_pecl) {
+ if (!in_array($dep, $pecl_dll_deps)) {
+ $pecl_dll_deps[] = $dep;
+ }
+ } else {
+ if (!in_array($dep, $extra_dll_deps)) {
+ $extra_dll_deps[] = $dep;
+ }
+ }
+
+ if (!isset($per_module_deps[basename($module)]) || !in_array($dep, $per_module_deps[basename($module)])) {
+ $per_module_deps[basename($module)][] = $dep;
+ //recursively check dll dependencies
+ get_depends($dep);
+ }
+ }
+ fclose($pipes[1]);
+ proc_close($proc);
//echo "Module $module [$n lines]\n";
}
function copy_file_list($source_dir, $dest_dir, $list)
{
- global $is_debug, $dist_dir;
-
- foreach ($list as $item) {
- if (empty($item)) {
- continue;
- } elseif (!is_file($source_dir . DIRECTORY_SEPARATOR . $item)) {
- echo "WARNING: $item not found\n";
- continue;
- }
-
- echo "Copying $item from $source_dir to $dest_dir\n";
- copy($source_dir . DIRECTORY_SEPARATOR . $item, $dest_dir . DIRECTORY_SEPARATOR . $item);
- if ($is_debug) {
- $itemdb = preg_replace("/\.(exe|dll|lib)$/i", ".pdb", $item);
- if (file_exists("$source_dir/$itemdb")) {
- copy("$source_dir/$itemdb", "$dist_dir/dev/$itemdb");
- }
- }
- if (preg_match("/\.(exe|dll)$/i", $item)) {
- get_depends($source_dir . '/' . $item);
- }
- }
+ global $is_debug, $dist_dir;
+
+ foreach ($list as $item) {
+ if (empty($item)) {
+ continue;
+ } elseif (!is_file($source_dir . DIRECTORY_SEPARATOR . $item)) {
+ echo "WARNING: $item not found\n";
+ continue;
+ }
+
+ echo "Copying $item from $source_dir to $dest_dir\n";
+ copy($source_dir . DIRECTORY_SEPARATOR . $item, $dest_dir . DIRECTORY_SEPARATOR . $item);
+ if ($is_debug) {
+ $itemdb = preg_replace("/\.(exe|dll|lib)$/i", ".pdb", $item);
+ if (file_exists("$source_dir/$itemdb")) {
+ copy("$source_dir/$itemdb", "$dist_dir/dev/$itemdb");
+ }
+ }
+ if (preg_match("/\.(exe|dll)$/i", $item)) {
+ get_depends($source_dir . '/' . $item);
+ }
+ }
}
function copy_text_file($source, $dest)
{
- $text = file_get_contents($source);
- $text = preg_replace("/(\r\n?)|\n/", "\r\n", $text);
- $fp = fopen($dest, "w");
- fwrite($fp, $text);
- fclose($fp);
+ $text = file_get_contents($source);
+ $text = preg_replace("/(\r\n?)|\n/", "\r\n", $text);
+ $fp = fopen($dest, "w");
+ fwrite($fp, $text);
+ fclose($fp);
}
/* very light-weight function to extract a single named file from
@@ -168,57 +168,57 @@ function copy_text_file($source, $dest)
* based on the PEAR info set in $packages. */
function extract_file_from_tarball($pkg, $filename, $dest_dir) /* {{{ */
{
- global $packages;
-
- $name = $pkg . '-' . $packages[$pkg];
- $tarball = $dest_dir . "/" . $name . '.tgz';
- $filename = $name . '/' . $filename;
- $destfilename = $dest_dir . "/" . basename($filename);
-
- $fp = gzopen($tarball, 'rb');
-
- $done = false;
- do {
- /* read the header */
- $hdr_data = gzread($fp, 512);
- if (strlen($hdr_data) == 0)
- break;
- $checksum = 0;
- for ($i = 0; $i < 148; $i++)
- $checksum += ord($hdr_data{$i});
- for ($i = 148; $i < 156; $i++)
- $checksum += 32;
- for ($i = 156; $i < 512; $i++)
- $checksum += ord($hdr_data{$i});
-
- $hdr = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $hdr_data);
-
- $hdr['checksum'] = octdec(trim($hdr['checksum']));
-
- if ($hdr['checksum'] != $checksum) {
- echo "Checksum for $tarball $hdr[filename] is invalid\n";
- print_r($hdr);
- return;
- }
-
- $hdr['size'] = octdec(trim($hdr['size']));
- echo "File: $hdr[filename] $hdr[size]\n";
-
- if ($filename == $hdr['filename']) {
- echo "Found the file we want\n";
- $dest = fopen($destfilename, 'wb');
- $x = stream_copy_to_stream($fp, $dest, $hdr['size']);
- fclose($dest);
- echo "Wrote $x bytes into $destfilename\n";
- break;
- }
-
- /* skip body of the file */
- $size = 512 * ceil((int)$hdr['size'] / 512);
- echo "Skipping $size bytes\n";
- gzseek($fp, gztell($fp) + $size);
-
- } while (!$done);
+ global $packages;
+
+ $name = $pkg . '-' . $packages[$pkg];
+ $tarball = $dest_dir . "/" . $name . '.tgz';
+ $filename = $name . '/' . $filename;
+ $destfilename = $dest_dir . "/" . basename($filename);
+
+ $fp = gzopen($tarball, 'rb');
+
+ $done = false;
+ do {
+ /* read the header */
+ $hdr_data = gzread($fp, 512);
+ if (strlen($hdr_data) == 0)
+ break;
+ $checksum = 0;
+ for ($i = 0; $i < 148; $i++)
+ $checksum += ord($hdr_data{$i});
+ for ($i = 148; $i < 156; $i++)
+ $checksum += 32;
+ for ($i = 156; $i < 512; $i++)
+ $checksum += ord($hdr_data{$i});
+
+ $hdr = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $hdr_data);
+
+ $hdr['checksum'] = octdec(trim($hdr['checksum']));
+
+ if ($hdr['checksum'] != $checksum) {
+ echo "Checksum for $tarball $hdr[filename] is invalid\n";
+ print_r($hdr);
+ return;
+ }
+
+ $hdr['size'] = octdec(trim($hdr['size']));
+ echo "File: $hdr[filename] $hdr[size]\n";
+
+ if ($filename == $hdr['filename']) {
+ echo "Found the file we want\n";
+ $dest = fopen($destfilename, 'wb');
+ $x = stream_copy_to_stream($fp, $dest, $hdr['size']);
+ fclose($dest);
+ echo "Wrote $x bytes into $destfilename\n";
+ break;
+ }
+
+ /* skip body of the file */
+ $size = 512 * ceil((int)$hdr['size'] / 512);
+ echo "Skipping $size bytes\n";
+ gzseek($fp, gztell($fp) + $size);
+
+ } while (!$done);
} /* }}} */
@@ -233,8 +233,8 @@ $phplib = str_replace(".dll", ".lib", $phpdll);
copy("$build_dir/$phplib", "$dist_dir/dev/$phplib");
/* debug builds; copy the symbols too */
if ($is_debug) {
- $phppdb = str_replace(".dll", ".pdb", $phpdll);
- copy("$build_dir/$phppdb", "$dist_dir/dev/$phppdb");
+ $phppdb = str_replace(".dll", ".pdb", $phpdll);
+ copy("$build_dir/$phppdb", "$dist_dir/dev/$phppdb");
}
/* copy the sapi */
copy_file_list($build_dir, "$dist_dir", $sapi_targets);
@@ -244,30 +244,30 @@ copy_file_list($build_dir, "$dist_dir/ext", $ext_targets);
/* pecl sapi and extensions */
if(sizeof($pecl_targets)) {
- copy_file_list($build_dir, $pecl_dir, $pecl_targets);
+ copy_file_list($build_dir, $pecl_dir, $pecl_targets);
}
/* populate reading material */
$text_files = array(
- "LICENSE" => "license.txt",
- "NEWS" => "news.txt",
- "README.md" => "README.md",
- "README.REDIST.BINS" => "readme-redist-bins.txt",
- "php.ini-development" => "php.ini-development",
- "php.ini-production" => "php.ini-production"
+ "LICENSE" => "license.txt",
+ "NEWS" => "news.txt",
+ "README.md" => "README.md",
+ "README.REDIST.BINS" => "readme-redist-bins.txt",
+ "php.ini-development" => "php.ini-development",
+ "php.ini-production" => "php.ini-production"
);
foreach ($text_files as $src => $dest) {
- copy_text_file($src, $dist_dir . '/' . $dest);
+ copy_text_file($src, $dist_dir . '/' . $dest);
}
/* general other files */
$general_files = array(
- "$GLOBALS[build_dir]\\deplister.exe" => "deplister.exe",
+ "$GLOBALS[build_dir]\\deplister.exe" => "deplister.exe",
);
foreach ($general_files as $src => $dest) {
- copy($src, $dist_dir . '/' . $dest);
+ copy($src, $dist_dir . '/' . $dest);
}
/* include a snapshot identifier */
@@ -289,40 +289,40 @@ $exts = get_loaded_extensions();
fprintf($fp, "\r\nBuilt-in Extensions\r\n");
fwrite($fp, "===========================\r\n");
foreach ($exts as $ext) {
- fprintf($fp, "%s\r\n", $ext);
+ fprintf($fp, "%s\r\n", $ext);
}
fwrite($fp, "\r\n\r\n");
/* list dependencies */
fprintf($fp, "Dependency information:\r\n");
foreach ($per_module_deps as $modulename => $deps) {
- if (in_array($modulename, $pecl_targets))
- continue;
-
- fprintf($fp, "Module: %s\r\n", $modulename);
- fwrite($fp, "===========================\r\n");
- foreach ($deps as $dll) {
- fprintf($fp, "\t%s\r\n", basename($dll));
- }
- fwrite($fp, "\r\n");
+ if (in_array($modulename, $pecl_targets))
+ continue;
+
+ fprintf($fp, "Module: %s\r\n", $modulename);
+ fwrite($fp, "===========================\r\n");
+ foreach ($deps as $dll) {
+ fprintf($fp, "\t%s\r\n", basename($dll));
+ }
+ fwrite($fp, "\r\n");
}
fclose($fp);
/* Now add those dependencies */
foreach ($extra_dll_deps as $dll) {
- if (!file_exists($dll)) {
- /* try template dir */
- $tdll = $snapshot_template . "/dlls/" . basename($dll);
- if (!file_exists($tdll)) {
- $tdll = $php_build_dir . '/bin/' . basename($dll);
- if (!file_exists($tdll)) {
- echo "WARNING: distro depends on $dll, but could not find it on your system\n";
- continue;
- }
- }
- $dll = $tdll;
- }
- copy($dll, "$dist_dir/" . basename($dll));
+ if (!file_exists($dll)) {
+ /* try template dir */
+ $tdll = $snapshot_template . "/dlls/" . basename($dll);
+ if (!file_exists($tdll)) {
+ $tdll = $php_build_dir . '/bin/' . basename($dll);
+ if (!file_exists($tdll)) {
+ echo "WARNING: distro depends on $dll, but could not find it on your system\n";
+ continue;
+ }
+ }
+ $dll = $tdll;
+ }
+ copy($dll, "$dist_dir/" . basename($dll));
}
/* TODO:
@@ -333,168 +333,168 @@ deps. For example, libenchant.dll loads libenchant_myspell.dll or
libenchant_ispell.dll
*/
$ENCHANT_DLLS = array(
- array('', 'glib-2.dll'),
- array('', 'gmodule-2.dll'),
- array('lib/enchant', 'libenchant_myspell.dll'),
- array('lib/enchant', 'libenchant_ispell.dll'),
+ array('', 'glib-2.dll'),
+ array('', 'gmodule-2.dll'),
+ array('lib/enchant', 'libenchant_myspell.dll'),
+ array('lib/enchant', 'libenchant_ispell.dll'),
);
foreach ($ENCHANT_DLLS as $dll) {
- $dest = "$dist_dir/$dll[0]";
- $filename = $dll[1];
-
- if (!file_exists("$dest") || !is_dir("$dest")) {
- if (!mkdir("$dest", 0777, true)) {
- echo "WARNING: couldn't create '$dest' for enchant plugins ";
- }
- }
-
- if (!copy($php_build_dir . '/bin/' . $filename, "$dest/" . basename($filename))) {
- echo "WARNING: couldn't copy $filename into the dist dir";
- }
+ $dest = "$dist_dir/$dll[0]";
+ $filename = $dll[1];
+
+ if (!file_exists("$dest") || !is_dir("$dest")) {
+ if (!mkdir("$dest", 0777, true)) {
+ echo "WARNING: couldn't create '$dest' for enchant plugins ";
+ }
+ }
+
+ if (!copy($php_build_dir . '/bin/' . $filename, "$dest/" . basename($filename))) {
+ echo "WARNING: couldn't copy $filename into the dist dir";
+ }
}
$SASL_DLLS = $php_build_dir . "/bin/sasl2/sasl*.dll";
$fls = glob($SASL_DLLS);
if (!empty($fls)) {
- $sasl_dest_dir = "$dist_dir/sasl2";
- if (!file_exists($sasl_dest_dir) || !is_dir($sasl_dest_dir)) {
- if (!mkdir("$sasl_dest_dir", 0777, true)) {
- echo "WARNING: couldn't create '$sasl_dest_dir' for SASL2 auth plugins ";
- }
- }
- foreach ($fls as $fl) {
- if (!copy($fl, "$sasl_dest_dir/" . basename($fl))) {
- echo "WARNING: couldn't copy $fl into the $sasl_dest_dir";
- }
- }
+ $sasl_dest_dir = "$dist_dir/sasl2";
+ if (!file_exists($sasl_dest_dir) || !is_dir($sasl_dest_dir)) {
+ if (!mkdir("$sasl_dest_dir", 0777, true)) {
+ echo "WARNING: couldn't create '$sasl_dest_dir' for SASL2 auth plugins ";
+ }
+ }
+ foreach ($fls as $fl) {
+ if (!copy($fl, "$sasl_dest_dir/" . basename($fl))) {
+ echo "WARNING: couldn't copy $fl into the $sasl_dest_dir";
+ }
+ }
}
/* and those for pecl */
foreach ($pecl_dll_deps as $dll) {
- if (in_array($dll, $extra_dll_deps)) {
- /* already in main distro */
- continue;
- }
- if (!file_exists($dll)) {
- /* try template dir */
- $tdll = $snapshot_template . "/dlls/" . basename($dll);
- if (!file_exists($tdll)) {
- echo "WARNING: distro depends on $dll, but could not find it on your system\n";
- continue;
- }
- $dll = $tdll;
- }
- copy($dll, "$pecl_dir/" . basename($dll));
+ if (in_array($dll, $extra_dll_deps)) {
+ /* already in main distro */
+ continue;
+ }
+ if (!file_exists($dll)) {
+ /* try template dir */
+ $tdll = $snapshot_template . "/dlls/" . basename($dll);
+ if (!file_exists($tdll)) {
+ echo "WARNING: distro depends on $dll, but could not find it on your system\n";
+ continue;
+ }
+ $dll = $tdll;
+ }
+ copy($dll, "$pecl_dir/" . basename($dll));
}
function copy_dir($source, $dest)
{
- if (!is_dir($dest)) {
- if (!mkdir($dest)) {
- return false;
- }
- }
-
- $d = opendir($source);
- while (($f = readdir($d)) !== false) {
- if ($f == '.' || $f == '..' || $f == '.svn') {
- continue;
- }
- $fs = $source . '/' . $f;
- $fd = $dest . '/' . $f;
- if (is_dir($fs)) {
- copy_dir($fs, $fd);
- } else {
- copy($fs, $fd);
- }
- }
- closedir($d);
+ if (!is_dir($dest)) {
+ if (!mkdir($dest)) {
+ return false;
+ }
+ }
+
+ $d = opendir($source);
+ while (($f = readdir($d)) !== false) {
+ if ($f == '.' || $f == '..' || $f == '.svn') {
+ continue;
+ }
+ $fs = $source . '/' . $f;
+ $fd = $dest . '/' . $f;
+ if (is_dir($fs)) {
+ copy_dir($fs, $fd);
+ } else {
+ copy($fs, $fd);
+ }
+ }
+ closedir($d);
}
function copy_test_dir($directory, $dest)
{
- if(substr($directory,-1) == '/') {
- $directory = substr($directory,0,-1);
- }
-
- if ($directory == 'tests' || $directory == 'examples') {
- if (!is_dir($dest . '/tests')) {
- mkdir($dest . '/tests', 0775, true);
- }
- copy_dir($directory, $dest . '/tests/');
-
- return false;
- }
-
- if(!file_exists($directory) || !is_dir($directory)) {
- echo "failed... $directory\n";
- return FALSE;
- }
-
- $directory_list = opendir($directory);
-
- while (FALSE !== ($file = readdir($directory_list))) {
- $full_path = $directory . '/' . $file;
- if($file != '.' && $file != '..' && $file != '.svn' && is_dir($full_path)) {
- if ($file == 'tests' || $file == 'examples') {
- if (!is_dir($dest . '/' . $full_path)) {
- mkdir($dest . '/' . $full_path , 0775, true);
- }
- copy_dir($full_path, $dest . '/' . $full_path . '/');
- continue;
- } else {
- copy_test_dir($full_path, $dest);
- }
- }
- }
-
- closedir($directory_list);
+ if(substr($directory,-1) == '/') {
+ $directory = substr($directory,0,-1);
+ }
+
+ if ($directory == 'tests' || $directory == 'examples') {
+ if (!is_dir($dest . '/tests')) {
+ mkdir($dest . '/tests', 0775, true);
+ }
+ copy_dir($directory, $dest . '/tests/');
+
+ return false;
+ }
+
+ if(!file_exists($directory) || !is_dir($directory)) {
+ echo "failed... $directory\n";
+ return FALSE;
+ }
+
+ $directory_list = opendir($directory);
+
+ while (FALSE !== ($file = readdir($directory_list))) {
+ $full_path = $directory . '/' . $file;
+ if($file != '.' && $file != '..' && $file != '.svn' && is_dir($full_path)) {
+ if ($file == 'tests' || $file == 'examples') {
+ if (!is_dir($dest . '/' . $full_path)) {
+ mkdir($dest . '/' . $full_path , 0775, true);
+ }
+ copy_dir($full_path, $dest . '/' . $full_path . '/');
+ continue;
+ } else {
+ copy_test_dir($full_path, $dest);
+ }
+ }
+ }
+
+ closedir($directory_list);
}
function make_phar_dot_phar($dist_dir)
{
- if (!extension_loaded('phar')) {
- return;
- }
+ if (!extension_loaded('phar')) {
+ return;
+ }
- $path_to_phar = realpath(__DIR__ . '/../../ext/phar');
+ $path_to_phar = realpath(__DIR__ . '/../../ext/phar');
- echo "Generating pharcommand.phar\n";
- $phar = new Phar($dist_dir . '/pharcommand.phar', 0, 'pharcommand');
+ echo "Generating pharcommand.phar\n";
+ $phar = new Phar($dist_dir . '/pharcommand.phar', 0, 'pharcommand');
- foreach (new DirectoryIterator($path_to_phar . '/phar') as $file) {
- if ($file->isDir() || $file == 'phar.php') {
- continue;
- }
+ foreach (new DirectoryIterator($path_to_phar . '/phar') as $file) {
+ if ($file->isDir() || $file == 'phar.php') {
+ continue;
+ }
- echo 'adding ', $file, "\n";
- $phar[(string) $file] = file_get_contents($path_to_phar. '/phar/' . $file);
- }
+ echo 'adding ', $file, "\n";
+ $phar[(string) $file] = file_get_contents($path_to_phar. '/phar/' . $file);
+ }
- $phar->setSignatureAlgorithm(Phar::SHA1);
- $stub = file($path_to_phar . '/phar/phar.php');
+ $phar->setSignatureAlgorithm(Phar::SHA1);
+ $stub = file($path_to_phar . '/phar/phar.php');
- unset($stub[0]); // remove hashbang
- $phar->setStub(implode('', $stub));
+ unset($stub[0]); // remove hashbang
+ $phar->setStub(implode('', $stub));
- echo "Creating phar.phar.bat\n";
- file_put_contents($dist_dir . '/phar.phar.bat', "\"%~dp0php.exe\" \"%~dp0pharcommand.phar\" %*\r\n");
+ echo "Creating phar.phar.bat\n";
+ file_put_contents($dist_dir . '/phar.phar.bat', "\"%~dp0php.exe\" \"%~dp0pharcommand.phar\" %*\r\n");
}
if (!is_dir($test_dir)) {
- mkdir($test_dir);
+ mkdir($test_dir);
}
$dirs = array(
- 'ext',
- 'Sapi',
- 'Zend',
- 'tests'
+ 'ext',
+ 'Sapi',
+ 'Zend',
+ 'tests'
);
foreach ($dirs as $dir) {
- copy_test_dir($dir, $test_dir);
+ copy_test_dir($dir, $test_dir);
}
copy('run-tests.php', $test_dir . '/run-test.php');
@@ -503,82 +503,82 @@ copy('run-tests.php', $test_dir . '/run-test.php');
$use_pear_template = true;
if (!$use_pear_template) {
- /* Let's do a PEAR-less pear setup */
- mkdir("$dist_dir/PEAR");
- mkdir("$dist_dir/PEAR/go-pear-bundle");
-
- /* grab the bootstrap script */
- echo "Downloading go-pear\n";
- copy("https://pear.php.net/go-pear.phar", "$dist_dir/PEAR/go-pear.php");
-
- /* import the package list -- sets $packages variable */
- include "pear/go-pear-list.php";
-
- /* download the packages into the destination */
- echo "Fetching packages\n";
-
- foreach ($packages as $name => $version) {
- $filename = "$name-$version.tgz";
- $destfilename = "$dist_dir/PEAR/go-pear-bundle/$filename";
- if (file_exists($destfilename))
- continue;
- $url = "http://pear.php.net/get/$filename";
- echo "Downloading $name from $url\n";
- flush();
- copy($url, $destfilename);
- }
-
- echo "Download complete. Extracting bootstrap files\n";
-
- /* Now, we want PEAR.php, Getopt.php (Console_Getopt) and Tar.php (Archive_Tar)
- * broken out of the tarballs */
- extract_file_from_tarball('PEAR', 'PEAR.php', "$dist_dir/PEAR/go-pear-bundle");
- extract_file_from_tarball('Archive_Tar', 'Archive/Tar.php', "$dist_dir/PEAR/go-pear-bundle");
- extract_file_from_tarball('Console_Getopt', 'Console/Getopt.php', "$dist_dir/PEAR/go-pear-bundle");
+ /* Let's do a PEAR-less pear setup */
+ mkdir("$dist_dir/PEAR");
+ mkdir("$dist_dir/PEAR/go-pear-bundle");
+
+ /* grab the bootstrap script */
+ echo "Downloading go-pear\n";
+ copy("https://pear.php.net/go-pear.phar", "$dist_dir/PEAR/go-pear.php");
+
+ /* import the package list -- sets $packages variable */
+ include "pear/go-pear-list.php";
+
+ /* download the packages into the destination */
+ echo "Fetching packages\n";
+
+ foreach ($packages as $name => $version) {
+ $filename = "$name-$version.tgz";
+ $destfilename = "$dist_dir/PEAR/go-pear-bundle/$filename";
+ if (file_exists($destfilename))
+ continue;
+ $url = "http://pear.php.net/get/$filename";
+ echo "Downloading $name from $url\n";
+ flush();
+ copy($url, $destfilename);
+ }
+
+ echo "Download complete. Extracting bootstrap files\n";
+
+ /* Now, we want PEAR.php, Getopt.php (Console_Getopt) and Tar.php (Archive_Tar)
+ * broken out of the tarballs */
+ extract_file_from_tarball('PEAR', 'PEAR.php', "$dist_dir/PEAR/go-pear-bundle");
+ extract_file_from_tarball('Archive_Tar', 'Archive/Tar.php', "$dist_dir/PEAR/go-pear-bundle");
+ extract_file_from_tarball('Console_Getopt', 'Console/Getopt.php', "$dist_dir/PEAR/go-pear-bundle");
}
/* add extras from the template dir */
if (file_exists($snapshot_template)) {
- $items = glob("$snapshot_template/*");
- print_r($items);
-
- foreach ($items as $item) {
- $bi = basename($item);
- if (is_dir($item)) {
- if ($bi == 'dlls' || $bi == 'symbols') {
- continue;
- } else if ($bi == 'PEAR') {
- if ($use_pear_template) {
- /* copy to top level */
- copy_dir($item, "$dist_dir/$bi");
- }
- } else {
- /* copy that dir into extras */
- copy_dir($item, "$dist_dir/extras/$bi");
- }
- } else {
- if ($bi == 'go-pear.bat') {
- /* copy to top level */
- copy($item, "$dist_dir/$bi");
- } else {
- /* copy to extras */
- copy($item, "$dist_dir/extras/$bi");
- }
- }
- }
-
- /* copy c++ runtime */
- $items = glob("$snapshot_template/dlls/*.CRT");
-
- foreach ($items as $item) {
- $bi = basename($item);
- if (is_dir($item)) {
- copy_dir($item, "$dist_dir/$bi");
- copy_dir($item, "$dist_dir/ext/$bi");
- }
- }
+ $items = glob("$snapshot_template/*");
+ print_r($items);
+
+ foreach ($items as $item) {
+ $bi = basename($item);
+ if (is_dir($item)) {
+ if ($bi == 'dlls' || $bi == 'symbols') {
+ continue;
+ } else if ($bi == 'PEAR') {
+ if ($use_pear_template) {
+ /* copy to top level */
+ copy_dir($item, "$dist_dir/$bi");
+ }
+ } else {
+ /* copy that dir into extras */
+ copy_dir($item, "$dist_dir/extras/$bi");
+ }
+ } else {
+ if ($bi == 'go-pear.bat') {
+ /* copy to top level */
+ copy($item, "$dist_dir/$bi");
+ } else {
+ /* copy to extras */
+ copy($item, "$dist_dir/extras/$bi");
+ }
+ }
+ }
+
+ /* copy c++ runtime */
+ $items = glob("$snapshot_template/dlls/*.CRT");
+
+ foreach ($items as $item) {
+ $bi = basename($item);
+ if (is_dir($item)) {
+ copy_dir($item, "$dist_dir/$bi");
+ copy_dir($item, "$dist_dir/ext/$bi");
+ }
+ }
} else {
- echo "WARNING: you don't have a snapshot template, your dist will not be complete\n";
+ echo "WARNING: you don't have a snapshot template, your dist will not be complete\n";
}
make_phar_dot_phar($dist_dir);