Skip to content

Commit

Permalink
Merge branch 'build_native_php' into build_native_php_zts
Browse files Browse the repository at this point in the history
  • Loading branch information
jingjingxyk committed Oct 6, 2024
2 parents d910e96 + acd88cd commit 704443b
Show file tree
Hide file tree
Showing 10 changed files with 375 additions and 136 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ libs.log
ext/apcu/
ext/ssh2/
LICENSE
swool-cli-*
swoole-cli-*
php-cli-*
php-fpm-*

111 changes: 73 additions & 38 deletions docs/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,99 @@
## 运行环境要求

1. 容器 docker 运行环境
2. debian 系列 要求linux 内核大于 5.0

构建步骤 - 运行命令
====
## linux 环境下构建 完整步骤

```shell

git clone --recursive https://github.com/swoole/swoole-cli.git
git clone -b main https://github.com/swoole/swoole-cli.git
cd swoole-cli
git submodule update --init -f

bash setup-php-runtime.sh
composer install --no-interaction --no-autoloader --no-scripts --profile
composer dump-autoload --optimize --profile

# 生成构建脚本 make.sh
php prepare.php --without-docker --skip-download=1
bash ./make.sh docker-build
bash ./make.sh docker-bash
bash sapi/quickstart/linux/install-docker.sh
bash sapi/quickstart/linux/run-alpine-container.sh
bash sapi/quickstart/linux/connection-swoole-cli-alpine.sh

# 准备bash 命令
sh sapi/quickstart/linux/alpine-init-minimal.sh

bash sapi/quickstart/linux/alpine-init.sh

# 进入容器后需要再一次执行此命令
php prepare.php +inotify +apcu +ds +xlswriter +ssh2 +uuid
bash setup-php-runtime.sh

__DIR__=$(pwd);
export PATH=${__DIR__}/bin/runtime/:$PATH
alias php="'${__DIR__}/bin/runtime/php -c ${__DIR__}/bin/runtime/php.ini'"

composer install --no-interaction --no-autoloader --no-scripts --profile --no-dev
composer dump-autoload --optimize --profile --no-dev

php prepare.php +apcu +ds +xlswriter +ssh2 +uuid

bash make-install-deps.sh

bash ./make.sh all-library
bash ./make.sh config
bash ./make.sh build
bash ./make.sh archive
# 静态编译依赖库
bash make.sh all-library

# 静态编译 PHP 预处理
bash make.sh config

# 静态编译PHP (编译、汇编、链接)
bash make.sh build

# 静态编译PHP (打包)
bash make.sh archive

./bin/swoole-cli -m
./bin/swoole-cli --ri swoole
file ./bin/swoole-cli

```

## 可使中国大陆软件镜像源命令脚本

```shell

# 准备 docker 运行时 使用镜像 (镜像源 mirrors.tuna.tsinghua.edu.cn)
bash sapi/quickstart/linux/install-docker.sh --mirror china

sh sapi/quickstart/linux/alpine-init-minimal.sh --mirror china

bash sapi/quickstart/linux/alpine-init.sh --mirror china

# 准备PHP 运行时 使用镜像 (镜像源 https://www.swoole.com/download)
bash setup-php-runtime.sh --mirror china



```

## 可使用代理的命令脚本

```bash

# 准备PHP 运行时 使用代理
bash setup-php-runtime.sh --proxy http://192.168.3.26:8015

php prepare.php +apcu +ds +xlswriter +ssh2 +uuid --with-http-proxy=socks5h://127.0.0.1:2000

```



## 快速生成 构建脚本 make.sh (跳过下载依赖库源码)

```shell

# 生成构建脚本 make.sh
php prepare.php --without-docker --skip-download=1
bash ./make.sh docker-build
bash ./make.sh docker-bash

# 进入容器后需要再一次执行此命令
php prepare.php +inotify +apcu +ds +xlswriter +ssh2 +uuid

```

构建镜像
====
`Linux` 下需要在容器中构建,因此需要先构建 `swoole-cli-builder:base` 基础镜像。
Expand All @@ -57,26 +111,7 @@ file ./bin/swoole-cli
> `C库` 变更时,应该修改 `swoole-cli-builder` 镜像的版本
> `make.sh all-library` 是可重入的,它会自动跳过已构建成功的库
快速初始化构建环境
====

跳过生成容器基础镜像
使用如下命令快速进入容器环境
便捷调整构建环境

```bash
# 安装容器运行环境
# bash sapi/quickstart/linux/install-docker.sh

bash sapi/quickstart/linux/run-alpine-container.sh
bash sapi/quickstart/linux/alpine-init.sh

# 使用镜像源 例子
# bash sapi/quickstart/linux/install-docker.sh --mirror [ china | ustc | tuna ]
# bash sapi/quickstart/linux/alpine-init.sh --mirror [ china | ustc | tuna | tencentyun | huaweicloud ]
# bash sapi/quickstart/linux/alpine-init.sh --mirror china

```

