Browse Source

Consider composer.json dependencies in installation and upgrading instructions and scripts

pull/248/head
Thomas Bruederli 11 years ago
parent
commit
0c137f7dac
  1. 2
      INSTALL
  2. 7
      UPGRADING
  3. 4
      bin/installto.sh
  4. 56
      bin/update.sh
  5. 2
      composer.json-dist

2
INSTALL

@ -49,7 +49,7 @@ INSTALLATION
2. Install dependencies using composer: 2. Install dependencies using composer:
- get composer from https://getcomposer.org/download/ - get composer from https://getcomposer.org/download/
- rename the composer.json-dist file into composer.json - rename the composer.json-dist file into composer.json
- run `php composer.phar install`
- run `php composer.phar install --no-dev`
3. Make sure that the following directories (and the files within) 3. Make sure that the following directories (and the files within)
are writable by the webserver are writable by the webserver
- /temp - /temp

7
UPGRADING

@ -40,15 +40,16 @@ it on a unix system, you need to do the following operations by hand:
directory into the target folder: directory into the target folder:
./skins/ ./skins/
./plugins/ ./plugins/
4. Run ./bin/update.sh from the commandline OR
4. Run `./bin/update.sh` from the commandline OR
open http://url-to-roundcube/installer/ in a browser and choose "3 Test config". open http://url-to-roundcube/installer/ in a browser and choose "3 Test config".
To enable the latter one, you have to temporary set 'enable_installer' To enable the latter one, you have to temporary set 'enable_installer'
to true in your local config/config.inc.php file. to true in your local config/config.inc.php file.
WARNING: See SQLite database upgrade below. WARNING: See SQLite database upgrade below.
5. Let the update script/installer check your configuration and 5. Let the update script/installer check your configuration and
update your config files and database schema as suggested by the updater. update your config files and database schema as suggested by the updater.
6. Make sure 'enable_installer' is set to false again.
7. See Post-Upgrade Activities section.
5. Update dependencies by running `php composer.phar update --no-dev`
7. Make sure 'enable_installer' is set to false again.
8. See Post-Upgrade Activities section.
Post-Upgrade Activities Post-Upgrade Activities

4
bin/installto.sh

@ -5,7 +5,7 @@
| bin/installto.sh | | bin/installto.sh |
| | | |
| This file is part of the Roundcube Webmail client | | This file is part of the Roundcube Webmail client |
| Copyright (C) 2012, The Roundcube Dev Team |
| Copyright (C) 2014, The Roundcube Dev Team |
| | | |
| Licensed under the GNU General Public License version 3 or | | Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. | | any later version with exceptions for skins & plugins. |
@ -50,7 +50,7 @@ if (strtolower($input) == 'y') {
break; break;
} }
} }
foreach (array('index.php','.htaccess','config/defaults.inc.php','CHANGELOG','README.md','UPGRADING','LICENSE') as $file) {
foreach (array('index.php','.htaccess','config/defaults.inc.php','composer.json-dist','CHANGELOG','README.md','UPGRADING','LICENSE') as $file) {
if (!system("rsync -av " . INSTALL_PATH . "$file $target_dir/$file")) { if (!system("rsync -av " . INSTALL_PATH . "$file $target_dir/$file")) {
$err = true; $err = true;
break; break;

56
bin/update.sh

@ -5,7 +5,7 @@
| bin/update.sh | | bin/update.sh |
| | | |
| This file is part of the Roundcube Webmail client | | This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2013, The Roundcube Dev Team |
| Copyright (C) 2010-2014, The Roundcube Dev Team |
| | | |
| Licensed under the GNU General Public License version 3 or | | Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. | | any later version with exceptions for skins & plugins. |
@ -162,6 +162,60 @@ if ($RCI->configured) {
$success = !$res; $success = !$res;
} }
// update composer dependencies
if (is_file(INSTALL_PATH . 'composer.json') && is_readable(INSTALL_PATH . 'composer.json-dist')) {
$composer_data = json_decode(file_get_contents(INSTALL_PATH . 'composer.json'), true);
$composer_template = json_decode(file_get_contents(INSTALL_PATH . 'composer.json-dist'), true);
$comsposer_json = null;
// update the require section with the new dependencies
if (is_array($composer_data['require']) && is_array($composer_template['require'])) {
$composer_data['require'] = array_merge($composer_data['require'], $composer_template['require']);
/* TO BE ADDED LATER
$old_packages = array();
for ($old_packages as $pkg) {
if (array_key_exists($composer_data['require'], $pkg)) {
unset($composer_data['require'][$pkg]);
}
}
*/
}
// use the JSON encoder from the Composer package
if (is_file('composer.phar')) {
include 'phar://composer.phar/src/Composer/Json/JsonFile.php';
$comsposer_json = \Composer\Json\JsonFile::encode($composer_data);
}
// PHP 5.4's json_encode() does the job, too
else if (defined('JSON_PRETTY_PRINT')) {
$comsposer_json = json_encode($composer_data, JSON_PRETTY_PRINT & JSON_UNESCAPED_SLASHES);
}
else {
$success = false;
$comsposer_json = null;
}
// write updated composer.json back to disk
if (0&&$comsposer_json && is_writeable(INSTALL_PATH . 'composer.json')) {
$success &= (bool)file_put_contents(INSTALL_PATH . 'composer.json', $comsposer_json);
}
else {
echo "WARNING: unable to update composer.json!\n";
echo "Please replace the 'require' section in your composer.json with the following:\n";
$require_json = '';
foreach ($composer_data['require'] as $pkg => $ver) {
$require_json .= sprintf(' "%s": "%s",'."\n", $pkg, $ver);
}
echo ' "require": {'."\n";
echo rtrim($require_json, ",\n");
echo "\n }\n\n";
}
echo "NOTE: Update dependencies by running `php composer.phar update --no-dev`\n";
}
// index contacts for fulltext searching // index contacts for fulltext searching
if ($opts['version'] && version_compare(version_parse($opts['version']), '0.6.0', '<')) { if ($opts['version'] && version_compare(version_parse($opts['version']), '0.6.0', '<')) {
system("php " . INSTALL_PATH . 'bin/indexcontacts.sh'); system("php " . INSTALL_PATH . 'bin/indexcontacts.sh');

2
composer.json-dist

@ -30,7 +30,7 @@
], ],
"require": { "require": {
"php": ">=5.3.7", "php": ">=5.3.7",
"roundcube/plugin-installer": ">=0.1.3",
"roundcube/plugin-installer": ">=0.1.5",
"pear/mail_mime": ">=1.8.9", "pear/mail_mime": ">=1.8.9",
"pear/mail_mime-decode": ">=1.5.5", "pear/mail_mime-decode": ">=1.5.5",
"pear/net_smtp": "dev-master", "pear/net_smtp": "dev-master",

Loading…
Cancel
Save