Scripts de construção PHP personalizados para PocketMine-MP
Procurando binários pré-construídos? Vá para os lançamentos
compilar.sh
Script Bash usado para compilar PHP em plataformas MacOS e Linux. Certifique-se de ter make autoconf automake libtool m4 wget getconf gzip bzip2 bison g++ git cmake pkg-config re2c ca-certificates
.
Recomendações
- Se você for usar o binário compilado apenas na máquina em que o está construindo, remova a opção
-t
para obter melhor desempenho - isso permitirá que o script seja otimizado para a máquina atual em vez de uma máquina genérica. -
ext-gd2
NÃO está incluído a menos que o sinalizador -g
seja fornecido, pois o PocketMine-MP não precisa dele. No entanto, se seus plugins precisarem, não se esqueça de habilitá-los usando -g
. - As opções
-c
e -l
podem ser usadas para especificar pastas de cache para acelerar a recompilação se você estiver recompilando muitas vezes (por exemplo, para melhorar o script).
Armadilhas comuns
- Evite usar o script em árvores de diretórios que contenham espaços. Algumas bibliotecas não gostam de tentar ser construídas em árvores de diretórios contendo espaços, por exemplo
/home/user/my folder/pocketmine-mp/
pode ter problemas. - Evite árvores de diretórios contendo símbolos especiais (não ingleses). Por exemplo,
Développement
pode causar problemas.
Notas adicionais
Mac OSX (compilação nativa)
- A maioria das dependências pode ser instalada usando Homebrew
- Você também precisará
glibtool
(GNU libtool, xcode libtool não funcionará)
Android de 64 bits (compilação cruzada)
- Somente destinos aarch64 são compatíveis com compilação cruzada do Android.
- O conjunto de ferramentas
aarch64-linux-musl
é necessário. Você pode compilá-lo e instalá-lo usando https://github.com/pmmp/musl-cross-make (o fork PMMP inclui patches musl-libc para o caminho de configuração do resolvedor DNS e aumenta o limite de tamanho de pilha para LevelDB)
Sinalizadores de script | Descrição |
---|
-c | Usa a pasta especificada para armazenar em cache tarballs, zipballs etc. |
-d | Compila com símbolos de depuração e desativa otimizações (lento, mas útil para depuração de segfaults) |
-D | Compila com símbolos de depuração separados, mas deixa as otimizações habilitadas (usadas para binários distribuídos) |
-g | Irá compilar o GD2 |
-j | Defina criar threads como # |
-eu | Usa a pasta especificada para armazenar artefatos de compilação em cache (útil para reconstrução e teste rápidos) |
-n | Não remova as fontes após concluir a compilação |
-s | Compilará tudo estaticamente |
-t | Definir meta |
-v | Habilite o suporte Valgrind em PHP |
-x | Especifica que estamos fazendo compilação cruzada |
-P | Compila extensões para a versão principal do PocketMine-MP especificada (pode ser 4 ou 5 ) |
Exemplo:
Alvo | Argumentos |
---|
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 em lote utilizando Visual Studio no Windows para compilar binários PHP a partir de fontes. Certifique-se de ter o Visual Studio 2019, git
, 7z
e wget
instalados em seu PATH.
Este script não aceita parâmetros, mas as seguintes variáveis de ambiente são influentes:
Variável | Descrição |
---|
PHP_DEBUG_BUILD | Desativa otimizações e cria PHP com informações detalhadas de depuração (útil para depurar segfaults) |
SOURCES_PATH | Onde colocar as fontes baixadas para compilação |
VS_EDITION | Edição do Visual Studio instalada, definida como Community por padrão |
PM_VERSION_MAJOR | Versão principal do PocketMine-MP para construir extensões (o padrão é 4, pode ser 4 ou 5 ) |
Para desenvolvedores: fontes de informações de versão
Bibliotecas
Nome do pacote | URL de informações da versão | Necessário para | Notas |
---|
zlib | https://github.com/madler/zlib/tags | Compressão | |
GMP | https://gmplib.org/ | Matemática de números inteiros grandes para criptografia de pacotes Bedrock | Hospedado no DependencyMirror para evitar interrupções no serviço |
enrolar | https://github.com/curl/curl/releases | Solicitações da Web | |
líbiaml | https://github.com/yaml/libyaml/releases | Analisando arquivos de configuração YAML | |
níveldb | https://github.com/pmmp/leveldb/commits/mojang-compatível/ | Suporte mundial Bedrock | Versão personalizada baseada em google/leveldb com alterações mínimas necessárias para suportar mundos MCPE |
libxml | https://gitlab.gnome.org/GNOME/libxml2/-/releases | Suporte de análise XML para UPnP | Hospedado no DependencyMirror para evitar interrupções no serviço |
libpng | https://sourceforge.net/projects/libpng/files/libpng16/ | php-gd, plug-in apenas para uso | Hospedado no DependencyMirror para evitar interrupções no serviço |
libjpeg | https://ijg.org/ | php-gd, plug-in apenas para uso | Hospedado no DependencyMirror para evitar interrupções no serviço |
abressl | https://github.com/openssl/openssl/releases | Criptografia de pacotes básicos, solicitações seguras da web | |
libzip | https://github.com/nih-at/libzip/releases | Pacotes de recursos | |
sqlite3 | https://sqlite.org/download.html | Somente uso de plug-in | Hospedado no DependencyMirror para evitar interrupções no serviço |
libdeflate | https://github.com/ebiggers/libdeflate/blob/master/NEWS.md | Alternativa mais rápida ao zlib para uso em rede | |
pthreads4w | https://sourceforge.net/projects/pthreads4w/files/ | Necessário para ext-pmmpthread no Windows | Hospedado no DependencyMirror para evitar interrupções no serviço |
PHP e extensões
Nome do pacote | URL de informações da versão | Necessário para | Notas |
---|
PHP | https://www.php.net/releases/?json&version=8.2 | Tudo | Substitua 8.2 pela versão escolhida |
pmmpthread | https://github.com/pmmp/ext-pmmpthread/releases | Encadeamento PHP | |
yaml | https://github.com/php/pecl-file_formats-yaml/tags | Análise de configuração YAML | Sim, a mistura de - e _ é intencional. Não me pergunte. |
níveldb | https://github.com/pmmp/php-leveldb/commits/pmmp-mojang-compatível/ | Suporte mundial Bedrock | Versão personalizada para fornecer suporte LEVELDB_ZLIB_RAW_COMPRESSION |
chunkutils2 | https://github.com/pmmp/ext-chunkutils2/releases | PalettedBlockArray e outras coisas de baixo nível | |
xdebug | https://github.com/xdebug/xdebug/releases | Depuração | Não é necessário para produção |
binário | https://github.com/igbinary/igbinary/releases | Serialização mais rápida, principalmente para mover coisas entre threads | Não essencial, pode ser descartado se necessário |
criptografia | https://github.com/bukka/php-crypto/tags | Criptografia de pacote fundamental | |
guarda de recursão | https://github.com/pmmp/ext-recursionguard/releases | Depuração | Não é necessário para produção |
libdeflate | https://github.com/pmmp/ext-libdeflate/releases | Compressão de rede mais rápida | Não essencial, mas oferece vantagem significativa de desempenho em relação ao zlib |
morton | https://github.com/pmmp/ext-morton | Empacotando coordenadas X/Z e X/Y/Z em inteiros em um formato adequado para chaves de array PHP | Necessário para desempenho |
xxhash | https://github.com/pmmp/ext-xxhash/releases | Não usado atualmente | Poderia ser substituído por hash() em versões recentes do PHP, mas esta extensão tem um desempenho muito melhor |
arraydebug | https://github.com/pmmp/ext-arraydebug/tags | Depurando colisões de hash de array | |
codificação | https://github.com/pmmp/ext-encoding/releases | Não usado atualmente | Experimental, destinado a substituir BinaryUtils , mas nunca concluído |
Diversos
Nome do pacote | URL de informações da versão | Necessário para | Notas |
---|
php-sdk-binary-tools | https://github.com/php/php-sdk-binary-tools/releases | Construindo PHP no Windows | |