diff options
author | Nils Adermann <naderman@naderman.de> | 2010-11-20 17:00:05 +0100 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2010-11-20 17:00:05 +0100 |
commit | 7f21a5f46156660d7ea6a4bdb59166ac553e2be8 (patch) | |
tree | 3963b4075f58c43ffc01fe290b04a800668bc53c /build | |
parent | c4e02a191628b4b9f7b6340f2876607663baeb5a (diff) | |
parent | af4c2a3eb15fc4318b23dcb7794c230cf3ec2a0f (diff) | |
download | forums-7f21a5f46156660d7ea6a4bdb59166ac553e2be8.tar forums-7f21a5f46156660d7ea6a4bdb59166ac553e2be8.tar.gz forums-7f21a5f46156660d7ea6a4bdb59166ac553e2be8.tar.bz2 forums-7f21a5f46156660d7ea6a4bdb59166ac553e2be8.tar.xz forums-7f21a5f46156660d7ea6a4bdb59166ac553e2be8.zip |
Merge commit 'release-3.0.8'
* commit 'release-3.0.8': (393 commits)
[prep-release-3.0.8] Incrementing version number to 3.0.8 and update changelog
[ticket/9903] Script for detecting potentially malicious flash bbcodes
[ticket/9904] Update WebPI Parameters.xml to work with WebMatrix.
[ticket/9899] Change recaptcha theme from default to 'clean' in the ACP.
[ticket/9509] Fix a typo and wrong period placement
[ticket/9903] Fix XSS in BBcode-parser's Flash-BBcode.
[develop-olympus] Updating changelog for last minute 3.0.8-RC1 fixes.
[ticket/9140] Check current board version in incremental update packages
[ticket/9891] Updater drops language-selection after database-update
[develop-olympus] Updating changelog with latest changes for 3.0.8-RC1
[ticket/9884] Reduce queue interval to 60 seconds, email package size to 20
[ticket/9886] Update fails on PostgreSQL because of an error in _add_module
[ticket/9888] Update fails when Bing [Bot] was already added to the users table
[develop-olympus] Bumping version number for 3.0.8-RC1.
[ticket/9885] Fix extension group name updater. Loop through all languages.
[ticket/9847] Fix typo in search synonyms. Use british english for 'judgement'.
[ticket/9883] Change an American English spelling to British English.
[task/phing-build] Correct the path for update package patch files.
[ticket/9880] Change "antibot" to "anti-spambot".
[ticket/9696] Surpress is_dir() notice when using SQLite with open_basedir.
...
Diffstat (limited to 'build')
-rw-r--r-- | build/build.xml | 149 | ||||
-rwxr-xr-x | build/build_diff.php | 31 | ||||
-rw-r--r-- | build/build_helper.php | 175 | ||||
-rwxr-xr-x | build/package.php | 161 | ||||
-rw-r--r-- | build/webpi/install/mssql.sql | 39 | ||||
-rw-r--r-- | build/webpi/install/mysql.sql | 15 | ||||
-rw-r--r-- | build/webpi/manifest.xml | 13 | ||||
-rw-r--r-- | build/webpi/parameters.xml | 256 |
8 files changed, 516 insertions, 323 deletions
diff --git a/build/build.xml b/build/build.xml new file mode 100644 index 0000000000..bf77d82f6c --- /dev/null +++ b/build/build.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project name="phpBB" description="The phpBB forum software" default="all" basedir="../"> + <!-- a few settings for the build --> + <property name="newversion" value="3.0.8" /> + <property name="prevversion" value="3.0.8-RC1" /> + <property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7-PL1" /> + <!-- no configuration should be needed beyond this point --> + + <property name="oldversions" value="${olderversions}, ${prevversion}" /> + <property name="versions" value="${oldversions}, ${newversion}" /> + + <!-- These are the main targets which you will probably want to use --> + <target name="package" depends="clean,prepare,create-package" /> + <target name="all" depends="clean,prepare,test,create-package" /> + + <target name="prepare"> + <mkdir dir="build/logs" /> + <mkdir dir="build/api" /> + <mkdir dir="build/codebrowser" /> + <mkdir dir="build/coverage" /> + <mkdir dir="build/cpd" /> + <mkdir dir="build/dependencies" /> + <mkdir dir="build/new_version" /> + <mkdir dir="build/new_version/files" /> + <mkdir dir="build/new_version/patches" /> + <mkdir dir="build/new_version/release_files" /> + <mkdir dir="build/new_version/update" /> + <mkdir dir="build/old_versions" /> + <mkdir dir="build/save" /> + </target> + + <target name="clean"> + <delete dir="build/logs" /> + <delete dir="build/api" /> + <delete dir="build/codebrowser" /> + <delete dir="build/coverage" /> + <delete dir="build/cpd" /> + <delete dir="build/dependencies" /> + <delete dir="build/new_version" /> + <delete dir="build/old_versions" /> + <delete dir="build/save" /> + </target> + + <target name="test"> + <exec dir="tests" + command="phpunit --log-junit ../build/logs/phpunit.xml + --coverage-clover ../build/logs/clover.xml + --coverage-html ../build/coverage + phpbb_all_tests all_tests.php" + passthru="true" /> + + + <!-- Does not allow changing the working directory to tests/ + so this approach does not work for us unfortunately + <phpunit codecoverage="true" haltonfailure="true"> + <formatter todir="build/logs" type="xml"/> + <batchtest> + <fileset dir="tests"> + <include name="all_tests.php"/> + </fileset> + </batchtest> + </phpunit> + --> + </target> + + <target name="old-version-diffs"> + <foreach list="${oldversions}" param="version" target="old-version-diff" /> + </target> + + <!-- This target retrieves an old version from the git tag release-${version} + and creates a diff between that release and the new one --> + <target name="old-version-diff"> + <echo msg="Retrieving version ${version}" /> + <mkdir dir="build/old_versions/release-${version}" /> + + <phingcall target="export"> + <property name="revision" value="release-${version}" /> + <property name="dir" value="build/old_versions/release-${version}" /> + </phingcall> + + <phingcall target="clean-diff-dir"> + <property name="dir" value="build/old_versions/release-${version}" /> + </phingcall> + + <exec dir="build/old_versions" command="diff -crNEBwd release-${version} release-${newversion} > + ../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" /> + </target> + + <target name="prepare-new-version"> + <!-- select the currently checked out commit (HEAD) for packaging --> + <mkdir dir="build/new_version/phpBB3" /> + <phingcall target="export"> + <property name="revision" value="HEAD" /> + <property name="dir" value="build/new_version/phpBB3" /> + </phingcall> + + <!-- copy into directory for diffs --> + <exec dir="build" command="cp -rp new_version/phpBB3 old_versions/release-${newversion}" /> + <!-- and clean up --> + <phingcall target="clean-diff-dir"> + <property name="dir" value="build/old_versions/release-${newversion}" /> + </phingcall> + + <!-- create an empty config.php file (not for diffs) --> + <touch file="build/new_version/phpBB3/config.php" /> + + </target> + + <target name="create-package" depends="prepare-new-version,old-version-diffs"> + <exec dir="build" command="php -f package.php '${versions}' > logs/package.log" escape="false" /> + <exec dir="build" command="php -f build_diff.php '${prevversion}' '${newversion}' > logs/build_diff.log" escape="false" /> + </target> + + <!-- + This target can be called using phingcall to retrieve a clean + checkout of a commit from git. It will only export the phpBB directory. + The properties revision and dir are required. + This target will remove directories that are not needed in distribution + and set correct permissions. + --> + <target name="export"> + <exec dir="phpBB" + command="git archive ${revision} | tar -x -C ../${dir}" + checkreturn="true" /> + <delete file="${dir}/config.php" /> + <delete dir="${dir}/develop" /> + <delete dir="${dir}/install/data" /> + + <echo msg="Setting permissions for checkout of ${revision} in ${dir}" /> + <!-- set permissions of all files to 644, directories to 755 --> + <exec dir="${dir}" command="find -type f|xargs chmod 644" escape="false" /> + <exec dir="${dir}" command="find -type d|xargs chmod 755" escape="false" /> + <!-- set permissions of some directories to 777 --> + <chmod mode="0777" file="${dir}/cache" /> + <chmod mode="0777" file="${dir}/store" /> + <chmod mode="0777" file="${dir}/files" /> + <chmod mode="0777" file="${dir}/images/avatars/upload" /> + </target> + + <target name="clean-diff-dir"> + <delete dir="${dir}/cache" /> + <delete dir="${dir}/docs" /> + <delete dir="${dir}/files" /> + <delete dir="${dir}/install" /> + <delete dir="${dir}/store" /> + </target> + +</project> diff --git a/build/build_diff.php b/build/build_diff.php index ef815bc0c3..6a6070228f 100755 --- a/build/build_diff.php +++ b/build/build_diff.php @@ -9,16 +9,26 @@ * */ -// CONFIG - Begin -$substitute_old = '3.0.6'; -$substitute_new = '3.0.7-PL1'; -$simple_name_old = 'phpbb306'; -$simple_name_new = 'phpbb307-PL1'; +if ($_SERVER['argc'] != 3) +{ + die("Please specify the previous and current version as arguments (e.g. build_diff.php '1.0.2' '1.0.3')."); +} + +$old_version = trim($_SERVER['argv'][1]); +$new_version = trim($_SERVER['argv'][2]); + +$substitute_old = $old_version; +$substitute_new = $new_version; +$simple_name_old = 'release-' . $old_version; +$simple_name_new = 'release-' . $new_version; $echo_changes = false; + +// DO NOT EVER USE THE FOLLOWING! Fix the script to generate proper changes, +// do NOT manually create them. + // 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; @@ -36,9 +46,6 @@ 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"); @@ -72,14 +79,14 @@ if (!$echo_changes) foreach ($compress_programs as $extension => $compress_command) { echo "Packaging code changes for $extension\n"; - run_command("rm ./../../release_files/{$code_changes_filename}.{$extension}"); + run_command("rm ./../../new_version/release_files/{$code_changes_filename}.{$extension}"); flush(); // Build Package - run_command("$compress_command ./../../release_files/{$code_changes_filename}.{$extension} *"); + run_command("$compress_command ./../../new_version/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"); + run_command("md5sum ./../../new_version/release_files/{$code_changes_filename}.{$extension} > ./../../new_version/release_files/{$code_changes_filename}.{$extension}.md5"); flush(); } } 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 7cb30bd493..4ce644e8ca 100755 --- a/build/package.php +++ b/build/package.php @@ -9,145 +9,24 @@ * */ -// 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'); -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'))) +if ($_SERVER['argc'] < 2) { - $package->run_command('mkdir ' . $package->get('dest_dir')); + die("Please specify a list of versions as the first argument (e.g. package.php '1.0.0, 1.0.1, 1.0.2')."); } -if (!file_exists($package->get('diff_dir'))) -{ - $package->run_command('mkdir ' . $package->get('diff_dir')); -} +$versions = explode(',', $_SERVER['argv'][1]); +$versions = array_map('trim', $versions); -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; +$verbose = true; - $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); +require('build_helper.php'); - $package->adjust_permissions($location); +$package = new build_package($versions, $verbose); - // Cleanup diff directory (only contents to diff) - foreach ($package->remove_from_diff_structure as $remove_dir) - { - $package->run_command('rm -Rv ' . $location . '/' . $remove_dir); - } -} +echo "Building Release Packages\n"; +echo "Now all three package types (patch, files, release) are built as well as the update package (update).\n"; // 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... @@ -160,13 +39,13 @@ 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); + $diff_file_changes[$_package_name] = $package->collect_diff_files( + $package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch', + $_package_name + ); } // Now put those files determined within the correct directories @@ -404,7 +283,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 +298,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 +334,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 @@ -518,6 +394,13 @@ foreach ($compress_programs as $extension => $compress_command) $package->run_command('md5sum ./release_files/' . $package->get('release_filename') . '.' . $extension . ' > ./release_files/' . $package->get('release_filename') . '.' . $extension . '.md5'); } +// Microsoft Web PI packaging +$package->begin_status('Packaging phpBB for Microsoft WebPI'); +$file = './release_files/' . $package->get('release_filename') . '.webpi.zip'; +$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"); + // verify results chdir($package->locations['root']); $package->begin_status('********** Verifying packages **********'); diff --git a/build/webpi/install/mssql.sql b/build/webpi/install/mssql.sql new file mode 100644 index 0000000000..9c0b46678a --- /dev/null +++ b/build/webpi/install/mssql.sql @@ -0,0 +1,39 @@ +/**********************************************************************/ +/* Install.SQL */ +/* Creates a login and makes the user a member of db roles */ +/* */ +/**********************************************************************/ + +-- Declare variables for database name, username and password +DECLARE @dbName sysname, + @dbUser sysname, + @dbPwd nvarchar(max); + +-- Set variables for database name, username and password +SET @dbName = 'PlaceHolderForDb'; +SET @dbUser = 'PlaceHolderForUser'; +SET @dbPwd = 'PlaceHolderForPassword'; + +DECLARE @cmd nvarchar(max) + +-- Create login +IF( SUSER_SID(@dbUser) is null ) +BEGIN + print '-- Creating login ' + SET @cmd = N'CREATE LOGIN ' + quotename(@dbUser) + N' WITH PASSWORD ='''+ replace(@dbPwd, '''', '''''') + N'''' + EXEC(@cmd) +END + +-- Create database user and map to login +-- and add user to the datareader, datawriter, ddladmin and securityadmin roles +-- +SET @cmd = N'USE ' + quotename(@DBName) + N'; +IF( NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = ''' + replace(@dbUser, '''', '''''') + N''')) +BEGIN + print ''-- Creating user''; + CREATE USER ' + quotename(@dbUser) + N' FOR LOGIN ' + quotename(@dbUser) + N'; + print ''-- Adding user''; + EXEC sp_addrolemember ''db_owner'', ''' + replace(@dbUser, '''', '''''') + N'''; +END' +EXEC(@cmd) +GO diff --git a/build/webpi/install/mysql.sql b/build/webpi/install/mysql.sql new file mode 100644 index 0000000000..5c9d8cd922 --- /dev/null +++ b/build/webpi/install/mysql.sql @@ -0,0 +1,15 @@ +USE PlaceHolderForDb$$ + +DROP PROCEDURE IF EXISTS add_user $$ + +CREATE PROCEDURE add_user() +BEGIN +DECLARE EXIT HANDLER FOR 1044 BEGIN END; +GRANT ALL PRIVILEGES ON PlaceHolderForDb.* to 'PlaceHolderForUser'@'PlaceHolderForServer' IDENTIFIED BY 'PlaceHolderForPassword'; +FLUSH PRIVILEGES; +END +$$ + +CALL add_user() $$ + +DROP PROCEDURE IF EXISTS add_user $$ diff --git a/build/webpi/manifest.xml b/build/webpi/manifest.xml new file mode 100644 index 0000000000..947377893b --- /dev/null +++ b/build/webpi/manifest.xml @@ -0,0 +1,13 @@ +<msdeploy.iisapp> + <iisapp path="phpBB3" /> + + <dbmysql path="install/mysql.sql" commandDelimiter="$$" removeCommandDelimiter="true" /> + + <dbfullsql path="install/mssql.sql" /> + + <setAcl path="phpBB3/cache" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" /> + <setAcl path="phpBB3/files" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" /> + <setAcl path="phpBB3/store" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" /> + <setAcl path="phpBB3/images/avatars/upload" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" /> + <setAcl path="phpBB3/config.php" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" setAclResourceType="File" /> +</msdeploy.iisapp> diff --git a/build/webpi/parameters.xml b/build/webpi/parameters.xml new file mode 100644 index 0000000000..be4d374632 --- /dev/null +++ b/build/webpi/parameters.xml @@ -0,0 +1,256 @@ +<parameters> + <parameter + name="AppPath" + defaultValue="Default Web Site/phpBB3" + tags="iisapp"> + + <parameterEntry + type="ProviderPath" + scope="iisapp" + match="phpBB3" /> + </parameter> + <!--ACLs--> + <parameter + name="aclCache" + description="Sets the ACL on the cache/ folder" + defaultValue="{AppPath}/cache" + tags="Hidden"> + + <parameterEntry + type="ProviderPath" + scope="setAcl" + match="phpBB3/cache$" /> + </parameter> + + <parameter + name="aclFiles" + description="Sets the ACL on the files/ folder" + defaultValue="{AppPath}/files" + tags="Hidden"> + + <parameterEntry + type="ProviderPath" + scope="setAcl" + match="phpBB3/files$" /> + </parameter> + + <parameter + name="aclStore" + description="Sets the ACL on the store/ folder" + defaultValue="{AppPath}/store" + tags="Hidden"> + + <parameterEntry + type="ProviderPath" + scope="setAcl" + match="phpBB3/store$" /> + </parameter> + + <parameter + name="aclAvatarUpload" + description="Sets the ACL on the avatars/upload/ folder" + defaultValue="{AppPath}/images/avatars/upload" + tags="Hidden"> + + <parameterEntry + type="ProviderPath" + scope="setAcl" + match="phpBB3/images/avatars/upload$" /> + </parameter> + + <parameter + name="aclConfig" + description="Sets the ACL on the config.php file" + defaultValue="{AppPath}/config.php" + tags="Hidden"> + + <parameterEntry + type="ProviderPath" + scope="setAcl" + match="phpBB3/config.php$" /> + </parameter> + + <!-- SQL parameters --> + <parameter name="SQL Database Server" description="Enter the database server (usually machine name ) " defaultValue="." tags="SQL"> + </parameter> + + <parameter name="SQL DatabaseServer Instance" description="Enter the database instance name" defaultValue="SQLExpress" tags="SQL"> + </parameter> + <!-- Read database server from config.php . Update 'dbhost' in config.php on publish --> + <parameter name="SQL Automatic DatabaseServer" defaultValue="dbhost = '{SQL Database Server}\\{SQL DatabaseServer Instance}';" tags="Hidden,SQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbhost\s*=\s*'([^']*)'\s*;" /> + </parameter> + <parameter + name="SQL DatabaseName" description="Database name for your application." defaultValue="phpbb" tags="SQL, dbName"> + + <parameterEntry type="TextFile" scope="install/mssql.sql" match="PlaceHolderForDb" /> + </parameter> + <!-- Read database name from config.php . Update 'dbname' in config.php on publish --> + <parameter name="SQL Automatic DatabaseName" defaultValue="dbname = '{SQL DatabaseName}';" tags="Hidden,SQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbname\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <parameter + name="SQL DatabaseAdministrator" + description="Database server administartor username." + defaultValue="sa" + tags="SQL, DbAdminUsername" > + </parameter> + + <parameter + name="SQL DatabaseAdministratorPassword" + description="Database server administrator password." + tags="Password,SQL,DbAdminPassword"> + </parameter> + + <parameter + name="SQL Database Username" + description="Username to access your database." + defaultValue="phpbb" + tags="SQL, DbUsername"> + + <parameterEntry + type="TextFile" + scope="install/mssql.sql" + match="PlaceHolderForUser" /> + </parameter> + <!-- Read database user from config.php . Update 'dbuser' in config.php on publish --> + <parameter name="SQL Automatic Database User" defaultValue="dbuser = '{SQL Database Username}';" tags="Hidden,SQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbuser\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <parameter + name="SQL Database Password" + description="Password for your phpBB database. (Must be at least 8 characters, contain at least one lower case letter, one upper case letter and one digit)" + tags="New, Password,SQL, DbUserPassword"> + + <parameterValidation + type = "RegularExpression" + validationString = "^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$" /> + + <parameterEntry + type="TextFile" + scope="install/mssql.sql" + match="PlaceHolderForPassword" /> + </parameter> + + <!-- Read database user password from config.php . Update 'dbpasswd' in config.php on publish --> + <parameter name="SQL Automatic Database Password" defaultValue="dbpasswd = '{SQL Database Password}';" tags="Hidden,SQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbpasswd\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <!-- SQL Connection string --> + <parameter + name="SQL ConnectionString" + description="Automatically sets the connection string for the connection request." + defaultValue="Server={SQL Database Server}\{SQL DatabaseServer Instance};Database={SQL DatabaseName};uid={SQL DatabaseAdministrator};Pwd={SQL DatabaseAdministratorPassword};" + tags="Hidden,SQLConnectionString,Validate"> + + <parameterEntry + type="ProviderPath" + scope="dbfullsql" + match="install/mssql.sql" /> + </parameter> + + <parameter + name="SQL Database type" + description="SQL database type" + defaultValue="mssql" + tags="SQL,Hidden"> + </parameter> + + <!-- MYSQL parameters --> + <parameter + name="MySQL Database Server" + description="Enter the hostname" + defaultValue="localhost" + tags="MySQL, dbServer"> + + <parameterEntry + type="TextFile" + scope="install/mysql.sql" + match="PlaceHolderForServer" /> + </parameter> + + <!-- Read database server from config.php . Update 'dbhost' in config.php on publish --> + <parameter name="Automatic MySQL DatabaseServer" defaultValue="dbhost = '{MySQL Database Server}';" tags="Hidden,MySQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbhost\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <parameter + name="MySQL Database Name" + description="Database Name for your application." + defaultValue="phpbb" + tags="MySQL, dbName"> + + <parameterEntry + type="TextFile" + scope="install/mysql.sql" + match="PlaceHolderForDb" /> + </parameter> + <!-- Read database name from config.php . Update 'dbname' in config.php on publish --> + <parameter name="Automatic MySQL Database Name" defaultValue="dbname = '{MySQL Database Name}';" tags="Hidden,MySQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbname\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <parameter + name="MySQL Database Username" + description="Username to access your phpBB database." + defaultValue="phpbb" + tags="MySQL, DbUsername"> + + <parameterEntry + type="TextFile" + scope="install/mysql.sql" + match="PlaceHolderForUser" /> + </parameter> + <!-- Read database user from config.php . Update 'dbuser' in config.php on publish --> + <parameter name="Automatic MySQL Database User" defaultValue="dbuser = '{MySQL Database Username}';" tags="Hidden,MySQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbuser\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <parameter + name="MySQL Database Password" + description="Password for your phpBB database. (Minimum 4 characters)" + tags="New, Password,MySQL,DbUserPassword"> + + <parameterValidation + type = "RegularExpression" + validationString = "^.{4,}$" /> + + <parameterEntry + type="TextFile" + scope="install/mysql.sql" + match="PlaceHolderForPassword" /> + </parameter> + <!-- Read database password from config.php . Update 'dbpasswd' in config.php on publish --> + <parameter name="MySQL Automatic Database Password" defaultValue="dbpasswd = '{MySQL Database Password}';" tags="Hidden,MySQL"> + <parameterEntry kind="TextFile" scope="\\config\.php$" match="dbpasswd\s*=\s*'([^']*)'\s*;" /> + </parameter> + + <!-- MySQL admin credentials --> + <parameter + name="MySQL Database Administrator" + description="Database administrator username." + defaultValue="root" + tags="MySQL, DbAdminUsername" > + </parameter> + <parameter + name="MySQL Database Administrator Password" + description="Database administrator password." + tags="Password,MySQL,DbAdminPassword" > + </parameter> + + <!-- MySQL Connectionstring --> + <parameter + name="MySQLConnectionString" + description="Automatically sets the connection string for the connection request." + defaultValue="Server={MySQL Database Server};Database={MySQL Database Name};uid={MySQL Database Administrator};Pwd={MySQL Database Administrator Password};" + tags="Hidden,MySQLConnectionString,Validate"> + + <parameterEntry + type="ProviderPath" + scope="dbmysql" + match="install/mysql.sql" /> + </parameter> +</parameters> |