mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-24 15:52:40 +01:00
Allow arcanist to search for libphutil in externals/includes/
Summary: In some cases (notably, homebrew) an installer may not control where arcanist/ and libphutil/ live and may not be able to control 'include_path'. Allow libphutil/ to be symlinked into arcanist/externals/includes/ if all else fails. Test Plan: - Moved `libphutil` to `libphutilx`. Ran "arc" and got a failure. - Symlinked it into externals/includes/, ran `arc`, got success. - Moved it back to `libphutil`, ran `arc`, success. Reviewers: vrana, btrahan Reviewed By: vrana CC: aran, tfmeusburger Differential Revision: https://secure.phabricator.com/D3243
This commit is contained in:
parent
6288bd6bcf
commit
a31d88ee82
3 changed files with 45 additions and 5 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@
|
||||||
/src/.phutil_module_cache
|
/src/.phutil_module_cache
|
||||||
/docs/
|
/docs/
|
||||||
/.divinercache/
|
/.divinercache/
|
||||||
|
/externals/includes/*
|
||||||
|
|
3
externals/includes/README
vendored
Normal file
3
externals/includes/README
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
This directory is added to the PHP include path. You can symlink things here
|
||||||
|
if you have control over directory setup but not over PHP configuration (for
|
||||||
|
instance, in Homebrew).
|
|
@ -16,15 +16,51 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$include_path = ini_get('include_path');
|
/**
|
||||||
|
* Adjust 'include_path' to add locations where we'll search for libphutil.
|
||||||
|
* We look in these places:
|
||||||
|
*
|
||||||
|
* - Next to 'arcanist/'.
|
||||||
|
* - Anywhere in the normal PHP 'include_path'.
|
||||||
|
* - Inside 'arcanist/externals/includes/'.
|
||||||
|
*
|
||||||
|
* When looking in these places, we expect to find a 'libphutil/' directory.
|
||||||
|
*/
|
||||||
|
function arcanist_adjust_php_include_path() {
|
||||||
|
|
||||||
$parent_dir = dirname(dirname(dirname(__FILE__)));
|
// The 'arcanist/' directory.
|
||||||
|
$arcanist_dir = dirname(dirname(__FILE__));
|
||||||
|
|
||||||
|
// The parent directory of 'arcanist/'.
|
||||||
|
$parent_dir = dirname($arcanist_dir);
|
||||||
|
|
||||||
|
// The 'arcanist/externals/includes/' directory.
|
||||||
|
$include_dir = implode(
|
||||||
|
DIRECTORY_SEPARATOR,
|
||||||
|
array(
|
||||||
|
$arcanist_dir,
|
||||||
|
'externals',
|
||||||
|
'includes',
|
||||||
|
));
|
||||||
|
|
||||||
|
$php_include_path = ini_get('include_path');
|
||||||
|
$php_include_path = implode(
|
||||||
|
PATH_SEPARATOR,
|
||||||
|
array(
|
||||||
|
$parent_dir,
|
||||||
|
$php_include_path,
|
||||||
|
$include_dir,
|
||||||
|
));
|
||||||
|
|
||||||
|
ini_set('include_path', $php_include_path);
|
||||||
|
}
|
||||||
|
arcanist_adjust_php_include_path();
|
||||||
|
|
||||||
ini_set('include_path', $parent_dir.PATH_SEPARATOR.$include_path);
|
|
||||||
@include_once 'libphutil/scripts/__init_script__.php';
|
@include_once 'libphutil/scripts/__init_script__.php';
|
||||||
if (!@constant('__LIBPHUTIL__')) {
|
if (!@constant('__LIBPHUTIL__')) {
|
||||||
echo "ERROR: Unable to load libphutil. Update your PHP 'include_path' to ".
|
echo "ERROR: Unable to load libphutil. Put libphutil/ next to arcanist/, or ".
|
||||||
"include the parent directory of libphutil/.\n";
|
"update your PHP 'include_path' to include the parent directory of ".
|
||||||
|
"libphutil/, or symlink libphutil/ into arcanist/externals/includes/.\n";
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue