Scripts de construction PHP personnalisés pour PocketMine-MP
Vous recherchez des binaires prédéfinis ? Rendez-vous sur les versions
compiler.sh
Script Bash utilisé pour compiler PHP sur les plateformes MacOS et Linux. Assurez-vous d'avoir make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
.
Recommandations
- Si vous envisagez d'utiliser le binaire compilé uniquement sur la machine sur laquelle vous le construisez, supprimez l'option
-t
pour de meilleures performances - cela permettra au script d'optimiser pour la machine actuelle plutôt que pour une machine générique. -
ext-gd2
n'est PAS inclus sauf si l'indicateur -g
est fourni, car PocketMine-MP n'en a pas besoin. Cependant, si vos plugins en ont besoin, n'oubliez pas de l'activer en utilisant -g
. - Les options
-c
et -l
peuvent être utilisées pour spécifier des dossiers de cache afin d'accélérer la recompilation si vous recompilez plusieurs fois (par exemple pour améliorer le script).
Pièges courants
- Évitez d'utiliser le script dans des arborescences de répertoires contenant des espaces. Certaines bibliothèques n'aiment pas essayer d'être construites dans des arborescences de répertoires contenant des espaces, par exemple
/home/user/my folder/pocketmine-mp/
pourrait rencontrer des problèmes. - Évitez les arborescences de répertoires contenant des symboles spéciaux (non anglais). Par exemple,
Développement
pourrait poser des problèmes.
Notes complémentaires
Mac OSX (compilation native)
- La plupart des dépendances peuvent être installées à l'aide de Homebrew
- Vous aurez également besoin
glibtool
(GNU libtool, xcode libtool ne fonctionnera pas)
Android 64 bits (compilation croisée)
- Seules les cibles aarch64 sont prises en charge pour la compilation croisée Android.
- La chaîne d'outils
aarch64-linux-musl
est requise. Vous pouvez le compiler et l'installer à l'aide de https://github.com/pmmp/musl-cross-make (le fork PMMP inclut les correctifs musl-libc pour le chemin de configuration du résolveur DNS et l'augmentation de la limite de taille de pile pour LevelDB)
Indicateurs de script | Description |
---|
-c | Utilise le dossier spécifié pour la mise en cache des archives tar, zipballs, etc. téléchargées. |
-d | Compile avec les symboles de débogage et désactive les optimisations (lent, mais utile pour déboguer les erreurs de segmentation) |
-D | Compile avec des symboles de débogage séparés, mais laisse les optimisations activées (utilisées pour les binaires distribués) |
-g | Compilera GD2 |
-j | Définissez la création de discussions sur # |
-l | Utilise le dossier spécifié pour la mise en cache des artefacts de compilation (utile pour une reconstruction et des tests rapides) |
-n | Ne supprimez pas les sources après avoir terminé la compilation |
-s | Compilera tout de manière statique |
-t | Définir un objectif |
-v | Activer le support de Valgrind en PHP |
-x | Spécifie que nous effectuons une compilation croisée |
-P | Compile les extensions pour la version majeure de PocketMine-MP spécifiée (peut être 4 ou 5 ) |
Exemple:
Cible | Arguments |
---|
Linux64 | -t linux64 -j4 -P5 |
Linux64, PM4 | -t linux64 -j4 -P4 |
mac64 | -t mac-x86-64 -j4 -P5 |
Android-aarch64 | -t android-aarch64 -x -j4 -P5 |
windows-compile-vs.bat
Script batch utilisant Visual Studio sous Windows pour compiler des binaires PHP à partir de sources. Assurez-vous que Visual Studio 2019, git
, 7z
et wget
sont installés dans votre PATH.
Ce script n'accepte pas de paramètres, mais les variables d'environnement suivantes ont de l'influence :
Variable | Description |
---|
PHP_DEBUG_BUILD | Désactive les optimisations et construit PHP avec des informations de débogage détaillées (utile pour déboguer les erreurs de segmentation) |
SOURCES_PATH | Où placer les sources téléchargées pour la compilation |
VS_EDITION | Édition de Visual Studio installée, définie sur Community par défaut |
PM_VERSION_MAJOR | Version majeure de PocketMine-MP pour laquelle créer des extensions (4 par défaut, peut être 4 ou 5 ) |
Pour les développeurs : sources d'informations sur la version
Bibliothèques
Nom du colis | URL des informations sur la version | Nécessaire pour | Remarques |
---|
zlib | https://github.com/madler/zlib/tags | Compression | |
gmp | https://gmplib.org/ | Mathématiques de grands entiers pour le chiffrement de paquets Bedrock | Hébergé chez DependencyMirror pour éviter les pannes de service |
boucle | https://github.com/curl/curl/releases | Requêtes Web | |
Libyeml | https://github.com/yaml/libyaml/releases | Analyse des fichiers de configuration YAML | |
niveauDB | https://github.com/pmmp/leveldb/commits/mojang-compatible/ | Soutien mondial de base | Version personnalisée basée sur google/leveldb avec les modifications minimales requises pour prendre en charge les mondes MCPE |
libxml | https://gitlab.gnome.org/GNOME/libxml2/-/releases | Prise en charge de l'analyse XML pour UPnP | Hébergé chez DependencyMirror pour éviter les pannes de service |
libpng | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd, plugin à utiliser uniquement | Hébergé chez DependencyMirror pour éviter les pannes de service |
libjpeg | https://ijg.org/ | php-gd, plugin à utiliser uniquement | Hébergé chez DependencyMirror pour éviter les pannes de service |
ouvressl | https://github.com/openssl/openssl/releases | Chiffrement des paquets de base, requêtes Web sécurisées | |
libzip | https://github.com/nih-at/libzip/releases | Packs de ressources | |
sqlite3 | https://sqlite.org/download.html | Utilisation du plugin uniquement | Hébergé chez DependencyMirror pour éviter les pannes de service |
libdéflate | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | Alternative plus rapide à zlib pour une utilisation en réseau | |
pthreads4w | https://sourceforge.net/projects/pthreads4w/files/ | Requis par ext-pmmpthread sous Windows | Hébergé chez DependencyMirror pour éviter les pannes de service |
PHP et extensions
Nom du colis | URL des informations sur la version | Nécessaire pour | Remarques |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | Tout | Remplacez 8.2 par la version de votre choix |
pmmpthread | https://github.com/pmmp/ext-pmmpthread/releases | Threading PHP | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | Analyse de la configuration YAML | Oui, le mélange de - et _ est intentionnel. Ne me demandez pas. |
niveauDB | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-compatible/ | Soutien mondial de base | Version personnalisée pour fournir la prise en charge LEVELDB_ZLIB_RAW_COMPRESSION |
chunkutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray et autres éléments de bas niveau | |
xdebug | https://github.com/xdebug/xdebug/releases | Débogage | Pas nécessaire à la production |
igbinaire | https://github.com/igbinary/igbinary/releases | Sérialisation plus rapide, principalement pour déplacer des éléments entre les threads | Non essentiel, pourrait être abandonné si nécessaire |
crypto | https://github.com/bukka/php-crypto/tags | Cryptage de paquets de base | |
récursionguard | https://github.com/pmmp/ext-recursionguard/releases | Débogage | Pas nécessaire à la production |
libdéflate | https://github.com/pmmp/ext-libdeflate/releases | Compression réseau plus rapide | Non essentiel mais offre un avantage significatif en termes de performances par rapport à zlib |
morton | https://github.com/pmmp/ext-morton | Emballage des coordonnées X/Z et X/Y/Z en entiers dans un format adapté aux clés de tableau PHP | Nécessaire à la performance |
xxhash | https://github.com/pmmp/ext-xxhash/releases | Non utilisé actuellement | Pourrait être remplacé par hash() dans les versions récentes de PHP mais cette extension a de bien meilleures performances |
tableaudebug | https://github.com/pmmp/ext-arraydebug/tags | Débogage des collisions de hachage de tableau | |
codage | https://github.com/pmmp/ext-encoding/releases | Non utilisé actuellement | Expérimental, destiné à remplacer BinaryUtils mais jamais terminé |
Divers
Nom du colis | URL des informations sur la version | Nécessaire pour | Remarques |
---|
php-sdk-binaire-outils | https://github.com/php/php-sdk-binary-tools/releases | Construire PHP sous Windows | |