php-compile.sh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #!/bin/bash
  2. MAIN_DIR=$(pwd)
  3. sudo apt-get update -y && sudo apt-get upgrade -y
  4. # Build Essentials
  5. sudo apt-get install -y build-essential
  6. sudo apt-get install -y libsodium-dev
  7. sudo apt-get install -y libonig-dev
  8. # Install Dependencies
  9. DEPENDENCIES_LIST=(
  10. "re2c"
  11. "ccache"
  12. "mysql-server"
  13. "libbz2-dev"
  14. "libcurl4-gnutls-dev"
  15. "libenchant-dev"
  16. "libfreetype6-dev"
  17. "libgmp-dev"
  18. "libicu-dev"
  19. "libjpeg-dev"
  20. "libkrb5-dev"
  21. "libonig-dev"
  22. "libpng-dev"
  23. "libpq-dev"
  24. "libsasl2-dev"
  25. "libsqlite3-dev"
  26. "libsodium-dev"
  27. "libtidy-dev"
  28. "libwebp-dev"
  29. "libxml2-dev"
  30. "libxpm-dev"
  31. "libxslt1-dev"
  32. "libzip-dev"
  33. "autoconf"
  34. "re2c"
  35. "bison"
  36. "sqlite3"
  37. "libsqlite3-dev"
  38. "libpq-dev"
  39. "libfcgi-dev"
  40. "libfcgi0ldbl"
  41. "libjpeg-dev"
  42. "libpng-dev"
  43. "libssl-dev"
  44. "libcurl4-openssl-dev"
  45. "libxpm-dev"
  46. "libgd-dev"
  47. "libmysqlclient-dev"
  48. "libfreetype6-dev"
  49. "libxslt1-dev"
  50. "libpspell-dev"
  51. "libzip-dev"
  52. "libicu-dev"
  53. "libldap2-dev"
  54. "libxslt-dev"
  55. "libssl-dev"
  56. "libldb-dev"
  57. "libgccjit-10-dev"
  58. "libargon2-dev"
  59. "zlib1g-dev"
  60. "binutils"
  61. "libtool"
  62. "bison"
  63. "re2c"
  64. "pkg-config"
  65. "make"
  66. "autoconf"
  67. "automake"
  68. )
  69. # Check if the dependencies are installed
  70. for DEPENDENCY in "${DEPENDENCIES_LIST[@]}"; do
  71. echo "Installing $DEPENDENCY..."
  72. sudo apt install -y $DEPENDENCY
  73. done
  74. # Download PHP source
  75. wget http://de2.php.net/distributions/php-8.2.0.tar.gz
  76. tar -zxvf php-8.2.0.tar.gz
  77. cd php-8.2.0
  78. # Configure PHP
  79. sudo make LIBDIR=/usr/lib/$(arch)-linux-gnu install
  80. ./buildconf --force
  81. ./configure --prefix=/usr/local/phyre/php \
  82. --with-libdir=lib/$(arch)-linux-gnu \
  83. --enable-fpm --with-fpm-user=admin --with-fpm-group=admin \
  84. --with-openssl \
  85. --with-mysqli \
  86. --with-gettext \
  87. --with-curl \
  88. --enable-intl \
  89. --with-zip \
  90. --with-gmp \
  91. --enable-mbstring
  92. #sudo ./configure --prefix=/usr/local/phyre/php \
  93. # --enable-fpm \
  94. # --with-fpm-user=admin \
  95. # --with-fpm-group=admin \
  96. # --enable-phpdbg \
  97. # --enable-fpm \
  98. # --with-pdo-mysql=mysqlnd \
  99. # --with-mysqli=mysqlnd \
  100. # --with-pgsql \
  101. # --with-pdo-pgsql \
  102. # --with-pdo-sqlite \
  103. # --enable-intl \
  104. # --without-pear \
  105. # --enable-gd \
  106. # --with-jpeg \
  107. # --with-webp \
  108. # --with-freetype \
  109. # --with-xpm \
  110. # --enable-exif \
  111. # --with-zip \
  112. # --with-zlib \
  113. # --enable-soap \
  114. # --enable-xmlreader \
  115. # --with-xsl \
  116. # --with-tidy \
  117. # --enable-sysvsem \
  118. # --enable-sysvshm \
  119. # --enable-shmop \
  120. # --enable-pcntl \
  121. # --with-readline \
  122. # --enable-mbstring \
  123. # --with-curl \
  124. # --with-gettext \
  125. # --enable-sockets \
  126. # --with-bz2 \
  127. # --with-openssl \
  128. # --with-gmp \
  129. # --enable-bcmath \
  130. # --enable-calendar \
  131. # --enable-ftp \
  132. # --enable-sysvmsg \
  133. # --with-sodium \
  134. # --enable-zend-test=shared \
  135. # --enable-dl-test=shared \
  136. # --enable-werror \
  137. # --with-pear \
  138. # --with-libdir=lib/$(arch)-linux-gnu
  139. # Compile PHP
  140. sudo make -j 4
  141. sudo make test
  142. sudo make install
  143. /usr/local/phyre/php/bin/php -v
  144. PACKAGE_MAIN_DIR=$MAIN_DIR/phyre-php-8.2.0
  145. sudo mkdir $PACKAGE_MAIN_DIR
  146. # Create debian package directories
  147. sudo mkdir -p $PACKAGE_MAIN_DIR/DEBIAN
  148. sudo mkdir -p $PACKAGE_MAIN_DIR/usr/local/phyre
  149. # Copy php compiled files
  150. sudo mv /usr/local/phyre/php $PACKAGE_MAIN_DIR/usr/local/phyre
  151. sudo cp $MAIN_DIR/php-fpm.conf $PACKAGE_MAIN_DIR/usr/local/phyre/php/etc
  152. # Copy debian package META file
  153. sudo cp $MAIN_DIR/control $PACKAGE_MAIN_DIR/DEBIAN
  154. sudo cp $MAIN_DIR/postinst $PACKAGE_MAIN_DIR/DEBIAN
  155. sudo cp $MAIN_DIR/postrm $PACKAGE_MAIN_DIR/DEBIAN
  156. # Set debian package post files permissions
  157. sudo chmod +x $PACKAGE_MAIN_DIR/DEBIAN/postinst
  158. sudo chmod +x $PACKAGE_MAIN_DIR/DEBIAN/postrm
  159. # Make debian package
  160. sudo dpkg-deb --build $PACKAGE_MAIN_DIR
  161. sudo dpkg --info $MAIN_DIR/phyre-php-8.2.0.deb
  162. sudo dpkg --contents $MAIN_DIR/phyre-php-8.2.0.deb
  163. # Move debian package to dist folder
  164. sudo mkdir -p $MAIN_DIR/dist
  165. sudo mv $MAIN_DIR/phyre-php-8.2.0.deb $MAIN_DIR/dist