通过源代码编译和部署IDP

March 4, 2023 · View on GitHub

English | 简体中文

通过源代码编译和部署IDP

环境要求

需要Git、Rustup、Python 3(v3.8及以上)、Node.js active LTS(v16.17.0)、yarn和npm(v8及以上)。

Linux操作系统所需额外构建依赖项

如果你使用的是Ubuntu/Debian操作系统,请另外安装:

> apt install build-essential python3-dev python3-pip openssl git libgit2-dev

如果你使用的是Fedora/Centos操作系统,请另外安装:

> dnf install base-devel python3-devel python3-pip openssl-devel git libgit2-devel

Windows操作系统所需额外构建依赖项

一定要使用x86_64-pc-windows-msvc target,使用windows-gnu target进行编译不会成功。

按照Visual Studio guide to install msvc进行操作。

macOS操作系统操作指南

如果你使用macOS操作系统,请不要使用操作系统自带的python3,因为它是静态链接,没有dylib。可以从conda/miniconda3/brew安装带有dylib的python3。

复制.cargo/config.toml,并将其放置到python安装目录。

> cp .cargo/config.toml.example .cargo/config.toml

安装Rust

> curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
> source "$HOME/.cargo/env"

Homebrew环境下Python的配置

编辑.cargo/config.toml文件:

[target.x86_64-apple-darwin]
rustflags = ["-L", "/opt/homebrew/lib/", "-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
[env]
PYO3_PYTHON="/opt/homebrew/bin/python3"

macOS conda环境下Python的配置

按照如下所示修改.cargo/config.toml文件: (注意,需要用终端的 "echo $CONDA_PREFIX "的输出来替换 "CONDA_PREFIX"。)

[target.x86_64-apple-darwin]
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup", "-C", "link-arg=-Wl,-rpath,`CONDA_PREFIX`/lib"]

编译和运行

> ./scripts/build.sh
> ./target/release/idp

构建Docker镜像

> docker build -t note -f Dockerfile --target release .