摘要: 原创出处 http://www.iocoder.cn/TiKV/build-debugging-environment-first/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

TiKV 调试环境搭建,我们根据目的拆分成两篇文章 :

  • 第一篇,本文,成功运行 TiKV 单元测试。
  • 第二篇,成功运行 TiKV 服务实例。

1. 安装环境

系统版本 :macOS Sierra 10.12.6

1.1 IntelliJ IDEA

IntelliJ IDEA 的安装大家已经非常熟悉了,笔者就不瞎比比了。

打开 IDEA 安装 Rust 插件

1.2 Rust

curl https://sh.rustup.rs -sSf | sh
  • 由于 TiKV 需要使用 nightly 版本,安装过程如下图 :

Rust 版本如下 :

Yunai-MacdeMacBook-Pro-2:~ yunai$ rustc --version
rustc 1.23.0-nightly (d6b06c63a 2017-11-09)

1.3 Go

基于 Homebrew

brew install go

Go 版本如下 :

Yunai-MacdeMacBook-Pro-2:~ yunai$ go version
go version go1.9.2 darwin/amd64

1.4 RocksDB

基于 Homebrew

打开终端,输入命令 :

brew install rocksdb

RocksDB 版本如下 :

rocksdb 5.8

1.5 C++11

基于 Homebrew

笔者暂不确定是否必须安装,建议可以先安装。

brew install brew install boost --c++11

2. 源码导入

从官方仓库 https://github.com/pingcap/tikv Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈

使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码,并导入。导入时,请记得下载 Standard library ,如下图所示 :

导入完成后,Cargo自动下载 TiKV 项目的依赖库,可能下载时间较长,请耐心等待。此时适合,关注下笔者的微信公众号:【芋道源码】。

3. 运行单元测试

打开 tests/tests.rs 文件,右键 RUN '...' 运行 #_0_ci_setup() / #_1_check_system_requirement() 函数,运行通过,说明调试环境基本搭建成功。

此时,如果出现如下错误 :

error: `std::sync::atomic::AtomicUsize::new` is not yet stable as a const fn
--> tests/coprocessor/test_select.rs:44:35
|
44 | const ID_GENERATOR: AtomicUsize = AtomicUsize::new(1);
| ^^^^^^^^^^^^^^^^^^^
|
= help: in Nightly builds, add `#![feature(const_atomic_usize_new)]` to the crate attributes to enable
error: aborting due to previous error
error: Could not compile `tikv`.
warning: build failed, waiting for other jobs to finish...
error: build failed
  • 请在 tests/tests.rs 文件,添加 #[feature(const_atomic_usize_new)] 代码。如下图所示 :

4. 彩蛋

T T 虽然本文非常简短,但是折腾了一天左右,谁让笔者是” Rust 菜鸡 “。

开始尝试写 TiKV 源码解析系列,敬畏 + 好奇。虽然赶脚,可能会被虐成一条狗。

好啦,胖友,分享一波朋友圈可好!

文章目录
  1. 1. 1. 安装环境
    1. 1.1. 1.1 IntelliJ IDEA
    2. 1.2. 1.2 Rust
    3. 1.3. 1.3 Go
    4. 1.4. 1.4 RocksDB
    5. 1.5. 1.5 C++11
  2. 2. 2. 源码导入
  3. 3. 3. 运行单元测试
  4. 4. 4. 彩蛋