diff --git a/config/ext.json b/config/ext.json index 3c0b1960..2a78acb1 100644 --- a/config/ext.json +++ b/config/ext.json @@ -165,7 +165,11 @@ "mongodb": { "type": "external", "source": "mongodb", - "arg-type": "custom" + "arg-type": "custom", + "lib-suggests": [ + "icu", + "openssl" + ] }, "mysqli": { "type": "builtin", diff --git a/quickstart/linux/x86_64/README.md b/quickstart/linux/README.md similarity index 51% rename from quickstart/linux/x86_64/README.md rename to quickstart/linux/README.md index deb80a2b..c6090a30 100644 --- a/quickstart/linux/x86_64/README.md +++ b/quickstart/linux/README.md @@ -8,13 +8,13 @@ ```bash # 启动 debian 11 容器环境 -sh quickstart/linux/x86_64/run-debian-11-container.sh +sh quickstart/linux/run-debian-11-container.sh # 进入容器 -sh quickstart/linux/x86_64/connection-static-php-cli.sh +sh quickstart/linux/connection-static-php-cli.sh # 准备构建基础软件 -sh quickstart/linux/x86_64/debian-11-init.sh +sh quickstart/linux/debian-11-init.sh ``` @@ -23,12 +23,12 @@ sh quickstart/linux/x86_64/debian-11-init.sh ```bash # 启动 alpine 容器环境 -sh quickstart/linux/x86_64/run-alpine-3.16-container.sh +sh quickstart/linux/run-alpine-3.16-container.sh # 进入容器 -sh sh quickstart/linux/x86_64/connection-static-php-cli.sh +sh sh quickstart/linux/connection-static-php-cli.sh # 准备构建基础软件 -sh quickstart/linux/x86_64/alpine-3.16-init.sh +sh quickstart/linux/alpine-3.16-init.sh ``` \ No newline at end of file diff --git a/quickstart/linux/x86_64/alpine-3.16-init.sh b/quickstart/linux/alpine-3.16-init.sh similarity index 89% rename from quickstart/linux/x86_64/alpine-3.16-init.sh rename to quickstart/linux/alpine-3.16-init.sh index 2ad2d6e6..8aed86b6 100644 --- a/quickstart/linux/x86_64/alpine-3.16-init.sh +++ b/quickstart/linux/alpine-3.16-init.sh @@ -36,3 +36,5 @@ esac apk update apk add vim alpine-sdk xz autoconf automake linux-headers clang-dev clang lld libtool cmake bison re2c gettext coreutils +apk add bash p7zip zip unzip flex pkgconf ca-certificates +apk add wget git curl \ No newline at end of file diff --git a/quickstart/linux/x86_64/connection-static-php-cli.sh b/quickstart/linux/connection-static-php-cli.sh similarity index 100% rename from quickstart/linux/x86_64/connection-static-php-cli.sh rename to quickstart/linux/connection-static-php-cli.sh diff --git a/quickstart/linux/x86_64/debian-11-init.sh b/quickstart/linux/debian-11-init.sh similarity index 95% rename from quickstart/linux/x86_64/debian-11-init.sh rename to quickstart/linux/debian-11-init.sh index 1ff044a9..dbd8478c 100644 --- a/quickstart/linux/x86_64/debian-11-init.sh +++ b/quickstart/linux/debian-11-init.sh @@ -36,7 +36,6 @@ esac apt update -y apt install -y git curl wget ca-certificates apt install -y xz-utils autoconf automake lld libtool cmake bison re2c gettext coreutils lzip zip unzip -apt install -y pkg-config bzip2 flex +apt install -y pkg-config bzip2 flex p7zip apt install -y musl-tools g++ apt install -y clang - diff --git a/quickstart/linux/x86_64/run-alpine-3.16-container.sh b/quickstart/linux/run-alpine-3.16-container.sh similarity index 92% rename from quickstart/linux/x86_64/run-alpine-3.16-container.sh rename to quickstart/linux/run-alpine-3.16-container.sh index b53d9cd4..fa3ea0e5 100644 --- a/quickstart/linux/x86_64/run-alpine-3.16-container.sh +++ b/quickstart/linux/run-alpine-3.16-container.sh @@ -6,7 +6,7 @@ __DIR__=$( pwd ) __PROJECT__=$( - cd ${__DIR__}/../../../ + cd ${__DIR__}/../../ pwd ) cd ${__DIR__} diff --git a/quickstart/linux/x86_64/run-debian-11-container.sh b/quickstart/linux/run-debian-11-container.sh similarity index 92% rename from quickstart/linux/x86_64/run-debian-11-container.sh rename to quickstart/linux/run-debian-11-container.sh index a9239727..c00ae1a6 100644 --- a/quickstart/linux/x86_64/run-debian-11-container.sh +++ b/quickstart/linux/run-debian-11-container.sh @@ -6,7 +6,7 @@ __DIR__=$( pwd ) __PROJECT__=$( - cd ${__DIR__}/../../../ + cd ${__DIR__}/../../ pwd ) cd ${__DIR__} diff --git a/quickstart/linux/x86_64/prepare.sh b/quickstart/linux/x86_64/prepare.sh deleted file mode 100644 index bd278330..00000000 --- a/quickstart/linux/x86_64/prepare.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -exu -__DIR__=$( - cd "$(dirname "$0")" - pwd -) -__PROJECT__=$( - cd ${__DIR__}/../../../ - pwd -) -cd ${__PROJECT__} - -composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - -chmod +x bin/spc - -./bin/spc fetch --all --debug - -./bin/spc list-ext - - -#./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo,pdo_sqlite,ftp,curl" --cc=gcc --cxx=g++ --debug - -./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo,pdo_sqlite,ftp,curl" --cc=clang --cxx=clang++ --debug diff --git a/quickstart/macOS/x86_64/prepare.sh b/quickstart/macOS/x86_64/prepare.sh deleted file mode 100644 index 93b83560..00000000 --- a/quickstart/macOS/x86_64/prepare.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -exu -__DIR__=$( - cd "$(dirname "$0")" - pwd -) -__PROJECT__=$( - cd ${__DIR__}/../../../ - pwd -) -cd ${__PROJECT__} - -export PATH=${__PROJECT__}/bin/runtime:$PATH - -composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - -chmod +x bin/spc - -./bin/spc fetch --all --debug - -./bin/spc list-ext - -./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo,pdo_sqlite,ftp,curl" --cc=clang --cxx=clang++ --debug diff --git a/quickstart/prepare.sh b/quickstart/prepare.sh new file mode 100644 index 00000000..9f4669d1 --- /dev/null +++ b/quickstart/prepare.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +set -exu +__DIR__=$( + cd "$(dirname "$0")" + pwd +) +__PROJECT__=$( + cd ${__DIR__}/../ + pwd +) +cd ${__PROJECT__} + +OS=$(uname -s) +ARCH=$(uname -m) + +if [[ $OS = "Linux" && -f /etc/os-release ]]; then + OS_NAME=$(cat /etc/os-release | grep '^ID=' | awk -F '=' '{print $2}') + # debian ubuntu alpine +fi + +composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ + +chmod +x bin/spc + +./bin/spc fetch --all --debug + +./bin/spc list-ext + +EXTENSIONS="calendar,ctype,exif,fileinfo,filter,ftp" +EXTENSIONS="${EXTENSIONS},session,tokenizer" +EXTENSIONS="${EXTENSIONS},phar,posix" +EXTENSIONS="${EXTENSIONS},iconv" +EXTENSIONS="${EXTENSIONS},xml,dom,simplexml,xmlwriter,xmlreader" +EXTENSIONS="${EXTENSIONS},phar,posix" +EXTENSIONS="${EXTENSIONS},soap" +EXTENSIONS="${EXTENSIONS},mbstring,mbregex" +EXTENSIONS="${EXTENSIONS},openssl" +EXTENSIONS="${EXTENSIONS},sockets,gmp,bcmath" +EXTENSIONS="${EXTENSIONS},pcntl" +EXTENSIONS="${EXTENSIONS},curl" +EXTENSIONS="${EXTENSIONS},zlib,zip,bz2" +EXTENSIONS="${EXTENSIONS},gd" +EXTENSIONS="${EXTENSIONS},redis" +EXTENSIONS="${EXTENSIONS},pdo,pdo_mysql,pdo_sqlite" +EXTENSIONS="${EXTENSIONS},mysqlnd,sqlite3" +EXTENSIONS="${EXTENSIONS},mongodb" +# EXTENSIONS="${EXTENSIONS},swoole" +EXTENSIONS="${EXTENSIONS},swow" + +./bin/spc build "${EXTENSIONS}" --build-cli --cc=clang --cxx=clang++ --debug +# ./bin/spc build "${EXTENSIONS}" --build-cli --cc=gcc --cxx=g++ --debug diff --git a/src/SPC/builder/extension/mongodb.php b/src/SPC/builder/extension/mongodb.php index 843ee39b..a33b1b9e 100644 --- a/src/SPC/builder/extension/mongodb.php +++ b/src/SPC/builder/extension/mongodb.php @@ -12,6 +12,17 @@ class mongodb extends Extension { public function getUnixConfigureArg(): string { - return '--enable-mongodb --without-mongodb-sasl'; + $arg = ' --enable-mongodb '; + $arg .= ' --with-mongodb-system-libs=no '; + $arg .= ' --with-mongodb-sasl=no '; + if ($this->builder->getLib('openssl')) { + $arg .= '--with-mongodb-ssl=openssl'; + } + if ($this->builder->getLib('icu')) { + $arg .= ' --with-mongodb-icu=yes '; + } else { + $arg .= ' --with-mongodb-icu=no '; + } + return $arg; } }