wez Sat Dec 6 11:14:04 2003 EDT Added files: /php-src/win32/build mkdist.php
Modified files: /php-src/win32/build Makefile config.w32 Log: Add dist target to makefile that will generate the file layout for a win32 binary distro under build_dir/_dist_. This isn't finalized yet, and you need Edin's distro template.
Index: php-src/win32/build/Makefile diff -u php-src/win32/build/Makefile:1.7 php-src/win32/build/Makefile:1.8 --- php-src/win32/build/Makefile:1.7 Thu Dec 4 12:28:08 2003 +++ php-src/win32/build/Makefile Sat Dec 6 11:14:03 2003 @@ -14,7 +14,7 @@ # | Author: Wez Furlong <[EMAIL PROTECTED]> | # +----------------------------------------------------------------------+ # -# $Id: Makefile,v 1.7 2003/12/04 17:28:08 wez Exp $ +# $Id: Makefile,v 1.8 2003/12/06 16:14:03 wez Exp $ # This is the makefile template for the win32 build CC="$(CL)" @@ -71,7 +71,10 @@ test: <<test_suite_uses_lame_env_vars.bat -set TEST_PHP_EXECUTABLE=$(BUILD_DIR)\\php.exe -$(BUILD_DIR)\\php.exe -d open_basedir= -d safe_mode=0 -d output_buffering=0 run-tests.php $(TESTS) +set TEST_PHP_EXECUTABLE=$(BUILD_DIR)\php.exe +$(BUILD_DIR)\php.exe -d open_basedir= -d safe_mode=0 -d output_buffering=0 run-tests.php $(TESTS) <<NOKEEP - + +dist: all + $(BUILD_DIR)\php.exe win32/build/mkdist.php "$(BUILD_DIR)" "$(PHPDLL)" "$(SAPI_TARGETS)" "$(EXT_TARGETS)" "$(SNAPSHOT_TEMPLATE)" + Index: php-src/win32/build/config.w32 diff -u php-src/win32/build/config.w32:1.12 php-src/win32/build/config.w32:1.13 --- php-src/win32/build/config.w32:1.12 Sat Dec 6 05:32:35 2003 +++ php-src/win32/build/config.w32 Sat Dec 6 11:14:03 2003 @@ -1,5 +1,5 @@ // vim:ft=javascript -// $Id: config.w32,v 1.12 2003/12/06 10:32:35 wez Exp $ +// $Id: config.w32,v 1.13 2003/12/06 16:14:03 wez Exp $ // "Master" config file; think of it as a configure.in // equivalent. @@ -195,3 +195,15 @@ AC_DEFINE('HAVE_GAI_STRERROR', main_network_has_ipv6); AC_DEFINE('HAVE_IPV6', main_network_has_ipv6); +/* For snapshot builders, where can we find the additional + * files that make up the snapshot template? */ +ARG_WITH("snapshot-template", "Path to snapshot builder template dir", "no"); + +if (PHP_SNAPSHOT_TEMPLATE == "no") { + /* default is as a sibling of the php_build dir */ + if (FSO.FolderExists(PHP_PHP_BUILD + "\\..\\template")) { + PHP_SNAPSHOT_TEMPLATE = FSO.GetAbsolutePathName(PHP_PHP_BUILD + "\\..\\template"); + } +} + +DEFINE('SNAPSHOT_TEMPLATE', PHP_SNAPSHOT_TEMPLATE); Index: php-src/win32/build/mkdist.php +++ php-src/win32/build/mkdist.php <?php # $Id: mkdist.php,v 1.1 2003/12/06 16:14:03 wez Exp $ /* piece together a windows binary distro */ $build_dir = $argv[1]; $phpdll = $argv[2]; $sapi_targets = explode(" ", $argv[3]); $ext_targets = explode(" ", $argv[4]); $snapshot_template = $argv[5]; $is_debug = preg_match("/^debug/i", $build_dir); echo "Making dist for $build_dir\n"; $dist_dir = $build_dir . "/_dist_"; @mkdir($dist_dir); @mkdir("$dist_dir/sapi"); @mkdir("$dist_dir/ext"); @mkdir("$dist_dir/dev"); @mkdir("$dist_dir/dlls"); @mkdir("$dist_dir/extras"); /* figure out additional DLL's that are required */ $extra_dll_deps = array(); $per_module_deps = array(); function get_depends($module) { static $no_dist = array( /* windows system dlls that should not be bundled */ 'advapi32.dll', 'comdlg32.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', /* apache */ 'apachecore.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', ); global $build_dir, $extra_dll_deps, $ext_targets, $sapi_targets, $phpdll, $per_module_deps; $bd = strtolower(realpath($build_dir)); $csvname = tempnam($GLOBALS['build_dir'], '_dep'); system("depends.exe /c /f:1 /oc:\"$csvname\" \"$module\"", $retcode); $fp = fopen($csvname, "r"); $headers = fgetcsv($fp); $n = 0; while (($line = fgetcsv($fp))) { $n++; if ($line[0] == 'D') continue; $dep = strtolower($line[1]); $depbase = basename($dep); /* ignore stuff in our build dir, but only if it is * on of our targets */ if (0 == strncmp($dep, $bd, strlen($bd)) && (in_array($depbase, $sapi_targets) || in_array($depbase, $ext_targets)) || $depbase == $phpdll) { continue; } /* ignore some well-known system dlls */ if (in_array(basename($dep), $no_dist)) { continue; } if (!in_array($dep, $extra_dll_deps)) { $extra_dll_deps[] = $dep; } $per_module_deps[basename($module)][] = $dep; } fclose($fp); unlink($csvname); //echo "Module $module [$n lines]\n"; } function copy_file_list($source_dir, $dest_dir, $list) { global $is_debug, $dist_dir; foreach ($list as $item) { 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)$/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 = str_replace("\n", "\r\n", $text); $fp = fopen($dest, "w"); fwrite($fp, $text); fclose($fp); } /* the core dll */ copy("$build_dir/php.exe", "$dist_dir/php.exe"); copy("$build_dir/$phpdll", "$dist_dir/$phpdll"); /* and the .lib goes into dev */ $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"); } /* copy the sapi */ copy_file_list($build_dir, "$dist_dir/sapi", $sapi_targets); /* copy the extensions */ copy_file_list($build_dir, "$dist_dir/ext", $ext_targets); /* populate reading material */ $text_files = array( "LICENSE" => "license.txt", "NEWS" => "news.txt", "php.ini-dist" => "php.ini-dist", "php.ini-recommended" => "php.ini-recommended", ); foreach ($text_files as $src => $dest) { copy_text_file($src, $dist_dir . '/' . $dest); } /* general other files */ $general_files = array( "win32/install.txt" => "install.txt", "php.gif" => "php.gif", ); foreach ($general_files as $src => $dest) { copy($src, $dist_dir . '/' . $dest); } /* include a snapshot identifier */ $branch = "HEAD"; // TODO - determine this from CVS/Entries $fp = fopen("$dist_dir/snapshot.txt", "w"); $now = date("r"); $version = phpversion(); fwrite($fp, <<<EOT This snapshot was automatically generated on $now Version: $version Branch: $branch Build: $build_dir EOT ); /* list build-in extensions */ $exts = get_loaded_extensions(); fprintf($fp, "\r\nBuild-in Extensions\r\n"); foreach ($exts as $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) { 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)) { echo "WARNING: distro depends on $dll, but could not find it on your system\n"; continue; } $dll = $tdll; } copy($dll, "$dist_dir/dlls/" . 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 == 'CVS') { continue; } $fs = $source . '/' . $f; $fd = $dest . '/' . $f; if (is_dir($fs)) { copy_dir($fs, $fd); } else { copy($fs, $fd); } } closedir($d); } /* 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') { /* 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"); } } } } else { echo "WARNING: you don't have a snapshot template\n"; echo " your dist will not complete\n"; } ?>
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php