From 4fbc8026b922fa99dd4950720bbe268e2f767cd1 Mon Sep 17 00:00:00 2001 From: cloud Date: Wed, 1 Apr 2026 01:17:55 +0800 Subject: [PATCH] add libpq fix build error --- .github/workflows/build-macos-m4.yml | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-macos-m4.yml b/.github/workflows/build-macos-m4.yml index b4621e06..7a086d51 100644 --- a/.github/workflows/build-macos-m4.yml +++ b/.github/workflows/build-macos-m4.yml @@ -20,29 +20,35 @@ jobs: - name: Install Dependencies run: | - # 安装编译所需的依赖 - brew install openssl mysql-client pkg-config + # 1. 安装所有必需的数据库客户端和工具 + brew install openssl mysql-client libpq pkg-config - # 获取 brew 安装路径的动态变量 - MYSQL_PATH=$(brew --prefix mysql-client) + # 2. 设置 OpenSSL 路径 OPENSSL_PATH=$(brew --prefix openssl) - - # 设置 MySQL 相关的环境变量,让 mysqlclient-sys 能找到库 - echo "MYSQLCLIENT_LIB_DIR=$MYSQL_PATH/lib" >> $GITHUB_ENV - echo "MYSQLCLIENT_VERSION=8.0" >> $GITHUB_ENV # 这里的版本号通常跟随主版本 + echo "OPENSSL_ROOT_DIR=$OPENSSL_PATH" >> $GITHUB_ENV - # 将 mysql_config 加入 PATH,这是许多库寻找 mysql 配置的备选方案 + # 3. 设置 MySQL 路径与环境变量 + MYSQL_PATH=$(brew --prefix mysql-client) + echo "MYSQLCLIENT_LIB_DIR=$MYSQL_PATH/lib" >> $GITHUB_ENV + echo "MYSQLCLIENT_VERSION=8.0" >> $GITHUB_ENV echo "$MYSQL_PATH/bin" >> $GITHUB_PATH - # 设置 OpenSSL 环境变量 - echo "OPENSSL_ROOT_DIR=$OPENSSL_PATH" >> $GITHUB_ENV + # 4. 设置 PostgreSQL (libpq) 路径 + # libpq 同样是 keg-only 的,必须手动导出路径给链接器 + PQ_PATH=$(brew --prefix libpq) + echo "LDFLAGS=-L$PQ_PATH/lib" >> $GITHUB_ENV + echo "CPPFLAGS=-I$PQ_PATH/include" >> $GITHUB_ENV + echo "PKG_CONFIG_PATH=$PQ_PATH/lib/pkgconfig" >> $GITHUB_ENV + # 这一步很关键:将 libpq 的 bin 目录加入 PATH + echo "$PQ_PATH/bin" >> $GITHUB_PATH + # 显式给 Rust 的链接器指定库文件路径 + echo "LIBRARY_PATH=$PQ_PATH/lib" >> $GITHUB_ENV - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Build Vaultwarden run: | - # 显式指定 target 并开启 features cargo build --release \ --target aarch64-apple-darwin \ --features sqlite,mysql,postgresql