|
|
|
@ -13,7 +13,7 @@
|
|
|
|
|
| |
|
|
|
|
|
| PURPOSE: |
|
|
|
|
|
| Utility script to fetch and install all 3rd party javascript |
|
|
|
|
|
| libraries unsed in Roundcube from source. |
|
|
|
|
|
| libraries used in Roundcube from source. |
|
|
|
|
|
+-----------------------------------------------------------------------+
|
|
|
|
|
| Author: Thomas Bruederli <thomas@roundcube.net> |
|
|
|
|
|
+-----------------------------------------------------------------------+
|
|
|
|
@ -24,13 +24,13 @@ define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
|
|
|
|
|
require_once INSTALL_PATH . 'program/include/clisetup.php';
|
|
|
|
|
|
|
|
|
|
if (!function_exists('exec')) {
|
|
|
|
|
die("PHP exec() function is required. Check disable_functions in php.ini\n");
|
|
|
|
|
rcube::raise_error('PHP exec() function is required. Check disable_functions in php.ini.', false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$SOURCES = json_decode(file_get_contents(INSTALL_PATH . 'jsdeps.json'), true);
|
|
|
|
|
|
|
|
|
|
if (empty($SOURCES['dependencies'])) {
|
|
|
|
|
die("ERROR: Failed to read sources from " . INSTALL_PATH . "jsdeps.json\n");
|
|
|
|
|
rcube::raise_error("ERROR: Failed to read sources from " . INSTALL_PATH . 'jsdeps.json', false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$CURL = trim(`which curl`);
|
|
|
|
@ -116,7 +116,7 @@ function fetch_from_source($package, $useCache = true, &$filetype = null)
|
|
|
|
|
|
|
|
|
|
if (!is_readable($cache_file) || !$useCache) {
|
|
|
|
|
if (empty($CURL) && empty($WGET)) {
|
|
|
|
|
die("ERROR: Required program 'wget' or 'curl' not found\n");
|
|
|
|
|
rcube::raise_error("Required program 'wget' or 'curl' not found.", false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$url = str_replace('$v', $package['version'], $package['url']);
|
|
|
|
@ -133,7 +133,7 @@ function fetch_from_source($package, $useCache = true, &$filetype = null)
|
|
|
|
|
$url = str_replace('$v', $package['version'], $package['api_url']);
|
|
|
|
|
$header = 'Accept:application/vnd.github.v3.raw';
|
|
|
|
|
|
|
|
|
|
echo "Fetching failed. Using Github API on $url\n";
|
|
|
|
|
rcube::raise_error("Fetching failed. Using Github API on $url");
|
|
|
|
|
|
|
|
|
|
if ($CURL)
|
|
|
|
|
exec(sprintf('%s -L -H %s -s %s -o %s', $CURL, escapeshellarg($header), escapeshellarg($url), $cache_file), $out, $retval);
|
|
|
|
@ -142,7 +142,7 @@ function fetch_from_source($package, $useCache = true, &$filetype = null)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($retval !== 0) {
|
|
|
|
|
die("ERROR: Failed to download source file from " . $url . "\n");
|
|
|
|
|
rcube::raise_error("Failed to download source file from $url", false, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -160,7 +160,7 @@ function extract_filetype($package, &$filetype = null)
|
|
|
|
|
$cache_file = $CACHEDIR . '/' . $package['lib'] . '-' . $package['version'] . '.' . $filetype;
|
|
|
|
|
|
|
|
|
|
if (empty($FILEINFO)) {
|
|
|
|
|
die("ERROR: Required program 'file' not found\n");
|
|
|
|
|
rcube::raise_error("Required program 'file' not found.", false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// detect downloaded/cached file type
|
|
|
|
@ -207,7 +207,7 @@ function compose_destfile($package, $srcfile)
|
|
|
|
|
echo "Wrote file " . INSTALL_PATH . $package['dest'] . "\n";
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
die("ERROR: Failed to write destination file " . INSTALL_PATH . $package['dest'] . "\n");
|
|
|
|
|
rcube::raise_error("Failed to write destination file " . INSTALL_PATH . $package['dest'], false, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -219,7 +219,7 @@ function extract_zipfile($package, $srcfile)
|
|
|
|
|
global $UNZIP, $CACHEDIR;
|
|
|
|
|
|
|
|
|
|
if (empty($UNZIP)) {
|
|
|
|
|
die("ERROR: Required program 'unzip' not found\n");
|
|
|
|
|
rcube::raise_error("Required program 'unzip' not found.", false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$destdir = INSTALL_PATH . $package['dest'];
|
|
|
|
@ -228,7 +228,7 @@ function extract_zipfile($package, $srcfile)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!is_writeable($destdir)) {
|
|
|
|
|
die("ERROR: Cannot write to destination directory $destdir\n");
|
|
|
|
|
rcube::raise_error("Cannot write to destination directory $destdir", false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// pick files from zip archive
|
|
|
|
@ -237,7 +237,7 @@ function extract_zipfile($package, $srcfile)
|
|
|
|
|
echo "Extracting files $pattern into $destdir\n";
|
|
|
|
|
exec(sprintf('%s -o %s %s -d %s', $UNZIP, escapeshellarg($srcfile), escapeshellarg($pattern), $destdir), $out, $retval);
|
|
|
|
|
if ($retval !== 0) {
|
|
|
|
|
echo "ERROR: Failed to unpack $pattern; " . join('; ' . $out) . "\n";
|
|
|
|
|
rcube::raise_error("Failed to unpack $pattern; " . join('; ' . $out));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -273,7 +273,7 @@ function extract_zipfile($package, $srcfile)
|
|
|
|
|
|
|
|
|
|
exec(sprintf('mv -f %s/%s %s/%s', $sourcedir, $src, $destdir, $dest), $out, $retval);
|
|
|
|
|
if ($retval !== 0) {
|
|
|
|
|
echo "ERROR: Failed to move $src into $destdir/$dest; " . join('; ' . $out) . "\n";
|
|
|
|
|
rcube::raise_error("Failed to move $src into $destdir/$dest; " . join('; ' . $out));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -285,7 +285,7 @@ function extract_zipfile($package, $srcfile)
|
|
|
|
|
echo "Extracting zip archive into $destdir\n";
|
|
|
|
|
exec(sprintf('%s -o %s -d %s', $UNZIP, escapeshellarg($srcfile), $destdir), $out, $retval);
|
|
|
|
|
if ($retval !== 0) {
|
|
|
|
|
echo "ERROR: Failed to unzip $srcfile; " . join('; ' . $out) . "\n";
|
|
|
|
|
rcube::raise_error("Failed to unzip $srcfile; " . join('; ' . $out));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -357,7 +357,7 @@ foreach ($SOURCES['dependencies'] as $package) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($package['sha1']) && ($sum = sha1_file($srcfile)) !== $package['sha1']) {
|
|
|
|
|
die("ERROR: Incorrect sha1 sum of $srcfile. Expected: {$package['sha1']}, got: $sum\n");
|
|
|
|
|
rcube::raise_error("Incorrect sha1 sum of $srcfile. Expected: {$package['sha1']}, got: $sum", false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($args['extract']) {
|
|
|
|
|