diff --git a/lib/private/App/DependencyAnalyzer.php b/lib/private/App/DependencyAnalyzer.php index 6519e15bd8..1e3a81c635 100644 --- a/lib/private/App/DependencyAnalyzer.php +++ b/lib/private/App/DependencyAnalyzer.php @@ -145,6 +145,12 @@ class DependencyAnalyzer { $missing[] = (string)$this->l->t('PHP with a version lower than %s is required.', $maxVersion); } } + if (isset($dependencies['php']['@attributes']['min-int-size'])) { + $intSize = $dependencies['php']['@attributes']['min-int-size']; + if ($intSize > $this->platform->getIntSize()*8) { + $missing[] = (string)$this->l->t('%sbit or higher PHP required.', $intSize); + } + } return $missing; } diff --git a/lib/private/App/Platform.php b/lib/private/App/Platform.php index 1d4c376712..b1cb7c5aeb 100644 --- a/lib/private/App/Platform.php +++ b/lib/private/App/Platform.php @@ -48,6 +48,13 @@ class Platform { return phpversion(); } + /** + * @return int + */ + public function getIntSize() { + return PHP_INT_SIZE; + } + /** * @return string */ diff --git a/tests/lib/app/dependencyanalyzer.php b/tests/lib/app/dependencyanalyzer.php index fecba51885..eee0bc2908 100644 --- a/tests/lib/app/dependencyanalyzer.php +++ b/tests/lib/app/dependencyanalyzer.php @@ -32,6 +32,9 @@ class DependencyAnalyzer extends TestCase { $this->platformMock->expects($this->any()) ->method('getPhpVersion') ->will( $this->returnValue('5.4.3')); + $this->platformMock->expects($this->any()) + ->method('getIntSize') + ->will( $this->returnValue('4')); $this->platformMock->expects($this->any()) ->method('getDatabase') ->will( $this->returnValue('mysql')); @@ -73,8 +76,9 @@ class DependencyAnalyzer extends TestCase { * @param string $expectedMissing * @param string $minVersion * @param string $maxVersion + * @param string $intSize */ - public function testPhpVersion($expectedMissing, $minVersion, $maxVersion) { + public function testPhpVersion($expectedMissing, $minVersion, $maxVersion, $intSize) { $app = array( 'dependencies' => array( 'php' => array() @@ -86,6 +90,9 @@ class DependencyAnalyzer extends TestCase { if (!is_null($maxVersion)) { $app['dependencies']['php']['@attributes']['max-version'] = $maxVersion; } + if (!is_null($intSize)) { + $app['dependencies']['php']['@attributes']['min-int-size'] = $intSize; + } $missing = $this->analyser->analyze($app); $this->assertTrue(is_array($missing)); @@ -278,13 +285,14 @@ class DependencyAnalyzer extends TestCase { */ function providesPhpVersion() { return array( - array(array(), null, null), - array(array(), '5.4', null), - array(array(), null, '5.5'), - array(array(), '5.4', '5.5'), - array(array('PHP 5.4.4 or higher is required.'), '5.4.4', null), - array(array('PHP with a version lower than 5.4.2 is required.'), null, '5.4.2'), - array(array(), '5.4', '5.4'), + array(array(), null, null, null), + array(array(), '5.4', null, null), + array(array(), null, '5.5', null), + array(array(), '5.4', '5.5', null), + array(array('PHP 5.4.4 or higher is required.'), '5.4.4', null, null), + array(array('PHP with a version lower than 5.4.2 is required.'), null, '5.4.2', null), + array(array('64bit or higher PHP required.'), null, null, 64), + array(array(), '5.4', '5.4', null), ); } }