From ddec7c6ec61c804b73c3d6b1da365c59bb48bded Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Fri, 28 Nov 2025 14:35:04 +0800 Subject: [PATCH 1/5] Add support for the dynamically linked glibc build --- .github/workflows/linux-glibc.yml | 150 ++++++++++++++++++ .gitignore | 3 + prepare.php | 7 +- sapi/SWOOLE-VERSION.conf | 2 +- .../build-swoole-cli-with-linux-gcc.sh | 16 +- sapi/scripts/copy-depend-libs.php | 99 ++++++++++++ sapi/scripts/download-swoole-src-archive.sh | 48 ++++++ sapi/scripts/install-deps-on-ubuntu.sh | 36 +++++ sapi/src/Preprocessor.php | 20 +++ sapi/src/builder/extension/swoole.php | 41 ----- sapi/src/template/make.php | 20 +++ sapi/src/template/nfpm-yaml.php | 24 +++ 12 files changed, 418 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/linux-glibc.yml create mode 100644 sapi/scripts/copy-depend-libs.php create mode 100755 sapi/scripts/download-swoole-src-archive.sh create mode 100755 sapi/scripts/install-deps-on-ubuntu.sh create mode 100644 sapi/src/template/nfpm-yaml.php diff --git a/.github/workflows/linux-glibc.yml b/.github/workflows/linux-glibc.yml new file mode 100644 index 0000000000..28e9b59f78 --- /dev/null +++ b/.github/workflows/linux-glibc.yml @@ -0,0 +1,150 @@ +name: build-swoole-cli-linux-glibc-x86_64 + +on: [ push, pull_request ] + +jobs: + linux-glibc: + if: ${{ !contains(github.event.head_commit.message, '--filter=') || contains(github.event.head_commit.message, '[linux-glibc]') }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-22.04, ubuntu-22.04-arm ] + name: linux-glibc-${{ matrix.os }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - name: Show Environment Info + run: | + echo $PATH + env + docker info + id -u + id -g + who + cat /etc/os-release + hostnamectl + uname -s + uname -m + uname -r + + cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c + cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l + cat /proc/cpuinfo | grep "cpu cores" | uniq + cat /proc/cpuinfo| grep "processor"| wc -l + lscpu + + export IPV6=$(ip -6 address show | grep inet6 | awk '{print $2}' | cut -d'/' -f1 | sed -n '2p') + export IPV4=$(ip -4 address show | grep inet | grep -v 127.0.0 | awk '{print $2}' | cut -d'/' -f1 | sed -n '1p') + echo $IPV4 + echo $IPV6 + echo "X_IPV6=${IPV6}" >> $GITHUB_ENV + echo "X_IPV4=${IPV4}" >> $GITHUB_ENV + + - name: Prepare Build Environment + run: | + git submodule update --init + + sudo mkdir -p /usr/local/swoole-cli + uid=$(id -u) && gid=$(id -g) && sudo chown -R ${uid}:${gid} /usr/local/swoole-cli + + mkdir -p ${{ github.workspace }}/var/build-github-action-container/ + + - name: Cache PHP Runtime + uses: actions/cache@v4 + id: php-runtime-cache-x86_64 + with: + path: ${{ github.workspace }}/runtime + key: ${{ runner.os }}-x86_64-php-runtime + + - name: Cache PHP Vendor + uses: actions/cache@v4 + id: php-vendor-cache-x86_64 + with: + path: ${{ github.workspace }}/vendor + key: ${{ runner.os }}-x86_64-php-vendor + + - name: Cache Dependency Source Code Tarball + uses: actions/cache@v4 + id: pool-cache + with: + path: ${{ github.workspace }}/pool/ + key: source-code-tarball-pool + + - name: Cache all-library + uses: actions/cache@v4 + id: all-library-cache-x86_64 + with: + path: /usr/local/swoole-cli + key: ${{ github.head_ref || github.ref_name }}-${{ runner.os }}-x86_64-all-library + + - name: Prepare Runtime and Libraries and Extensions + run: | + set -x + mkdir -p pool/lib + mkdir -p pool/ext + mkdir -p bin/ + mkdir -p runtime/ + test -f runtime/php && rm -f runtime/php + if [ ! -f runtime/php/php ] ; then + bash setup-php-runtime.sh + fi + bash sapi/download-box/download-box-get-archive-from-server.sh + ls -A pool/lib/ + ls -A /usr/local/swoole-cli/ + + - name: Build + run: | + set -eux + uname -m + composer install --no-interaction --no-autoloader --no-scripts --profile + composer dump-autoload --optimize --profile + + php prepare.php --with-libavif + + sudo apt update + bash ./sapi/scripts/install-deps-on-ubuntu.sh + bash ./ext/swoole/scripts/install-deps-on-ubuntu.sh + bash ./sapi/scripts/build-swoole-cli-with-linux-gcc.sh + + ./bin/swoole-cli -v + ./bin/swoole-cli -m + ./bin/swoole-cli --ri curl + ./bin/swoole-cli --ri gd + ./bin/swoole-cli --ri imagick + ./bin/swoole-cli --ri swoole + { ldd ./bin/swoole-cli ; } || { echo $? ; } ; + file ./bin/swoole-cli + + - name: Make nfpm package + run: | + ARCH=$(uname -m) + if [ "$ARCH" = "aarch64" ]; then + NFPM_ARCH="arm64" + else + NFPM_ARCH="amd64" + fi + wget https://github.com/goreleaser/nfpm/releases/download/v2.43.4/nfpm_2.43.4_${NFPM_ARCH}.deb + sudo dpkg -i nfpm_2.43.4_${NFPM_ARCH}.deb + strip ./bin/swoole-cli + ./make.sh nfpm-pkg + ls -ls ./*.deb + ls -ls ./*.rpm + + - name: upload artifacts to cloud object storage + if: ${{ (github.repository == 'swoole/swoole-cli') && (startsWith(github.ref, 'refs/tags/')) }} + env: + OSS_SECRET_ID: ${{ secrets.QCLOUD_OSS_SECRET_ID }} + OSS_SECRET_KEY: ${{ secrets.QCLOUD_OSS_SECRET_KEY }} + OSS_BUCKET: ${{ vars.QCLOUD_OSS_BUCKET }} + OSS_REGION: ${{ vars.QCLOUD_OSS_REGION }} + run: | + ARCH=$(uname -m) + if [ "$ARCH" = "aarch64" ]; then + FILE_ARCH="arm64" + else + FILE_ARCH="x64" + fi + SWOOLE_VERSION=$(awk 'NR==1{ print $1 }' "sapi/SWOOLE-VERSION.conf") + OS="linux" + bash sapi/scripts/tencent-cloud-object-storage.sh --upload-file ${{ github.workspace }}/swoole-cli-"${SWOOLE_VERSION}-${OS}-${FILE_ARCH}"-glibc.deb + bash sapi/scripts/tencent-cloud-object-storage.sh --upload-file ${{ github.workspace }}/swoole-cli-"${SWOOLE_VERSION}-${OS}-${FILE_ARCH}"-glibc.rpm diff --git a/.gitignore b/.gitignore index 301ea23b8e..092cd9d96e 100644 --- a/.gitignore +++ b/.gitignore @@ -327,3 +327,6 @@ cppflags.log libs.log /runtime !/runtime/.gitkeep +*.deb +*.rpm +nfpm-pkg.yaml diff --git a/prepare.php b/prepare.php index 08c9f4bc6a..1e65a07d55 100755 --- a/prepare.php +++ b/prepare.php @@ -7,7 +7,6 @@ $php_version_tag = trim(file_get_contents(__DIR__ . '/sapi/PHP-VERSION.conf')); define('BUILD_PHP_VERSION', $php_version_tag); - $homeDir = getenv('HOME'); $p = Preprocessor::getInstance(); $p->parseArguments($argc, $argv); @@ -26,13 +25,17 @@ // Sync code from php-src $p->setPhpSrcDir($p->getWorkDir() . '/var/php-' . BUILD_PHP_VERSION); +// Download swoole-src +if (!is_dir(__DIR__ . '/ext/swoole')) { + shell_exec(__DIR__ . '/sapi/scripts/download-swoole-src-archive.sh'); +} + // Compile directly on the host machine, not in the docker container if ($p->getInputOption('without-docker') || ($p->isMacos())) { $p->setWorkDir(__DIR__); $p->setBuildDir(__DIR__ . '/thirdparty'); } - if ($p->getInputOption('with-global-prefix')) { $p->setGlobalPrefix($p->getInputOption('with-global-prefix')); } diff --git a/sapi/SWOOLE-VERSION.conf b/sapi/SWOOLE-VERSION.conf index 035fbdc6e7..b2c63a1c1b 100644 --- a/sapi/SWOOLE-VERSION.conf +++ b/sapi/SWOOLE-VERSION.conf @@ -1 +1 @@ -v6.1.1 +v6.1.3 diff --git a/sapi/scripts/build-swoole-cli-with-linux-gcc.sh b/sapi/scripts/build-swoole-cli-with-linux-gcc.sh index a5155870f6..ed76758c6c 100755 --- a/sapi/scripts/build-swoole-cli-with-linux-gcc.sh +++ b/sapi/scripts/build-swoole-cli-with-linux-gcc.sh @@ -1,4 +1,9 @@ -./configure --prefix=/usr --disable-all \ +if [ ! -f ./configure ]; then + ./buildconf --force +fi + +./configure --prefix=/usr/local/swoole-cli \ + --disable-all \ --enable-zts \ --without-pcre-jit \ --with-openssl --enable-openssl \ @@ -31,17 +36,20 @@ --with-sodium \ --enable-xml --enable-simplexml --enable-xmlreader --enable-xmlwriter --enable-dom --with-libxml \ --enable-gd --with-jpeg --with-freetype \ - --enable-swoole --enable-sockets --enable-mysqlnd --enable-swoole-curl --enable-cares \ + --enable-swoole \ + --enable-swoole-curl \ + --enable-cares \ --enable-swoole-pgsql \ --enable-swoole-sqlite \ + --with-swoole-odbc=unixODBC,/usr \ --enable-swoole-thread \ + --enable-swoole-stdext \ --enable-brotli \ --enable-zstd \ - --enable-swoole-stdext \ --enable-redis \ --with-imagick \ --with-yaml \ --with-readline \ --enable-opcache -make -j "$(nproc)" \ No newline at end of file +make -j "$(nproc)" diff --git a/sapi/scripts/copy-depend-libs.php b/sapi/scripts/copy-depend-libs.php new file mode 100644 index 0000000000..a1d7a8703f --- /dev/null +++ b/sapi/scripts/copy-depend-libs.php @@ -0,0 +1,99 @@ + (typical ldd output) + if (preg_match('/^\s*.*\s+=>\s+(\/.*)\s+\(0x[0-9a-f]+\)$/', $line, $matches)) { + $libPath = trim($matches[1]); + if (file_exists($libPath)) { + $dependencies[] = $libPath; + } + } + // Match lines without => (statically linked or direct paths) + elseif (preg_match('/^\s+(\/.*)\s+\(0x[0-9a-f]+\)$/', $line, $matches)) { + $libPath = trim($matches[1]); + if (file_exists($libPath)) { + $dependencies[] = $libPath; + } + } +} + +// Remove duplicates +$dependencies = array_unique($dependencies); + +// Filter out ignored libraries +$filteredDependencies = []; +foreach ($dependencies as $libPath) { + $fileName = basename($libPath); + foreach ($ignoredLibraries as $ignoredLib) { + if (strpos($fileName, $ignoredLib) !== false) { + echo "Skipping system library: $fileName\n"; + continue 2; + } + } + $filteredDependencies[] = $libPath; +} + +echo "Found " . count($filteredDependencies) . " dependencies (excluding system libraries)\n"; + +// Copy each dependency to target directory +$successCount = 0; +foreach ($filteredDependencies as $libPath) { + $fileName = basename($libPath); + $targetPath = "$targetDir/$fileName"; + + echo "Copying $libPath to $targetPath... "; + + if (copy($libPath, $targetPath)) { + echo "SUCCESS\n"; + $successCount++; + } else { + echo "FAILED\n"; + } +} + +echo "Successfully copied $successCount out of " . count($filteredDependencies) . " dependencies\n"; diff --git a/sapi/scripts/download-swoole-src-archive.sh b/sapi/scripts/download-swoole-src-archive.sh new file mode 100755 index 0000000000..9818ba63e7 --- /dev/null +++ b/sapi/scripts/download-swoole-src-archive.sh @@ -0,0 +1,48 @@ +__DIR__=$( + cd "$(dirname "$0")" || exit + pwd +) + +WORKDIR=$( + cd "${__DIR__}"/../../ || exit + pwd +) + +ORIGIN_SWOOLE_VERSION=$(awk 'NR==1{ print $1 }' "sapi/SWOOLE-VERSION.conf") +SWOOLE_VERSION=$(echo "${ORIGIN_SWOOLE_VERSION}" | sed 's/[^a-zA-Z0-9]/_/g') +CURRENT_SWOOLE_VERSION='' + +cd "${WORKDIR}" || exit + +TGZ_FILE="${WORKDIR}/pool/ext/swoole-${ORIGIN_SWOOLE_VERSION}.tgz" +SWOOLE_DIR="${WORKDIR}/ext/swoole/" + +if [ -f "ext/swoole/CMakeLists.txt" ] ;then + CURRENT_SWOOLE_VERSION=$(grep 'set(SWOOLE_VERSION' ext/swoole/CMakeLists.txt | awk '{ print $2 }' | sed 's/)//') + if [[ "${CURRENT_SWOOLE_VERSION}" =~ "-dev" ]]; then + echo 'swoole version master' + if [ -n "${GITHUB_ACTION}" ]; then + test -f "$TGZ_FILE" && rm -f "$TGZ_FILE" + CURRENT_SWOOLE_VERSION='' + fi + fi +fi + +if [ "${SWOOLE_VERSION}" != "${CURRENT_SWOOLE_VERSION}" ] ;then + if [ ! -f "$TGZ_FILE" ] ;then + echo "downloading swoole-${ORIGIN_SWOOLE_VERSION}.tgz" + test -d /tmp/swoole && rm -rf /tmp/swoole + git clone -b "${ORIGIN_SWOOLE_VERSION}" https://github.com/swoole/swoole-src.git /tmp/swoole + status=$? + if [[ $status -ne 0 ]]; then { echo $status ; exit 1 ; } fi + cd /tmp/swoole || exit + rm -rf /tmp/swoole/.git/ + tar -czvf "$TGZ_FILE" . + fi + + if [ ! -d "$SWOOLE_DIR" ] ;then + echo "unpacking swoole-${ORIGIN_SWOOLE_VERSION}.tgz" + mkdir -p "${SWOOLE_DIR}" + tar --strip-components=1 -C "${SWOOLE_DIR}" -xf "$TGZ_FILE" + fi +fi diff --git a/sapi/scripts/install-deps-on-ubuntu.sh b/sapi/scripts/install-deps-on-ubuntu.sh new file mode 100755 index 0000000000..6f4a7e73d7 --- /dev/null +++ b/sapi/scripts/install-deps-on-ubuntu.sh @@ -0,0 +1,36 @@ +# build tools +sudo apt install gcc g++ make autoconf libtool pkg-config re2c + +# libraries +sudo apt install libyaml-dev \ + libssl-dev \ + libxml2-dev \ + libmagic-dev \ + libpng-dev \ + libjpeg-dev \ + libfreetype-dev \ + libc-ares-dev \ + libpcre2-dev \ + libsodium-dev \ + libcurl4-openssl-dev \ + libmariadb-dev \ + libaio-dev \ + zlib1g \ + mime-support \ + tzdata \ + ucf \ + libargon2-dev \ + libsqlite3-dev \ + libbrotli-dev \ + libpq-dev \ + unixodbc-dev \ + firebird-dev \ + libzstd-dev \ + libssh-dev \ + liburing-dev \ + libedit-dev \ + libreadline-dev \ + libmagic-dev \ + libonig-dev \ + libxslt-dev \ + libzip-dev diff --git a/sapi/src/Preprocessor.php b/sapi/src/Preprocessor.php index c7218c1f1f..3da0fd4d0a 100644 --- a/sapi/src/Preprocessor.php +++ b/sapi/src/Preprocessor.php @@ -37,6 +37,7 @@ class Preprocessor protected string $libraryDir; protected string $extensionDir; protected array $pkgConfigPaths = []; + protected array $nfpmDepends = []; protected string $phpSrcDir; protected string $dockerVersion = 'latest'; /** @@ -137,6 +138,19 @@ public function getSystemArch(): string } } + public function getDebArch(): string + { + $uname = posix_uname(); + switch ($uname['machine']) { + case 'x86_64': + return 'amd64'; + case 'aarch64': + return 'arm64'; + default: + return $uname['machine']; + } + } + public function getImageTag(): string { $arch = $this->getSystemArch(); @@ -218,6 +232,11 @@ public function getBuildDir(): string return $this->buildDir; } + public function getSwooleVersion(): string + { + return trim(file_get_contents($this->rootDir . '/sapi/SWOOLE-VERSION.conf')); + } + public function getWorkDir(): string { return $this->workDir; @@ -806,6 +825,7 @@ public function execute(): void $this->mkdirIfNotExists($this->rootDir . '/bin'); $this->generateFile(__DIR__ . '/template/license.php', $this->rootDir . '/bin/LICENSE'); $this->generateFile(__DIR__ . '/template/credits.php', $this->rootDir . '/bin/credits.html'); + $this->generateFile(__DIR__ . '/template/nfpm-yaml.php', $this->rootDir . '/nfpm-pkg.yaml'); copy($this->rootDir . '/sapi/scripts/pack-sfx.php', $this->rootDir . '/bin/pack-sfx.php'); diff --git a/sapi/src/builder/extension/swoole.php b/sapi/src/builder/extension/swoole.php index 4abadd4139..6213b213f4 100644 --- a/sapi/src/builder/extension/swoole.php +++ b/sapi/src/builder/extension/swoole.php @@ -47,45 +47,4 @@ $p->withExportVariable('ZSTD_LIBS', '$(pkg-config --libs --static libzstd)'); $p->withExportVariable('SWOOLE_ODBC_LIBS', '$(pkg-config --libs-only-L --libs-only-l --static odbc odbccr odbcinst readline ncursesw ) ' . " -L{$libiconv_prefix}/lib -liconv "); - - $p->withBeforeConfigureScript('swoole', function () use ($p) { - $workDir = $p->getWorkDir(); - $shell = "set -x ;cd {$workDir} ; WORKDIR={$workDir} ;" . PHP_EOL; - $shell .= <<<'EOF' - - SWOOLE_VERSION=$(awk 'NR==1{ print $1 }' "sapi/SWOOLE-VERSION.conf") - ORIGIN_SWOOLE_VERSION=${SWOOLE_VERSION} - SWOOLE_VERSION=$(echo "${SWOOLE_VERSION}" | sed 's/[^a-zA-Z0-9]/_/g') - CURRENT_SWOOLE_VERSION='' - - if [ -f "ext/swoole/CMakeLists.txt" ] ;then - CURRENT_SWOOLE_VERSION=$(grep 'set(SWOOLE_VERSION' ext/swoole/CMakeLists.txt | awk '{ print $2 }' | sed 's/)//') - if [[ "${CURRENT_SWOOLE_VERSION}" =~ "-dev" ]]; then - echo 'swoole version master' - if [ -n "${GITHUB_ACTION}" ]; then - test -f ${WORKDIR}/pool/ext/swoole-${SWOOLE_VERSION}.tgz && rm -f ${WORKDIR}/pool/ext/swoole-${SWOOLE_VERSION}.tgz - CURRENT_SWOOLE_VERSION='' - fi - fi - fi - - if [ "${SWOOLE_VERSION}" != "${CURRENT_SWOOLE_VERSION}" ] ;then - test -d ext/swoole && rm -rf ext/swoole - if [ ! -f ${WORKDIR}/pool/ext/swoole-${SWOOLE_VERSION}.tgz ] ;then - test -d /tmp/swoole && rm -rf /tmp/swoole - git clone -b "${ORIGIN_SWOOLE_VERSION}" https://github.com/swoole/swoole-src.git /tmp/swoole - status=$? - if [[ $status -ne 0 ]]; then { echo $status ; exit 1 ; } fi - cd /tmp/swoole - rm -rf /tmp/swoole/.git/ - tar -czvf ${WORKDIR}/pool/ext/swoole-${SWOOLE_VERSION}.tgz . - fi - mkdir -p ${WORKDIR}/ext/swoole/ - tar --strip-components=1 -C ${WORKDIR}/ext/swoole/ -xf ${WORKDIR}/pool/ext/swoole-${SWOOLE_VERSION}.tgz - fi - # swoole extension hook -EOF; - - return $shell; - }); }; diff --git a/sapi/src/template/make.php b/sapi/src/template/make.php index 91ab9d56f6..d9acd45968 100755 --- a/sapi/src/template/make.php +++ b/sapi/src/template/make.php @@ -310,6 +310,23 @@ rm -f ext/opcache/minilua } +make_swoole_cli_with_linux_gcc() { + if [ ! -f bin/swoole-cli ] ;then + ./buildconf --force + ./sapi/scripts/build-swoole-cli-with-linux-gcc.sh + fi +} + +make_nfpm_pkg() { + make_swoole_cli_with_linux_gcc + ./bin/swoole-cli sapi/scripts/copy-depend-libs.php + patchelf --force-rpath --set-rpath '/usr/local/swoole-cli/lib' bin/swoole-cli + NFPM_PKG_FILENAME=swoole-cli-getSwooleVersion()?>-linux-getSystemArch()?>-glibc + nfpm pkg --config nfpm-pkg.yaml --target "${NFPM_PKG_FILENAME}.rpm" + nfpm pkg --config nfpm-pkg.yaml --target "${NFPM_PKG_FILENAME}.deb" + return 0 +} + help() { echo "./make.sh docker-build [ china | ustc | tuna ]" echo "./make.sh docker-bash" @@ -331,6 +348,7 @@ echo "./make.sh list-swoole-branch" echo "./make.sh switch-swoole-branch" echo "./make.sh [library-name]" + echo "./make.sh nfpm-pkg" echo "./make.sh clean-[library-name]" echo "./make.sh clean-[library-name]-cached" echo "./make.sh clean" @@ -459,6 +477,8 @@ echo "name ?>" exit 0 +elif [ "$1" = "nfpm-pkg" ] ;then + make_nfpm_pkg elif [ "$1" = "clean" ] ;then make_clean elif [ "$1" = "variables" ] ;then diff --git a/sapi/src/template/nfpm-yaml.php b/sapi/src/template/nfpm-yaml.php new file mode 100644 index 0000000000..430f68e3a1 --- /dev/null +++ b/sapi/src/template/nfpm-yaml.php @@ -0,0 +1,24 @@ +name: "swoole-cli" +arch: "getDebArch()?>" +platform: "getOsType()?>" +version: "getSwooleVersion()?>" +section: "default" +priority: "extra" +maintainer: "service " +description: | + SWOOLE-CLI is a php binary distribution composed swoole & php-core & cli & fpm and mostly of common extensions +homepage: "https://github.com/swoole/swoole-cli" + +overrides: + deb: + depends: + - libc6 (>=2.35) + rpm: + depends: + - glibc >= 2.35 + +contents: + - src: "bin/swoole-cli" + dst: "/usr/local/bin/swoole-cli" + - src: "runtime/libs/" + dst: "/usr/local/swoole-cli/lib/" From ceca0cdf59cbb3c07a771af722d6000c3b19726b Mon Sep 17 00:00:00 2001 From: jingjingxyk Date: Sat, 29 Nov 2025 22:41:57 +0800 Subject: [PATCH 2/5] update msys2 build config --- .github/workflows/windows-msys2.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows-msys2.yml b/.github/workflows/windows-msys2.yml index f5a3075105..1b951ac1af 100644 --- a/.github/workflows/windows-msys2.yml +++ b/.github/workflows/windows-msys2.yml @@ -69,6 +69,7 @@ jobs: shell: msys2 {0} run: | bash ./sapi/scripts/msys2/install-deps-lib.sh + bash sapi/download-box/download-box-get-archive-from-server.sh - name: Prepare shell: msys2 {0} From 883f4d516efa748007556a6d5cfec0e4579ca562 Mon Sep 17 00:00:00 2001 From: jingjingxyk Date: Sun, 30 Nov 2025 08:40:56 +0800 Subject: [PATCH 3/5] =?UTF-8?q?cygwin=20=E6=9A=82=E5=81=9C=E7=BC=96?= =?UTF-8?q?=E8=AF=91=20php=208.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/windows-cygwin.yml | 2 +- .github/workflows/windows-msys2.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-cygwin.yml b/.github/workflows/windows-cygwin.yml index 88484f8b8f..3c25091d15 100644 --- a/.github/workflows/windows-cygwin.yml +++ b/.github/workflows/windows-cygwin.yml @@ -15,7 +15,7 @@ jobs: matrix: php-version: - "8.2.29" - - "8.1.33" + # - "8.1.33" - "8.3.28" - "8.4.15" # - "8.5.0" diff --git a/.github/workflows/windows-msys2.yml b/.github/workflows/windows-msys2.yml index 1b951ac1af..118e7c55f1 100644 --- a/.github/workflows/windows-msys2.yml +++ b/.github/workflows/windows-msys2.yml @@ -74,7 +74,7 @@ jobs: - name: Prepare shell: msys2 {0} run: | - bash ./sapi/scripts/msys2/config-ext.sh --php-version ${{ env.BUILD_PHP_VERSION }} --swoole-version master + bash ./sapi/scripts/msys2/config-ext.sh --php-version ${{ env.BUILD_PHP_VERSION }} - name: Configure shell: msys2 {0} From 0fbcf3c62ab31ed30d6284725875bbbcf5e23750 Mon Sep 17 00:00:00 2001 From: jingjingxyk Date: Sun, 30 Nov 2025 10:35:36 +0800 Subject: [PATCH 4/5] update cygwin build config --- .github/workflows/windows-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-cygwin.yml b/.github/workflows/windows-cygwin.yml index 3c25091d15..23f37ffbd4 100644 --- a/.github/workflows/windows-cygwin.yml +++ b/.github/workflows/windows-cygwin.yml @@ -95,7 +95,7 @@ jobs: - name: Prepare shell: C:\cygwin\bin\bash.EXE --noprofile --norc -e -o pipefail -o igncr {0} run: | - bash ./sapi/scripts/cygwin/cygwin-config-ext.sh --php-version ${{ env.BUILD_PHP_VERSION }} --swoole-version master + bash ./sapi/scripts/cygwin/cygwin-config-ext.sh --php-version ${{ env.BUILD_PHP_VERSION }} - name: Configure shell: C:\cygwin\bin\bash.EXE --noprofile --norc -e -o pipefail -o igncr {0} From d9aaa21641aacf8429205f316ac44292c9ea5b49 Mon Sep 17 00:00:00 2001 From: jingjingxyk Date: Sun, 30 Nov 2025 19:07:18 +0800 Subject: [PATCH 5/5] cygwin enable php 8.1 --- .github/workflows/windows-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-cygwin.yml b/.github/workflows/windows-cygwin.yml index 23f37ffbd4..df59e5ad53 100644 --- a/.github/workflows/windows-cygwin.yml +++ b/.github/workflows/windows-cygwin.yml @@ -15,7 +15,7 @@ jobs: matrix: php-version: - "8.2.29" - # - "8.1.33" + - "8.1.33" - "8.3.28" - "8.4.15" # - "8.5.0"