mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
Adding the phpBB build script. This is the latest version of the script Meik has been using for releases of phpBB. I've made a few smaller changes to make its output work on the CLI and for it to work when located inside a working directory. Various notices/warnings etc. have been fixed, too. We probably want to make some more major changes to the script, at the moment it seems a little difficult to follow exactly what it does.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10465 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
926d0f980e
commit
9487673f9c
4 changed files with 3091 additions and 0 deletions
408
build/build_diff.php
Executable file
408
build/build_diff.php
Executable file
|
@ -0,0 +1,408 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package build
|
||||||
|
* @version $Id$
|
||||||
|
* @copyright (c) 2010 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// CONFIG - Begin
|
||||||
|
$substitute_old = '3.0.6';
|
||||||
|
$substitute_new = '3.0.7-RC1';
|
||||||
|
$simple_name_old = 'phpbb306';
|
||||||
|
$simple_name_new = 'phpbb307-RC1';
|
||||||
|
$echo_changes = false;
|
||||||
|
// Set this to true to just compress the changes and do not build them again
|
||||||
|
// This should be used for building custom modified txt file. ;)
|
||||||
|
$package_changed_files = false;
|
||||||
|
// CONFIG - End
|
||||||
|
|
||||||
|
//$debug_file = 'includes/functions_user.php'; //'styles/prosilver/style.cfg';
|
||||||
|
$debug_file = false;
|
||||||
|
|
||||||
|
if ($debug_file !== false)
|
||||||
|
{
|
||||||
|
$echo_changes = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$s_name = 'save_' . $substitute_old . '_to_' . $substitute_new;
|
||||||
|
|
||||||
|
$location = dirname(__FILE__);
|
||||||
|
|
||||||
|
if (!$package_changed_files)
|
||||||
|
{
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
// Cleanup...
|
||||||
|
run_command("rm -R $location/save/*");
|
||||||
|
|
||||||
|
// Create directory...
|
||||||
|
run_command("mkdir $location/save/{$s_name}");
|
||||||
|
run_command("mkdir $location/save/{$s_name}/language");
|
||||||
|
run_command("mkdir $location/save/{$s_name}/prosilver");
|
||||||
|
run_command("mkdir $location/save/{$s_name}/subsilver2");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build code changes and place them into 'save'
|
||||||
|
if (!$package_changed_files)
|
||||||
|
{
|
||||||
|
build_code_changes('language');
|
||||||
|
build_code_changes('prosilver');
|
||||||
|
build_code_changes('subsilver2');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Package code changes
|
||||||
|
$code_changes_filename = 'phpBB-' . $substitute_old . '_to_' . $substitute_new . '-codechanges';
|
||||||
|
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
// Now compress the files...
|
||||||
|
// Build Main phpBB Release
|
||||||
|
$compress_programs = array(
|
||||||
|
// 'tar.gz' => 'tar -czf',
|
||||||
|
'tar.bz2' => 'tar -cjf',
|
||||||
|
'zip' => 'zip -r'
|
||||||
|
);
|
||||||
|
|
||||||
|
chdir($location . '/save/' . $s_name);
|
||||||
|
foreach ($compress_programs as $extension => $compress_command)
|
||||||
|
{
|
||||||
|
echo "Packaging code changes for $extension\n";
|
||||||
|
run_command("rm ./../../release_files/{$code_changes_filename}.{$extension}");
|
||||||
|
flush();
|
||||||
|
|
||||||
|
// Build Package
|
||||||
|
run_command("$compress_command ./../../release_files/{$code_changes_filename}.{$extension} *");
|
||||||
|
|
||||||
|
// Build MD5 Sum
|
||||||
|
run_command("md5sum ./../../release_files/{$code_changes_filename}.{$extension} > ./../../release_files/{$code_changes_filename}.{$extension}.md5");
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* $output_format can be: language, prosilver and subsilver2
|
||||||
|
*/
|
||||||
|
function build_code_changes($output_format)
|
||||||
|
{
|
||||||
|
global $substitute_new, $substitute_old, $simple_name_old, $simple_name_new, $echo_changes, $package_changed_files, $location, $debug_file, $s_name;
|
||||||
|
|
||||||
|
// Global array holding the data entries
|
||||||
|
$data = array(
|
||||||
|
'header' => array(),
|
||||||
|
'diff' => array(),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Read diff file and prepare the output filedata...
|
||||||
|
//$patch_filename = '../new_version/patches/phpBB-' . $substitute_old . '_to_' . $substitute_new . '.patch';
|
||||||
|
$release_filename = 'phpbb-' . $substitute_old . '_to_' . $substitute_new . '_' . $output_format . '.txt';
|
||||||
|
|
||||||
|
if (!$package_changed_files)
|
||||||
|
{
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
$fp = fopen('save/' . $s_name . '/' . $output_format . '/' . $release_filename, 'wb');
|
||||||
|
|
||||||
|
if (!$fp)
|
||||||
|
{
|
||||||
|
die('Unable to create ' . $release_filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once($location . '/build_helper.php');
|
||||||
|
$package = new build_package(array($substitute_old, $substitute_new), false);
|
||||||
|
|
||||||
|
$titles = array(
|
||||||
|
'language' => 'phpBB ' . $substitute_old . ' to phpBB ' . $substitute_new . ' Language Pack Changes',
|
||||||
|
'prosilver' => 'phpBB ' . $substitute_old . ' to phpBB ' . $substitute_new . ' prosilver Changes',
|
||||||
|
'subsilver2' => 'phpBB ' . $substitute_old . ' to phpBB ' . $substitute_new . ' subsilver2 Changes',
|
||||||
|
);
|
||||||
|
|
||||||
|
$data['header'] = array(
|
||||||
|
'title' => $titles[$output_format],
|
||||||
|
'intro' => '
|
||||||
|
|
||||||
|
These are the ' . $titles[$output_format] . ' summed up into a little Mod. These changes are only partial and do not include any code changes, therefore not meant for updating phpBB.
|
||||||
|
|
||||||
|
',
|
||||||
|
'included_files' => array(),
|
||||||
|
);
|
||||||
|
|
||||||
|
// We collect the files we want to diff first (ironically we grab this from a diff file)
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
echo "\n\nCollecting Filenames:";
|
||||||
|
}
|
||||||
|
|
||||||
|
// We re-create the patch file
|
||||||
|
foreach ($package->old_packages as $_package_name => $dest_package_filename)
|
||||||
|
{
|
||||||
|
chdir($package->locations['old_versions']);
|
||||||
|
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
echo "\n\n" . 'Creating patch/diff files for phpBB-' . $dest_package_filename . $package->get('new_version_number');
|
||||||
|
}
|
||||||
|
|
||||||
|
$dest_package_filename = $location . '/save/' . $s_name . '/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);
|
||||||
|
|
||||||
|
// Parse this diff to determine file changes from the checked versions and save them
|
||||||
|
$result = $package->collect_diff_files($dest_package_filename, $_package_name);
|
||||||
|
$package->run_command('rm ' . $dest_package_filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
chdir($location);
|
||||||
|
|
||||||
|
$filenames = array();
|
||||||
|
foreach ($result['files'] as $filename)
|
||||||
|
{
|
||||||
|
if ($debug_file !== false && $filename != $debug_file)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decide which files to compare...
|
||||||
|
switch ($output_format)
|
||||||
|
{
|
||||||
|
case 'language':
|
||||||
|
if (strpos($filename, 'language/en/') !== 0)
|
||||||
|
{
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'prosilver':
|
||||||
|
if (strpos($filename, 'styles/prosilver/') !== 0)
|
||||||
|
{
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'subsilver2':
|
||||||
|
if (strpos($filename, 'styles/subsilver2/') !== 0)
|
||||||
|
{
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file_exists($location . '/old_versions/' . $simple_name_old . '/' . $filename))
|
||||||
|
{
|
||||||
|
// New file... include it
|
||||||
|
$data['header']['included_files'][] = array(
|
||||||
|
'old' => $location . '/old_versions/' . $simple_name_old . '/' . $filename,
|
||||||
|
'new' => $location . '/old_versions/' . $simple_name_new . '/' . $filename,
|
||||||
|
'phpbb_filename' => $filename,
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$filenames[] = array(
|
||||||
|
'old' => $location . '/old_versions/' . $simple_name_old . '/' . $filename,
|
||||||
|
'new' => $location . '/old_versions/' . $simple_name_new . '/' . $filename,
|
||||||
|
'phpbb_filename' => $filename,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now let us go through the filenames list and create a more comprehensive diff
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
fwrite($fp, build_header($output_format, $filenames, $data['header']));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//echo build_header('text', $filenames, $data['header']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy files...
|
||||||
|
$files_to_copy = array();
|
||||||
|
|
||||||
|
foreach ($data['header']['included_files'] as $filename)
|
||||||
|
{
|
||||||
|
$files_to_copy[] = $filename['phpbb_filename'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// First step is to copy the new version over (clean structure)
|
||||||
|
if (!$echo_changes && sizeof($files_to_copy))
|
||||||
|
{
|
||||||
|
foreach ($files_to_copy as $file)
|
||||||
|
{
|
||||||
|
// Create directory?
|
||||||
|
$dirname = dirname($file);
|
||||||
|
|
||||||
|
if ($dirname)
|
||||||
|
{
|
||||||
|
$dirname = explode('/', $dirname);
|
||||||
|
$__dir = array();
|
||||||
|
|
||||||
|
foreach ($dirname as $i => $dir)
|
||||||
|
{
|
||||||
|
$__dir[] = $dir;
|
||||||
|
run_command("mkdir -p $location/save/" . $s_name . '/' . $output_format . '/' . implode('/', $__dir));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$source_file = $location . '/new_version/phpBB3/' . $file;
|
||||||
|
$dest_file = $location . '/save/' . $s_name . '/' . $output_format . '/';
|
||||||
|
$dest_file .= $file;
|
||||||
|
|
||||||
|
$command = "cp -p $source_file $dest_file";
|
||||||
|
$result = trim(`$command`);
|
||||||
|
echo "- Copied File: " . $source_file . " -> " . $dest_file . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once('diff_class.php');
|
||||||
|
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
echo "\n\nDiffing Codebases:";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($filenames as $file_ary)
|
||||||
|
{
|
||||||
|
if (!file_exists($file_ary['old']))
|
||||||
|
{
|
||||||
|
$lines1 = array();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$lines1 = file($file_ary['old']);
|
||||||
|
}
|
||||||
|
$lines2 = file($file_ary['new']);
|
||||||
|
|
||||||
|
if (!sizeof($lines1))
|
||||||
|
{
|
||||||
|
// New File
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$diff = new Diff($lines1, $lines2);
|
||||||
|
$fmt = new BBCodeDiffFormatter(false, 5, $debug_file);
|
||||||
|
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
fwrite($fp, $fmt->format_open($file_ary['phpbb_filename']));
|
||||||
|
fwrite($fp, $fmt->format($diff, $lines1));
|
||||||
|
fwrite($fp, $fmt->format_close($file_ary['phpbb_filename']));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo $fmt->format_open($file_ary['phpbb_filename']);
|
||||||
|
echo $fmt->format($diff, $lines1);
|
||||||
|
echo $fmt->format_close($file_ary['phpbb_filename']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($debug_file !== false)
|
||||||
|
{
|
||||||
|
echo $fmt->format_open($file_ary['phpbb_filename']);
|
||||||
|
echo $fmt->format($diff, $lines1);
|
||||||
|
echo $fmt->format_close($file_ary['phpbb_filename']);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$echo_changes)
|
||||||
|
{
|
||||||
|
fwrite($fp, build_footer($output_format));
|
||||||
|
|
||||||
|
// Close file
|
||||||
|
fclose($fp);
|
||||||
|
|
||||||
|
chmod('save/' . $s_name . '/' . $output_format . '/' . $release_filename, 0666);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo build_footer($output_format);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build Footer
|
||||||
|
*/
|
||||||
|
function build_footer($mode)
|
||||||
|
{
|
||||||
|
$html = '';
|
||||||
|
|
||||||
|
$html .= "# \n";
|
||||||
|
$html .= "#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ \n";
|
||||||
|
$html .= "# \n";
|
||||||
|
$html .= "# EoM";
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build Header
|
||||||
|
*/
|
||||||
|
function build_header($mode, $filenames, $header)
|
||||||
|
{
|
||||||
|
global $substitute_old;
|
||||||
|
|
||||||
|
$html = '';
|
||||||
|
|
||||||
|
$html .= "############################################################## \n";
|
||||||
|
$html .= "## Title: " . $header['title'] . "\n";
|
||||||
|
$html .= "## Author: naderman < naderman@phpbb.com > (Nils Adermann) http://www.phpbb.com \n";
|
||||||
|
$html .= "## Description: \n";
|
||||||
|
|
||||||
|
$intr = explode("\n", $header['intro']);
|
||||||
|
$introduction = '';
|
||||||
|
foreach ($intr as $_line)
|
||||||
|
{
|
||||||
|
$introduction .= wordwrap($_line, 80) . "\n";
|
||||||
|
}
|
||||||
|
$intr = explode("\n", $introduction);
|
||||||
|
|
||||||
|
foreach ($intr as $_line)
|
||||||
|
{
|
||||||
|
$html .= "## " . $_line . "\n";
|
||||||
|
}
|
||||||
|
$html .= "## \n";
|
||||||
|
$html .= "## Files To Edit: \n";
|
||||||
|
|
||||||
|
foreach ($filenames as $file_ary)
|
||||||
|
{
|
||||||
|
$html .= "## " . $file_ary['phpbb_filename'] . "\n";
|
||||||
|
}
|
||||||
|
$html .= "##\n";
|
||||||
|
if (sizeof($header['included_files']))
|
||||||
|
{
|
||||||
|
$html .= "## Included Files: \n";
|
||||||
|
foreach ($header['included_files'] as $filename)
|
||||||
|
{
|
||||||
|
$html .= "## {$filename['phpbb_filename']}\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$html .= "## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2 \n";
|
||||||
|
$html .= "############################################################## \n";
|
||||||
|
$html .= "\n";
|
||||||
|
|
||||||
|
// COPY Statement?
|
||||||
|
if (sizeof($header['included_files']))
|
||||||
|
{
|
||||||
|
$html .= "#\n#-----[ COPY ]------------------------------------------\n#\n";
|
||||||
|
foreach ($header['included_files'] as $filename)
|
||||||
|
{
|
||||||
|
$html .= "copy {$filename['phpbb_filename']} to {$filename['phpbb_filename']}\n";
|
||||||
|
}
|
||||||
|
$html .= "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_command($command)
|
||||||
|
{
|
||||||
|
$result = trim(`$command`);
|
||||||
|
echo "\n- Command Run: " . $command . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
485
build/build_helper.php
Normal file
485
build/build_helper.php
Normal file
|
@ -0,0 +1,485 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package build
|
||||||
|
* @version $Id$
|
||||||
|
* @copyright (c) 2010 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
class build_package
|
||||||
|
{
|
||||||
|
var $package_infos;
|
||||||
|
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
|
||||||
|
// -N - Treat missing files as empty
|
||||||
|
// -E - Ignore tab expansions
|
||||||
|
// not used: -b - Ignore space changes.
|
||||||
|
// -w - Ignore all whitespace
|
||||||
|
// -B - Ignore blank lines
|
||||||
|
// -d - Try to find smaller set of changes
|
||||||
|
var $diff_options = '-crNEBwd';
|
||||||
|
var $diff_options_long = '-x images -crNEB'; // -x fonts -x imageset //imageset not used here, because it includes the imageset.cfg file. ;)
|
||||||
|
|
||||||
|
var $verbose = false;
|
||||||
|
var $status_begun = false;
|
||||||
|
var $num_dots = 0;
|
||||||
|
|
||||||
|
function build_package($versions, $verbose = false)
|
||||||
|
{
|
||||||
|
$this->versions = $versions;
|
||||||
|
$this->verbose = $verbose;
|
||||||
|
|
||||||
|
// Get last two entries
|
||||||
|
$_latest = $this->versions[sizeof($this->versions) - 1];
|
||||||
|
$_before = $this->versions[sizeof($this->versions) - 2];
|
||||||
|
|
||||||
|
$this->locations = array(
|
||||||
|
'new_version' => dirname(dirname(__FILE__)) . '/phpBB/',
|
||||||
|
'old_versions' => dirname(__FILE__) . '/old_versions/',
|
||||||
|
'root' => dirname(__FILE__) . '/',
|
||||||
|
'package_dir' => dirname(__FILE__) . '/new_version/'
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->package_infos = array(
|
||||||
|
'package_name' => 'phpBB3',
|
||||||
|
'name_prefix' => 'phpbb',
|
||||||
|
'simple_name' => 'phpbb' . str_replace('.', '', $_latest),
|
||||||
|
'new_version_number' => $_latest,
|
||||||
|
'short_version_number' => str_replace('.', '', $_latest),
|
||||||
|
'release_filename' => 'phpBB-' . $_latest,
|
||||||
|
'last_version' => 'phpbb' . str_replace('.', '', $_before),
|
||||||
|
'last_version_number' => $_before,
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->package_infos['dest_dir'] = $this->locations['package_dir'] . $this->package_infos['package_name'];
|
||||||
|
$this->package_infos['diff_dir'] = $this->locations['old_versions'] . $this->package_infos['simple_name'];
|
||||||
|
$this->package_infos['patch_directory'] = $this->locations['package_dir'] . 'patches';
|
||||||
|
$this->package_infos['files_directory'] = $this->locations['package_dir'] . 'files';
|
||||||
|
$this->package_infos['update_directory'] = $this->locations['package_dir'] . 'update';
|
||||||
|
$this->package_infos['release_directory'] = $this->locations['package_dir'] . 'release_files';
|
||||||
|
|
||||||
|
// Old packages always exclude the latest version. ;)
|
||||||
|
$this->old_packages = array();
|
||||||
|
|
||||||
|
foreach ($this->versions as $package_version)
|
||||||
|
{
|
||||||
|
if ($package_version == $_latest)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get($var)
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
echo "\nDone.\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->num_dots = 0;
|
||||||
|
|
||||||
|
echo $headline . "\n ";
|
||||||
|
|
||||||
|
$this->status_begun = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_command($command)
|
||||||
|
{
|
||||||
|
$result = trim(`$command`);
|
||||||
|
|
||||||
|
if ($this->verbose)
|
||||||
|
{
|
||||||
|
echo " command : " . getcwd() . '$ ' . $command . "\n";
|
||||||
|
echo " result : " . $result . "\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($this->num_dots > 70)
|
||||||
|
{
|
||||||
|
echo "\n";
|
||||||
|
$this->num_dots = 0;
|
||||||
|
}
|
||||||
|
echo '.';
|
||||||
|
$this->num_dots++;
|
||||||
|
}
|
||||||
|
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_directory($directory, $dir_struct)
|
||||||
|
{
|
||||||
|
if (!file_exists($directory))
|
||||||
|
{
|
||||||
|
$this->run_command("mkdir $directory");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($dir_struct))
|
||||||
|
{
|
||||||
|
foreach ($dir_struct as $_dir => $_dir_struct)
|
||||||
|
{
|
||||||
|
$this->create_directory($directory . '/' . $_dir, $_dir_struct);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function collect_diff_files($diff_filename, $package_name)
|
||||||
|
{
|
||||||
|
$diff_result = $binary = array();
|
||||||
|
$diff_contents = file($diff_filename);
|
||||||
|
|
||||||
|
$special_diff_contents = array();
|
||||||
|
|
||||||
|
foreach ($diff_contents as $num => $line)
|
||||||
|
{
|
||||||
|
$line = trim($line);
|
||||||
|
|
||||||
|
if (!$line)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special diff content?
|
||||||
|
if (strpos($line, 'diff ' . $this->diff_options . ' ') === 0 || strpos($line, '*** ') === 0 || strpos($line, '--- ') === 0 || (strpos($line, ' Exp $') !== false && strpos($line, '$Id:') !== false))
|
||||||
|
{
|
||||||
|
$special_diff_contents[] = $line;
|
||||||
|
}
|
||||||
|
else if (strpos($line, 'diff ' . $this->diff_options . ' ') === 0 || strpos($line, '*** ') === 0 || strpos($line, '--- ') === 0 || (strpos($line, ' Exp $') !== false && strpos($line, '$Id:') !== false) || (strpos($line, ' $') !== false && strpos($line, '$Id:') !== false))
|
||||||
|
{
|
||||||
|
$special_diff_contents[] = $line;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is diffing line?
|
||||||
|
if (strstr($line, 'diff ' . $this->diff_options . ' '))
|
||||||
|
{
|
||||||
|
$next_line = $diff_contents[$num+1];
|
||||||
|
if (strpos($next_line, '***') === 0)
|
||||||
|
{
|
||||||
|
// *** phpbb208/admin/admin_board.php Sat Jul 10 20:16:26 2004
|
||||||
|
$next_line = explode("\t", $next_line);
|
||||||
|
$next_line = trim($next_line[0]);
|
||||||
|
$next_line = str_replace('*** ' . $package_name . '/', '', $next_line);
|
||||||
|
$diff_result[] = $next_line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is binary?
|
||||||
|
if (preg_match('/^Binary files ' . $package_name . '\/(.*) and [a-z0-9_-]+\/\1 differ/i', $line, $match))
|
||||||
|
{
|
||||||
|
$binary[] = trim($match[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now go through the list again and find out which files have how many changes...
|
||||||
|
$num_changes = array();
|
||||||
|
|
||||||
|
/* [1070] => diff -crN phpbb200/includes/usercp_avatar.php phpbb2023/includes/usercp_avatar.php
|
||||||
|
[1071] => *** phpbb200/includes/usercp_avatar.php Sat Jul 10 20:16:13 2004
|
||||||
|
[1072] => --- phpbb2023/includes/usercp_avatar.php Wed Feb 6 22:28:04 2008
|
||||||
|
[1073] => *** 6,12 ****
|
||||||
|
[1074] => ! * $Id$
|
||||||
|
[1075] => --- 6,12 ----
|
||||||
|
[1076] => *** 51,59 ****
|
||||||
|
[1077] => --- 51,60 ----
|
||||||
|
[1078] => *** 62,80 ****
|
||||||
|
[1079] => --- 63,108 ----
|
||||||
|
[1080] => *** 87,97 ****
|
||||||
|
*/
|
||||||
|
while (($line = array_shift($special_diff_contents)) !== NULL)
|
||||||
|
{
|
||||||
|
$line = trim($line);
|
||||||
|
|
||||||
|
if (!$line)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is diffing line?
|
||||||
|
if (strstr($line, 'diff ' . $this->diff_options . ' '))
|
||||||
|
{
|
||||||
|
$next_line = array_shift($special_diff_contents);
|
||||||
|
if (strpos($next_line, '*** ') === 0)
|
||||||
|
{
|
||||||
|
// *** phpbb208/admin/admin_board.php Sat Jul 10 20:16:26 2004
|
||||||
|
$next_line = explode("\t", $next_line);
|
||||||
|
$next_line = trim($next_line[0]);
|
||||||
|
$next_line = str_replace('*** ' . $package_name . '/', '', $next_line);
|
||||||
|
|
||||||
|
$is_reached = false;
|
||||||
|
$prev_line = '';
|
||||||
|
|
||||||
|
while (!$is_reached)
|
||||||
|
{
|
||||||
|
$line = array_shift($special_diff_contents);
|
||||||
|
|
||||||
|
if (strpos($line, 'diff ' . $this->diff_options) === 0 || empty($special_diff_contents))
|
||||||
|
{
|
||||||
|
$is_reached = true;
|
||||||
|
array_unshift($special_diff_contents, $line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos($line, '*** ') === 0 && strpos($line, ' ****') !== false)
|
||||||
|
{
|
||||||
|
$is_comment = false;
|
||||||
|
while (!(strpos($line, '--- ') === 0 && strpos($line, ' ----') !== false))
|
||||||
|
{
|
||||||
|
$line = array_shift($special_diff_contents);
|
||||||
|
if (strpos($line, ' Exp $') !== false || strpos($line, '$Id:') !== false)
|
||||||
|
{
|
||||||
|
$is_comment = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$is_comment)
|
||||||
|
{
|
||||||
|
if (!isset($num_changes[$next_line]))
|
||||||
|
{
|
||||||
|
$num_changes[$next_line] = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$num_changes[$next_line]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now remove those results not having changes
|
||||||
|
$return = array();
|
||||||
|
|
||||||
|
foreach ($diff_result as $key => $value)
|
||||||
|
{
|
||||||
|
if (isset($num_changes[$value]))
|
||||||
|
{
|
||||||
|
$return[] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($binary as $value)
|
||||||
|
{
|
||||||
|
$return[] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$diff_result = $return;
|
||||||
|
unset($return);
|
||||||
|
unset($special_diff_contents);
|
||||||
|
|
||||||
|
$result = array(
|
||||||
|
'files' => array(),
|
||||||
|
'binary' => array(),
|
||||||
|
'all' => $diff_result,
|
||||||
|
);
|
||||||
|
|
||||||
|
$binary_extensions = array('gif', 'jpg', 'jpeg', 'png', 'ttf');
|
||||||
|
|
||||||
|
// Split into file and binary
|
||||||
|
foreach ($diff_result as $filename)
|
||||||
|
{
|
||||||
|
if (strpos($filename, '.') === false)
|
||||||
|
{
|
||||||
|
$result['files'][] = $filename;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$extension = explode('.', $filename);
|
||||||
|
$extension = array_pop($extension);
|
||||||
|
|
||||||
|
if (in_array($extension, $binary_extensions))
|
||||||
|
{
|
||||||
|
$result['binary'][] = $filename;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$result['files'][] = $filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
}
|
1677
build/diff_class.php
Normal file
1677
build/diff_class.php
Normal file
File diff suppressed because it is too large
Load diff
521
build/package.php
Executable file
521
build/package.php
Executable file
|
@ -0,0 +1,521 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package build
|
||||||
|
* @version $Id$
|
||||||
|
* @copyright (c) 2010 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 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-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', '3.0.6-RC4', '3.0.6', '3.0.7-RC1');
|
||||||
|
$verbose = false;
|
||||||
|
|
||||||
|
require('build_helper.php');
|
||||||
|
|
||||||
|
$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))
|
||||||
|
{
|
||||||
|
chdir($package->locations['old_versions']);
|
||||||
|
|
||||||
|
// This array is for holding the filenames change
|
||||||
|
$diff_file_changes = array();
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now put those files determined within the correct directories
|
||||||
|
foreach ($diff_file_changes as $_package_name => $file_contents)
|
||||||
|
{
|
||||||
|
$package->begin_status('Creating files-only informations for ' . $package->old_packages[$_package_name] . $package->get('new_version_number'));
|
||||||
|
|
||||||
|
$dest_filename_dir = $package->get('files_directory') . '/' . $package->old_packages[$_package_name] . $package->get('new_version_number');
|
||||||
|
|
||||||
|
if (!file_exists($dest_filename_dir))
|
||||||
|
{
|
||||||
|
$package->run_command('mkdir ' . $dest_filename_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now copy the file contents
|
||||||
|
foreach ($file_contents['all'] as $file)
|
||||||
|
{
|
||||||
|
$source_filename = $package->get('dest_dir') . '/' . $file;
|
||||||
|
$dest_filename = $dest_filename_dir . '/' . $file;
|
||||||
|
|
||||||
|
// Create Directories along the way?
|
||||||
|
$file = explode('/', $file);
|
||||||
|
// Remove filename portion
|
||||||
|
$file[sizeof($file)-1] = '';
|
||||||
|
|
||||||
|
chdir($dest_filename_dir);
|
||||||
|
foreach ($file as $entry)
|
||||||
|
{
|
||||||
|
$entry = trim($entry);
|
||||||
|
if ($entry)
|
||||||
|
{
|
||||||
|
if (!file_exists('./' . $entry))
|
||||||
|
{
|
||||||
|
$package->run_command('mkdir ' . $entry);
|
||||||
|
}
|
||||||
|
chdir('./' . $entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$package->run_command('cp ' . $source_filename . ' ' . $dest_filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Because there might be binary changes, we re-create the patch files... without parsing file differences.
|
||||||
|
$package->run_command('rm -Rv ' . $package->get('patch_directory'));
|
||||||
|
|
||||||
|
if (!file_exists($package->get('patch_directory')))
|
||||||
|
{
|
||||||
|
$package->run_command('mkdir ' . $package->get('patch_directory'));
|
||||||
|
}
|
||||||
|
|
||||||
|
chdir($package->locations['old_versions']);
|
||||||
|
|
||||||
|
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_long . ' ' . $_package_name . ' ' . $package->get('simple_name') . ' > ' . $dest_package_filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
$packages = $diff_file_changes;
|
||||||
|
|
||||||
|
foreach ($packages as $_package_name => $file_contents)
|
||||||
|
{
|
||||||
|
$package->begin_status('Building specific update files for ' . $package->old_packages[$_package_name] . $package->get('new_version_number'));
|
||||||
|
|
||||||
|
$dest_filename_dir = $package->get('update_directory') . '/' . $package->old_packages[$_package_name] . $package->get('new_version_number');
|
||||||
|
|
||||||
|
if (!file_exists($dest_filename_dir))
|
||||||
|
{
|
||||||
|
$package->run_command('mkdir ' . $dest_filename_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $dest_filename_dir);
|
||||||
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $dest_filename_dir);
|
||||||
|
|
||||||
|
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update');
|
||||||
|
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update/old');
|
||||||
|
$package->run_command('mkdir ' . $dest_filename_dir . '/install/update/new');
|
||||||
|
|
||||||
|
// Remove some files
|
||||||
|
$package->run_command('rm -v ' . $dest_filename_dir . '/install/install_install.php');
|
||||||
|
$package->run_command('rm -v ' . $dest_filename_dir . '/install/install_convert.php');
|
||||||
|
$package->run_command('rm -Rv ' . $dest_filename_dir . '/install/schemas');
|
||||||
|
$package->run_command('rm -Rv ' . $dest_filename_dir . '/install/convertors');
|
||||||
|
|
||||||
|
foreach ($file_contents['all'] as $index => $file)
|
||||||
|
{
|
||||||
|
if (strpos($file, 'recode_cjk') !== false)
|
||||||
|
{
|
||||||
|
unset($file_contents['all'][$index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// First of all, fill the 'old' directory
|
||||||
|
foreach ($file_contents['all'] as $file)
|
||||||
|
{
|
||||||
|
$source_filename = $package->locations['old_versions'] . $_package_name . '/' . $file;
|
||||||
|
$dest_filename = $dest_filename_dir . '/install/update/old/' . $file;
|
||||||
|
|
||||||
|
if (!file_exists($source_filename))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Directories along the way?
|
||||||
|
$file = explode('/', $file);
|
||||||
|
// Remove filename portion
|
||||||
|
$file[sizeof($file)-1] = '';
|
||||||
|
|
||||||
|
chdir($dest_filename_dir . '/install/update/old');
|
||||||
|
foreach ($file as $entry)
|
||||||
|
{
|
||||||
|
$entry = trim($entry);
|
||||||
|
if ($entry)
|
||||||
|
{
|
||||||
|
if (!file_exists('./' . $entry))
|
||||||
|
{
|
||||||
|
$package->run_command('mkdir ' . $entry);
|
||||||
|
}
|
||||||
|
chdir('./' . $entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$package->run_command('cp ' . $source_filename . ' ' . $dest_filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then fill the 'new' directory
|
||||||
|
foreach ($file_contents['all'] as $file)
|
||||||
|
{
|
||||||
|
$source_filename = $package->locations['old_versions'] . $package->get('simple_name') . '/' . $file;
|
||||||
|
$dest_filename = $dest_filename_dir . '/install/update/new/' . $file;
|
||||||
|
|
||||||
|
if (!file_exists($source_filename))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Directories along the way?
|
||||||
|
$file = explode('/', $file);
|
||||||
|
// Remove filename portion
|
||||||
|
$file[sizeof($file)-1] = '';
|
||||||
|
|
||||||
|
chdir($dest_filename_dir . '/install/update/new');
|
||||||
|
foreach ($file as $entry)
|
||||||
|
{
|
||||||
|
$entry = trim($entry);
|
||||||
|
if ($entry)
|
||||||
|
{
|
||||||
|
if (!file_exists('./' . $entry))
|
||||||
|
{
|
||||||
|
$package->run_command('mkdir ' . $entry);
|
||||||
|
}
|
||||||
|
chdir('./' . $entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$package->run_command('cp ' . $source_filename . ' ' . $dest_filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build index.php file for holding the file structure
|
||||||
|
$index_contents = '<?php
|
||||||
|
|
||||||
|
if (!defined(\'IN_PHPBB\'))
|
||||||
|
{
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set update info with file structure to update
|
||||||
|
$update_info = array(
|
||||||
|
\'version\' => array(\'from\' => \'' . str_replace('_to_', '', $package->old_packages[$_package_name]) . '\', \'to\' => \'' . $package->get('new_version_number') . '\'),
|
||||||
|
';
|
||||||
|
|
||||||
|
if (sizeof($file_contents['all']))
|
||||||
|
{
|
||||||
|
$index_contents .= '\'files\' => array(\'' . implode("',\n\t'", $file_contents['all']) . '\'),
|
||||||
|
';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$index_contents .= '\'files\' => array(),
|
||||||
|
';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sizeof($file_contents['binary']))
|
||||||
|
{
|
||||||
|
$index_contents .= '\'binary\' => array(\'' . implode("',\n\t'", $file_contents['binary']) . '\'),
|
||||||
|
';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$index_contents .= '\'binary\' => array(),
|
||||||
|
';
|
||||||
|
}
|
||||||
|
|
||||||
|
$index_contents .= ');
|
||||||
|
|
||||||
|
?' . '>';
|
||||||
|
|
||||||
|
$fp = fopen($dest_filename_dir . '/install/update/index.php', 'wt');
|
||||||
|
fwrite($fp, $index_contents);
|
||||||
|
fclose($fp);
|
||||||
|
}
|
||||||
|
unset($diff_file_changes);
|
||||||
|
|
||||||
|
$package->begin_status('Clean up all install files');
|
||||||
|
|
||||||
|
// Copy the install files to their respective locations
|
||||||
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $package->get('patch_directory'));
|
||||||
|
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $package->get('patch_directory'));
|
||||||
|
|
||||||
|
// Remove some files
|
||||||
|
chdir($package->get('patch_directory') . '/install');
|
||||||
|
|
||||||
|
$package->run_command('rm -v install_install.php');
|
||||||
|
$package->run_command('rm -v install_update.php');
|
||||||
|
$package->run_command('rm -v install_convert.php');
|
||||||
|
$package->run_command('rm -Rv schemas');
|
||||||
|
$package->run_command('rm -Rv convertors');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build Main phpBB Release
|
||||||
|
$compress_programs = array(
|
||||||
|
// 'tar.gz' => 'tar -czf',
|
||||||
|
'tar.bz2' => 'tar -cjf',
|
||||||
|
'zip' => 'zip -r'
|
||||||
|
);
|
||||||
|
|
||||||
|
if (sizeof($package->old_packages))
|
||||||
|
{
|
||||||
|
// Build Patch Files
|
||||||
|
chdir($package->get('patch_directory'));
|
||||||
|
|
||||||
|
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 . ' *');
|
||||||
|
|
||||||
|
// Build MD5 Sum
|
||||||
|
$package->run_command('md5sum ../release_files/' . $package->get('release_filename') . '-patch.' . $extension . ' > ../release_files/' . $package->get('release_filename') . '-patch.' . $extension . '.md5');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build Files Package
|
||||||
|
chdir($package->get('files_directory'));
|
||||||
|
|
||||||
|
foreach ($compress_programs as $extension => $compress_command)
|
||||||
|
{
|
||||||
|
$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');
|
||||||
|
|
||||||
|
$package->run_command('rm -v ' . $package->get('files_directory') . '/release/install/install_install.php');
|
||||||
|
$package->run_command('rm -v ' . $package->get('files_directory') . '/release/install/install_update.php');
|
||||||
|
$package->run_command('rm -v ' . $package->get('files_directory') . '/release/install/install_convert.php');
|
||||||
|
$package->run_command('rm -Rv ' . $package->get('files_directory') . '/release/install/schemas');
|
||||||
|
$package->run_command('rm -Rv ' . $package->get('files_directory') . '/release/install/convertors');
|
||||||
|
|
||||||
|
// Pack files
|
||||||
|
foreach ($package->old_packages as $_package_name => $package_path)
|
||||||
|
{
|
||||||
|
chdir($package_path . $package->get('new_version_number'));
|
||||||
|
$command = ($extension == 'zip') ? 'zip -r' : 'tar cf';
|
||||||
|
$_ext = ($extension == 'zip') ? 'zip' : 'tar';
|
||||||
|
$package->run_command("$command ../release/phpBB-$package_path" . $package->get('new_version_number') . ".$_ext *");
|
||||||
|
chdir('..');
|
||||||
|
}
|
||||||
|
|
||||||
|
chdir('./release');
|
||||||
|
$package->run_command("$compress_command ../../release_files/" . $package->get('release_filename') . '-files.' . $extension . ' *');
|
||||||
|
// Build MD5 Sum
|
||||||
|
$package->run_command('md5sum ../../release_files/' . $package->get('release_filename') . '-files.' . $extension . ' > ../../release_files/' . $package->get('release_filename') . '-files.' . $extension . '.md5');
|
||||||
|
chdir('..');
|
||||||
|
|
||||||
|
$package->run_command('rm -Rv ' . $package->get('files_directory') . '/release');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build Update Package
|
||||||
|
foreach ($compress_programs as $extension => $compress_command)
|
||||||
|
{
|
||||||
|
chdir($package->get('update_directory'));
|
||||||
|
|
||||||
|
$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
|
||||||
|
$packages = $package->old_packages;
|
||||||
|
|
||||||
|
foreach ($packages as $_package_name => $package_path)
|
||||||
|
{
|
||||||
|
chdir($package_path . $package->get('new_version_number'));
|
||||||
|
|
||||||
|
$package->run_command('rm -v install/install_install.php');
|
||||||
|
$package->run_command('rm -v install/install_convert.php');
|
||||||
|
$package->run_command('rm -v includes/utf/data/recode_cjk.php');
|
||||||
|
$package->run_command('rm -Rv install/schemas');
|
||||||
|
$package->run_command('rm -Rv install/convertors');
|
||||||
|
|
||||||
|
$command = ($extension == 'zip') ? 'zip -r' : 'tar cf';
|
||||||
|
$_ext = ($extension == 'zip') ? 'zip' : 'tar';
|
||||||
|
$package->run_command("$command ../release/$package_path" . $package->get('new_version_number') . ".$_ext *");
|
||||||
|
chdir('..');
|
||||||
|
|
||||||
|
$last_version = $package_path . $package->get('new_version_number');
|
||||||
|
|
||||||
|
// chdir('./release');
|
||||||
|
// $package->run_command("$compress_command ../../release_files/" . $package->get('release_filename') . '-update.' . $extension . ' *');
|
||||||
|
// chdir('..');
|
||||||
|
|
||||||
|
chdir('./' . $last_version);
|
||||||
|
// Copy last package over...
|
||||||
|
$package->run_command('rm -v ../release_files/phpBB-' . $last_version . ".$extension");
|
||||||
|
$package->run_command("$compress_command ../../release_files/phpBB-$last_version.$extension *");
|
||||||
|
|
||||||
|
// Build MD5 Sum
|
||||||
|
$package->run_command("md5sum ../../release_files/phpBB-$last_version.$extension > ../../release_files/phpBB-$last_version.$extension.md5");
|
||||||
|
chdir('..');
|
||||||
|
}
|
||||||
|
|
||||||
|
$package->run_command('rm -Rv ' . $package->get('update_directory') . '/release');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete updater and convertor from main archive
|
||||||
|
chdir($package->get('dest_dir') . '/install');
|
||||||
|
|
||||||
|
// $package->run_command('rm -v database_update.php');
|
||||||
|
$package->run_command('rm -v install_update.php');
|
||||||
|
|
||||||
|
chdir($package->locations['package_dir']);
|
||||||
|
foreach ($compress_programs as $extension => $compress_command)
|
||||||
|
{
|
||||||
|
$package->begin_status('Packaging phpBB for ' . $extension);
|
||||||
|
$package->run_command('rm -v ./release_files/' . $package->get('release_filename') . ".{$extension}");
|
||||||
|
|
||||||
|
// Build Package
|
||||||
|
$package->run_command("$compress_command ./release_files/" . $package->get('release_filename') . '.' . $extension . ' ' . $package->get('package_name'));
|
||||||
|
|
||||||
|
// Build MD5 Sum
|
||||||
|
$package->run_command('md5sum ./release_files/' . $package->get('release_filename') . '.' . $extension . ' > ./release_files/' . $package->get('release_filename') . '.' . $extension . '.md5');
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Done.\n";
|
Loading…
Add table
Reference in a new issue