diff --git a/build/build.xml b/build/build.xml new file mode 100644 index 0000000000..9517c33a8e --- /dev/null +++ b/build/build.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/build_helper.php b/build/build_helper.php index 2bae32218b..94fc0ff3b5 100644 --- a/build/build_helper.php +++ b/build/build_helper.php @@ -14,10 +14,6 @@ class build_package var $old_packages; var $versions; var $locations; - var $clean_directory_structure; - var $files_to_copy; - var $files_to_remove; - var $remove_from_diff_structure; // -c - context diff // -r - compare recursive @@ -53,11 +49,11 @@ class build_package $this->package_infos = array( 'package_name' => 'phpBB3', 'name_prefix' => 'phpbb', - 'simple_name' => 'phpbb' . str_replace('.', '', $_latest), + 'simple_name' => 'release-' . $_latest, 'new_version_number' => $_latest, 'short_version_number' => str_replace('.', '', $_latest), 'release_filename' => 'phpBB-' . $_latest, - 'last_version' => 'phpbb' . str_replace('.', '', $_before), + 'last_version' => 'release-' . $_before, 'last_version_number' => $_before, ); @@ -78,112 +74,7 @@ class build_package continue; } - $this->old_packages['phpbb' . str_replace('.', '', $package_version)] = $package_version . '_to_'; - } - - // We need to make sure this is up to date with the latest version - $this->clean_directory_structure = array( - 'adm' => array( - 'images' => '', - 'style' => '', - ), - 'cache' => '', - 'docs' => '', - 'download' => '', - 'files' => '', - 'images' => array( - 'avatars' => array( - 'gallery' => '', - 'upload' => '', - ), - 'icons' => array( - 'misc' => '', - 'smile' => '', - ), - 'ranks' => '', - 'smilies' => '', - 'upload_icons' => '', - ), - 'includes' => array( - 'acm' => '', - 'acp' => array( - 'info' => '', - ), - 'auth' => '', - 'captcha' => array( - 'plugins' => '', - ), - 'diff' => '', - 'db' => '', - 'hooks' => '', - 'mcp' => array( - 'info' => '', - ), - 'questionnaire' => '', - 'search' => '', - 'ucp' => array( - 'info' => '', - ), - 'utf' => array( - 'data' => '', - ), - ), - 'install' => array( - 'convertors'=> '', - 'schemas' => '', -// 'data' => '', - ), - 'language' => array( - 'en' => array( - 'acp' => '', - 'email' => '', - 'mods' => '', - ), - ), - 'store' => '', - 'styles' => array( - 'subsilver2' => array( - 'imageset' => array( - 'en' => '', - ), - 'template' => '', - 'theme' => array( - 'images' => '', - ), - ), - 'prosilver' => array( - 'imageset' => array( - 'en' => '', - ), - 'template' => '', - 'theme' => array( - 'images' => '', - ), - ), - ), - ); - - // Files to remove (not include within package) - $this->files_to_remove = array(); //array('includes/utf/data/recode_cjk.php'); - - // Files within the main directory to copy - do not include config.php - $this->files_to_copy = array( - '.htaccess', 'common.php', 'cron.php', 'faq.php', 'feed.php', 'index.php', 'mcp.php', 'memberlist.php', 'posting.php', 'report.php', - 'search.php', 'style.php', 'ucp.php', 'viewforum.php', 'viewonline.php', 'viewtopic.php' - ); - - // These files/directories will be removed and not used for creating the patch files - $this->remove_from_diff_structure = array( - 'config.php', 'cache', 'docs', 'files', 'install', 'store', 'develop' - ); - - // Writeable directories - $this->writeable = array('cache', 'store', 'images/avatars/upload', 'files'); - - // Fill the rest of the files_to_copy array - foreach ($this->clean_directory_structure as $cur_dir => $dir_struct) - { - $this->_fill_files_to_copy($this->locations['new_version'] . $cur_dir, $cur_dir, $dir_struct); + $this->old_packages['release-' . $package_version] = $package_version . '_to_'; } } @@ -192,66 +83,6 @@ class build_package return $this->package_infos[$var]; } - function _fill_files_to_copy($directory, $cur_dir, $dir_struct) - { - $dh = opendir($directory); - - while ($file = readdir($dh)) - { - if (is_file($directory . '/' . $file) && $file != '.' && $file != '..') - { - $_loc = str_replace($this->locations['new_version'], '', $directory . '/' . $file); - - if (in_array($_loc, $this->files_to_remove)) - { - continue; - } - - $this->files_to_copy[] = $cur_dir . '/' . $file; - } - } - closedir($dh); - - if (is_array($dir_struct)) - { - foreach ($dir_struct as $_cur_dir => $_dir_struct) - { - $this->_fill_files_to_copy($directory . '/' . $_cur_dir, $cur_dir . '/' . $_cur_dir, $_dir_struct); - } - } - } - - function adjust_permissions($directory) - { - $dh = opendir($directory); - - while ($file = readdir($dh)) - { - if ($file == '.' || $file == '..' || $file == '.svn') - { - continue; - } - - // If file, then 644 - if (is_file($directory . '/' . $file)) - { - chmod($directory . '/' . $file, 0644); - } - else if (is_dir($directory . '/' . $file)) - { - $_loc = str_replace($this->package_infos['dest_dir'] . '/', '', $directory . '/' . $file); - - // If directory is within the writeable chmod to 777, else 755 - $mode = (in_array($_loc, $this->writeable)) ? 0777 : 0755; - chmod($directory . '/' . $file, $mode); - - // Now traverse to the directory - $this->adjust_permissions($directory . '/' . $file); - } - } - closedir($dh); - } - function begin_status($headline) { if ($this->status_begun) diff --git a/build/package.php b/build/package.php index a0da6404c6..2615d983b2 100755 --- a/build/package.php +++ b/build/package.php @@ -9,14 +9,17 @@ * */ -// The only thing i need to adjust. ;) -// Please always add the latest version number to the end -// Only have 5 releases here... -// If RC8 drops remove the install/data directory -//$versions = array('3.0.2', '3.0.3-RC1', '3.0.3', '3.0.4-RC1', '3.0.4', '3.0.5-RC1', '3.0.5', '3.0.6-RC1', '3.0.6-RC2', '3.0.6-RC3'); -//$versions = array('3.0.2', '3.0.3', '3.0.4', '3.0.5', '3.0.6', '3.0.7-RC1', '3.0.7'); -$versions = array('3.0.2', '3.0.3', '3.0.4', '3.0.5', '3.0.6', '3.0.7-RC1', '3.0.7-RC2', '3.0.7', '3.0.7-PL1'); -$verbose = false; +//$versions = array('3.0.2', '3.0.3', '3.0.4', '3.0.5', '3.0.6', '3.0.7-RC1', '3.0.7-RC2', '3.0.7', '3.0.7-PL1'); + +if ($_SERVER['argc'] < 2) +{ + die("Please specify a list of versions as the first argument (e.g. package.php '1.0.0, 1.0.1, 1.0.2')."); +} + +$versions = explode(',', $_SERVER['argv'][1]); +$versions = array_map('trim', $versions); + +$verbose = true; require('build_helper.php'); @@ -25,130 +28,6 @@ $package = new build_package($versions, $verbose); echo "Building Release Packages\n"; echo "Now all three package types (patch, files, release) are built as well as the update package (update).\n"; -$package->begin_status('Remove temporary files'); - -// Cleanup... -$package->run_command('rm -Rv ' . $package->get('dest_dir')); -$package->run_command('rm -Rv ' . $package->get('diff_dir')); -$package->run_command('rm -Rv ' . $package->get('patch_directory')); -$package->run_command('rm -Rv ' . $package->get('files_directory')); -$package->run_command('rm -Rv ' . $package->get('update_directory')); -$package->run_command('rm -Rv ' . $package->get('release_directory')); - -$package->begin_status('Create new directories'); - -// Make sure the directories got removed -while (file_exists($package->get('update_directory'))) -{ - sleep(1); -} - -if (!file_exists($package->get('dest_dir'))) -{ - $package->run_command('mkdir ' . $package->get('dest_dir')); -} - -if (!file_exists($package->get('diff_dir'))) -{ - $package->run_command('mkdir ' . $package->get('diff_dir')); -} - -if (!file_exists($package->get('patch_directory'))) -{ - $package->run_command('mkdir ' . $package->get('patch_directory')); -} - -if (!file_exists($package->get('files_directory'))) -{ - $package->run_command('mkdir ' . $package->get('files_directory')); -} - -if (!file_exists($package->get('update_directory'))) -{ - $package->run_command('mkdir ' . $package->get('update_directory')); -} - -if (!file_exists($package->get('release_directory'))) -{ - $package->run_command('mkdir ' . $package->get('release_directory')); -} - -$package->begin_status('Copy release files to clean release directory'); - -// Create config.php file -$package->run_command('touch ' . $package->get('dest_dir') . '/config.php'); -//$package->run_command('sudo chown www-data:www-data ' . $package->get('dest_dir') . '/config.php'); - -// Create new directory structure -foreach ($package->clean_directory_structure as $dir => $dir_struct) -{ - $package->create_directory($package->get('dest_dir') . '/' . $dir, $dir_struct); -} - -// First step is to copy the new version over (clean structure) -foreach ($package->files_to_copy as $file) -{ - $source_file = $package->locations['new_version'] . $file; - $dest_file = $package->get('dest_dir') . '/' . $file; - - $package->run_command("cp -p $source_file $dest_file"); -} - -// fix line endings -chdir($package->get('dest_dir')); -$package->run_command($package->locations['new_version'] . 'develop/fix_files.sh'); - -// Now clean up the permissions -$package->begin_status('Adjust permissions'); - -$package->adjust_permissions($package->get('dest_dir')); - -// Now create a version for diffing the version - copy the tree over to old_versions... -$package->begin_status('Create diff directory for obtaining file differences'); - -$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/* ' . $package->get('diff_dir')); -$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/.htaccess ' . $package->get('diff_dir')); - -// Cleanup diff directory (only contents to diff) -foreach ($package->remove_from_diff_structure as $remove_dir) -{ - $package->run_command('rm -Rv ' . $package->get('diff_dir') . '/' . $remove_dir); -} - -// Now, first of all we need to rebuild all old packages we want to support -foreach ($package->old_packages as $package_name => $tag_name) -{ - $package->begin_status('Create old packages directory for diffing to ' . $package_name); - - chdir($package->locations['old_versions']); - - if (is_dir($package->locations['old_versions'] . $package_name)) - { - $package->run_command('rm -Rv ' . $package->locations['old_versions'] . $package_name); - } - - // Now, create a new one... - $tag_name = 'release_' . str_replace(array('.', '_to_'), array('_', ''), $tag_name); - - $package->run_command('svn export --non-interactive http://code.phpbb.com/svn/phpbb/tags/' . $tag_name . '/phpBB/ ' . $package_name); - - $location = $package->locations['old_versions'] . $package_name; - chdir($location . '/'); - - $package->run_command($package->locations['new_version'] . 'develop/fix_files.sh'); - - // Now clean up the permissions - $package->begin_status('Adjust permissions for package ' . $package_name); - - $package->adjust_permissions($location); - - // Cleanup diff directory (only contents to diff) - foreach ($package->remove_from_diff_structure as $remove_dir) - { - $package->run_command('rm -Rv ' . $location . '/' . $remove_dir); - } -} - // Go trough all versions making a diff if we even have old versions // For phpBB 3.0.x we might choose a different update method, rendering the things below useless... if (sizeof($package->old_packages)) @@ -160,10 +39,7 @@ if (sizeof($package->old_packages)) foreach ($package->old_packages as $_package_name => $dest_package_filename) { - $package->begin_status('Creating patch/diff files for phpBB-' . $dest_package_filename . $package->get('new_version_number')); - - $dest_package_filename = $package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch'; - $package->run_command('diff ' . $package->diff_options . ' ' . $_package_name . ' ' . $package->get('simple_name') . ' > ' . $dest_package_filename); + $package->begin_status('Parsing patch/diff files for phpBB-' . $dest_package_filename . $package->get('new_version_number')); // Parse this diff to determine file changes from the checked versions and save them $diff_file_changes[$_package_name] = $package->collect_diff_files($dest_package_filename, $_package_name); @@ -404,7 +280,6 @@ if (sizeof($package->old_packages)) foreach ($compress_programs as $extension => $compress_command) { $package->begin_status('Packaging phpBB Patch Files for ' . $extension); - $package->run_command('rm -v ../release_files/' . $package->get('release_filename') . '-patch.' . $extension); // Build Package $package->run_command($compress_command . ' ../release_files/' . $package->get('release_filename') . '-patch.' . $extension . ' *'); @@ -420,7 +295,6 @@ if (sizeof($package->old_packages)) { $package->begin_status('Packaging phpBB Files for ' . $extension); - $package->run_command('rm -v ../release_files/' . $package->get('release_filename') . '-files.' . $extension); $package->run_command('mkdir ' . $package->get('files_directory') . '/release'); $package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $package->get('files_directory') . '/release'); $package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $package->get('files_directory') . '/release'); @@ -457,7 +331,6 @@ if (sizeof($package->old_packages)) $package->begin_status('Packaging phpBB Update for ' . $extension); - $package->run_command('rm -v ../release_files/' . $package->get('release_filename') . '-update.' . $extension); $package->run_command('mkdir ' . $package->get('update_directory') . '/release'); // Pack update files @@ -521,7 +394,6 @@ foreach ($compress_programs as $extension => $compress_command) // Microsoft Web PI packaging $package->begin_status('Packaging phpBB for Microsoft WebPI'); $file = './release_files/' . $package->get('release_filename') . '.webpi.zip'; -$package->run_command("rm -v $file"); $package->run_command('cp -p ./release_files/' . $package->get('release_filename') . ".zip $file"); $package->run_command('cd ./../webpi && ' . $compress_programs['zip'] . " ./../new_version/$file *"); $package->run_command("md5sum $file > $file.md5");