Added support for Composer (#323)

This commit is contained in:
Dylan K. Taylor 2017-09-10 19:23:34 +01:00 committed by GitHub
parent 3b9689674d
commit 25adac8859
8 changed files with 90 additions and 4 deletions

2
.gitignore vendored
View File

@ -28,3 +28,5 @@ Desktop.ini
# Sphinx-doc # Sphinx-doc
/docs/build/ /docs/build/
!/docs/requirements.txt !/docs/requirements.txt
vendor/*

View File

@ -14,6 +14,7 @@ before_script:
- make install - make install
- cd .. - cd ..
- echo "extension=pthreads.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - echo "extension=pthreads.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- composer install
script: script:
- ./tests/travis.sh - ./tests/travis.sh

33
composer.json Normal file
View File

@ -0,0 +1,33 @@
{
"name": "pmmp/pocketmine-mp",
"description": "A server software for Minecraft: Pocket Edition written in PHP",
"type": "project",
"homepage": "https://pmmp.io",
"license": "LGPL-3.0",
"require": {
"php": ">=7.2",
"ext-bcmath": "*",
"ext-curl": "*",
"ext-hash": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-pcre": "*",
"ext-phar": "*",
"ext-pthreads": ">=3.1.7dev",
"ext-reflection": "*",
"ext-sockets": "*",
"ext-spl": "*",
"ext-yaml": ">=2.0.0",
"ext-zip": "*",
"ext-zlib": ">=1.2.11"
},
"autoload": {
"exclude-from-classmap": [
"src/spl/stubs"
],
"psr-0": {
"": ["src", "src/spl"]
}
}
}

36
composer.lock generated Normal file
View File

@ -0,0 +1,36 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "d4fecad9dce5314493052c870c8cf059",
"packages": [],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"ext-pthreads": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=7.2",
"ext-bcmath": "*",
"ext-curl": "*",
"ext-hash": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-pcre": "*",
"ext-phar": "*",
"ext-pthreads": ">=3.1.7dev",
"ext-reflection": "*",
"ext-sockets": "*",
"ext-spl": "*",
"ext-yaml": ">=2.0.0",
"ext-zip": "*",
"ext-zlib": ">=1.2.11"
},
"platform-dev": []
}

View File

@ -70,6 +70,7 @@ namespace {
} }
namespace pocketmine { namespace pocketmine {
use pocketmine\utils\Binary; use pocketmine\utils\Binary;
use pocketmine\utils\MainLogger; use pocketmine\utils\MainLogger;
use pocketmine\utils\ServerKiller; use pocketmine\utils\ServerKiller;
@ -134,15 +135,26 @@ namespace pocketmine {
exit(1); exit(1);
} }
if(is_file(\pocketmine\PATH . "vendor/autoload.php")){
require_once(\pocketmine\PATH . "vendor/autoload.php");
}else{
echo "[CRITICAL] Composer autoloader not found" . PHP_EOL;
echo "[CRITICAL] Please initialize composer dependencies before running." . PHP_EOL;
exit(1);
}
if(!class_exists("ClassLoader", false)){ if(!class_exists("ClassLoader", false)){
require_once(\pocketmine\PATH . "src/spl/ClassLoader.php"); require_once(\pocketmine\PATH . "src/spl/ClassLoader.php");
require_once(\pocketmine\PATH . "src/spl/BaseClassLoader.php"); require_once(\pocketmine\PATH . "src/spl/BaseClassLoader.php");
} }
/*
* We now use the Composer autoloader, but this autoloader is still used by RakLib and for loading plugins.
*/
$autoloader = new \BaseClassLoader(); $autoloader = new \BaseClassLoader();
$autoloader->addPath(\pocketmine\PATH . "src"); $autoloader->addPath(\pocketmine\PATH . "src");
$autoloader->addPath(\pocketmine\PATH . "src" . DIRECTORY_SEPARATOR . "spl"); $autoloader->addPath(\pocketmine\PATH . "src" . DIRECTORY_SEPARATOR . "spl");
$autoloader->register(true); $autoloader->register(false);
if(!class_exists(RakLib::class)){ if(!class_exists(RakLib::class)){
echo "[CRITICAL] Unable to find the RakLib library." . PHP_EOL; echo "[CRITICAL] Unable to find the RakLib library." . PHP_EOL;

View File

@ -51,12 +51,13 @@ abstract class Thread extends \Thread{
* (unless you are using a custom autoloader). * (unless you are using a custom autoloader).
*/ */
public function registerClassLoader(){ public function registerClassLoader(){
require(\pocketmine\PATH . "vendor/autoload.php");
if(!interface_exists("ClassLoader", false)){ if(!interface_exists("ClassLoader", false)){
require(\pocketmine\PATH . "src/spl/ClassLoader.php"); require(\pocketmine\PATH . "src/spl/ClassLoader.php");
require(\pocketmine\PATH . "src/spl/BaseClassLoader.php"); require(\pocketmine\PATH . "src/spl/BaseClassLoader.php");
} }
if($this->classLoader !== null){ if($this->classLoader !== null){
$this->classLoader->register(true); $this->classLoader->register(false);
} }
} }

View File

@ -52,12 +52,13 @@ abstract class Worker extends \Worker{
* (unless you are using a custom autoloader). * (unless you are using a custom autoloader).
*/ */
public function registerClassLoader(){ public function registerClassLoader(){
require(\pocketmine\PATH . "vendor/autoload.php");
if(!interface_exists("ClassLoader", false)){ if(!interface_exists("ClassLoader", false)){
require(\pocketmine\PATH . "src/spl/ClassLoader.php"); require(\pocketmine\PATH . "src/spl/ClassLoader.php");
require(\pocketmine\PATH . "src/spl/BaseClassLoader.php"); require(\pocketmine\PATH . "src/spl/BaseClassLoader.php");
} }
if($this->classLoader !== null){ if($this->classLoader !== null){
$this->classLoader->register(true); $this->classLoader->register(false);
} }
} }

View File

@ -24,7 +24,7 @@ cd tests/plugins/PocketMine-DevTools
"$PHP_BINARY" -dphar.readonly=0 ./src/DevTools/ConsoleScript.php --make ./ --relative ./ --out ../../../DevTools.phar "$PHP_BINARY" -dphar.readonly=0 ./src/DevTools/ConsoleScript.php --make ./ --relative ./ --out ../../../DevTools.phar
cd ../../.. cd ../../..
"$PHP_BINARY" -dphar.readonly=0 DevTools.phar --make src --relative ./ --entry src/pocketmine/PocketMine.php --out PocketMine-MP.phar "$PHP_BINARY" -dphar.readonly=0 DevTools.phar --make src,vendor --relative ./ --entry src/pocketmine/PocketMine.php --out PocketMine-MP.phar
if [ -f PocketMine-MP.phar ]; then if [ -f PocketMine-MP.phar ]; then
echo Server phar created successfully. echo Server phar created successfully.
else else