构建 swoole-cli
====
Expand Down
101 changes: 70 additions & 31 deletions docs/macOS.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,50 @@
# macOS 环境下构建 swoole-cli

构建步骤 - 运行命令
====
## 构建准备 - 设置默认安装库目录的权限

```shell

git clone --recursive https://github.com/swoole/swoole-cli.git
sudo mkdir -p /usr/local/swoole-cli
CURRENT_USER=$(whoami) && sudo chown -R ${CURRENT_USER}:staff /usr/local/swoole-cli

```

## macos 环境下构建 完整步骤

```shell

git clone -b main https://github.com/swoole/swoole-cli.git
cd swoole-cli
git submodule update --init -f

bash sapi/quickstart/macos/install-homebrew.sh
bash sapi/quickstart/macos/macos-init.sh

bash setup-php-runtime.sh
composer install --no-interaction --no-autoloader --no-scripts --profile
composer dump-autoload --optimize --profile

php prepare.php --without-docker=1 +apcu +ds +xlswriter +ssh2 +uuid
__DIR__=$(pwd);
export PATH=${__DIR__}/bin/runtime/:$PATH
alias php="'${__DIR__}/bin/runtime/php -c ${__DIR__}/bin/runtime/php.ini'"

bash sapi/quickstart/macos/macos-init.sh
composer install --no-interaction --no-autoloader --no-scripts --profile --no-dev
composer dump-autoload --optimize --profile --no-dev

php prepare.php --without-docker=1 +apcu +ds +xlswriter +ssh2 +uuid

bash make-install-deps.sh

bash ./make.sh all-library
bash ./make.sh config
bash ./make.sh build
bash ./make.sh archive
# 静态编译依赖库
bash make.sh all-library

# 静态编译 PHP 预处理
bash make.sh config

# 静态编译PHP (编译、汇编、链接)
bash make.sh build

# 静态编译PHP (打包)
bash make.sh archive


./bin/swoole-cli -m
./bin/swoole-cli --ri swoole
Expand All @@ -31,37 +54,51 @@ otool -L ./bin/swoole-cli

```

构建步骤简述
====
## 可使中国大陆软件镜像源命令脚本

0. 清理 `brew` 安装的软件
1. 执行 `php prepare.php --without-docker=1` 生成构建shell 脚本
2. 编译所有依赖的库 `./make.sh all-library`
3. 配置 `./make.sh config`
4. 构建 `./make.sh build`
```shell

sh sapi/quickstart/macos/install-homebrew.sh --mirror china

sh sapi/quickstart/macos/macos-init.sh --mirror china

## 快速 初始化macos 构建环境
# 准备PHP 运行时 使用镜像 (镜像源 https://www.swoole.com/download)
bash setup-php-runtime.sh --mirror china


```

运行此命令解决构建过程中遇到的绝大部分问题
`homebrew`已安装,跳过执行此命令`bash sapi/quickstart/macos/install-homebrew.sh`
## 可使用代理的命令脚本

```bash

# 准备PHP 运行时 使用代理
bash setup-php-runtime.sh --proxy http://192.168.3.26:8015

bash sapi/quickstart/macos/install-homebrew.sh
bash sapi/quickstart/macos/macos-init.sh
php prepare.php --without-docker=1 +apcu +ds +xlswriter +ssh2 +uuid --with-http-proxy=socks5h://127.0.0.1:2000

```

# 使用homebrew镜像源
# bash sapi/quickstart/macos/install-homebrew.sh --mirror ustc
# bash sapi/quickstart/macos/macos-init.sh --mirror ustc
## 准备依赖库源码

# 设置默认安装库目录的权限
CURRENT_USER=$(whoami)
sudo mkdir -p /usr/local/swoole-cli
CURRENT_USER=$(whoami) && sudo chown -R ${CURRENT_USER}:staff /usr/local/swoole-cli
> 源码来源: https://github.com/swoole/swoole-cli/releases/download/${TAG}/all-deps.zip
```bash

bash sapi/download-box/download-box-get-archive-from-server.sh

bash sapi/download-box/download-box-get-archive-from-server.sh --mirror china

```

## 构建步骤简述

0. 清理 `brew` 安装的软件
1. 执行 `php prepare.php --without-docker=1` 生成构建shell 脚本
2. 编译所有依赖的库 `./make.sh all-library`
3. 配置 `./make.sh config`
4. 构建 `./make.sh build`

## 清理

使用 `brew` 安装的库可能会干扰 `swoole-cli` 的编译,必须要在构建之前将关联的软件进行卸载。在构建完成后再重新安装。
Expand All @@ -88,7 +125,9 @@ brew install wget curl libtool automake re2c llvm flex bison

brew install gettext coreutils binutils libunistring

export PATH=/usr/local/opt/bison/bin:/usr/local/opt/llvm/bin:$PATH
HOMEBREW_PREFIX=$(brew --prefix)

export PATH=${HOMEBREW_PREFIX}/opt/bison/bin:${HOMEBREW_PREFIX}/opt/llvm/bin:$PATH

```

Expand Down
Loading

0 comments on commit 704443b

Please sign in to comment.