PHPStan failed on 7.4 after updating to 0.12.99, and I figured it was less hassle to just do this than fix the build. In any case, we stopped shipping 7.4 months ago, and warned at 3.22 release that 7.4 support would soon be dropped.
2.1 KiB
Building
Pre-requisites
- A bash shell (git bash is sufficient for Windows)
git
available in your shell- PHP 8.0 or newer available in your shell
composer
available in your shell
Custom PHP binaries
Because PocketMine-MP requires several non-standard PHP extensions and configuration, PMMP provides scripts to build custom binaries for running PocketMine-MP, as well as prebuilt binaries.
- Prebuilt binaries
- Compile scripts are provided as a submodule in the path
build/php
If you use a custom binary, you'll need to replace composer
usages in this guide with path/to/your/php path/to/your/composer.phar
.
Setting up environment
git clone --recursive https://github.com/pmmp/PocketMine-MP.git
composer install
Checking out a different branch to build
git checkout <branch to checkout>
git submodule update --init
- Re-run
composer install
to synchronize dependencies.
Optimizing for release builds
- Add the flags
--no-dev --classmap-authoritative
to yourcomposer install
command. This will reduce build size and improve autoloading speed. - Preprocess the source code by running
build/preprocessor/PreProcessor.php
. Usage instructions are provided inbuild/preprocessor/README.md
.
Note
Preprocessor requires that the cpp
(c preprocessor) is available in your PATH.
Building PocketMine-MP.phar
Run composer make-server
using your preferred PHP binary. It'll drop a PocketMine-MP.phar
into the current working directory.
You can also use the --out
option to change the output filename.
There is a bug in PHP that might cause an error which looks like this:
Fatal error: Uncaught BadMethodCallException: unable to create temporary file in PocketMine-MP/build/server-phar.php:119
You can work around it by setting ulimit -n
to some bigger number, e.g. 8192
, or by updating your PHP version to at least 8.0.3.
Running PocketMine-MP from source code
Run src/pocketmine/PocketMine.php
using your preferred PHP binary.