Netstack3 是在 Rust 中從頭開始開發的網路堆疊。是
我們仍在積極開發中,歡迎大家一起貢獻!大部分的
Netstack3 (大約有程式碼行約 90%) 適用於各平台,也就是說您可以
在開發機器上建構及測試
Fuchsia 或在虛擬機器中執行。你可以直接使用一般的 cargo
操作
開發工作流程 (cargo check
、cargo test
等)。
本文件旨在協助您初步瞭解將內容協作為 Netstack3。可以幫助您從零開始建構和測試,並貢獻心力 Netstack3 的跨平台核心。
如果你有興趣貢獻內容,並想與 Netstack3 討論 歡迎隨時與我聯絡!我們在 connectivity-dev@fuchsia.dev 郵寄清單。
開始設定
- 取得原始碼
- 設定及建構 Fuchsia
fx set
指令需要使用 Cargo 啟用 Netstack3 開發作業 加入旗標--with //src/connectivity/network/netstack3:bin --cargo-toml-gen
假如您是在 x86 機器上進行開發,請使用fx set core.x64 --with //src/connectivity/network/netstack3:bin --cargo-toml-gen
。
- 這款 Netstack3 專為跨平台運作的核心運作的原始碼
src/connectivity/network/netstack3/core
。 - 執行
fx build src/connectivity/network/netstack3/core:netstack3-core
來建構 Netstack3 核心。 - 執行
fx build build/rust:cargo_toml_gen
再加上fx gen-cargo //src/connectivity/network/netstack3/core:netstack3-core
,然後產生Cargo.toml
檔案以啟用cargo
的開發作業。 在
~/.cargo/config.toml
檔案中新增下列程式碼,以取代 找到 Fuchsia 目錄的絕對路徑,並取代目標 (如果本機 開發目標不同於x86_64-unknown-linux-gnu
:[target.x86_64-unknown-linux-gnu] rustflags = ["-L", "absolute_path_to_fuchsia_directory/out/default/host_x64/obj/third_party/boringssl"]
如果您沒有設定檔,可以建立僅包含上述內容的設定檔。 如果您不確定開發目標為何,請執行
rustup show
。這些 設定行會指示cargo
在哪裡尋找 BoringSSL 的建構構件 用於部分加密編譯作業執行下列指令,將
rustup
設為使用 Fuchsia Rust 工具鍊:rustup toolchain link fuchsia $($FUCHSIA_DIR/scripts/youcompleteme/paths.py VSCODE_RUST_TOOLCHAIN) rustup default fuchsia
執行
cargo
指令 (例如cargo check
或cargo test
),即可查看實際使用狀況!
從現在起,您幾乎可以只使用 cargo
進行開發。
有時,對 Netstack3 依附元件進行重大變更可能會導致建構設定
。如需相關建議,請參閱疑難排解一節
修正您的建構作業
疑難排解
- 使用
jiri update
提取最新變更後,如果無法正確執行cargo
,請嘗試下列做法:- 請移除
Cargo.lock
檔案,接著執行cargo clean
,然後再試一次 - 如果
cargo
仍無法正常運作,請嘗試使用完整的乾淨版本: fx clean
:這會清除建構輸出內容,並讓您做好準備 完整簡潔的版本- 執行先前執行的同一個
fx set
指令 (可能是fx set core.x64 --with //src/connectivity/network/netstack3:bin --cargo-toml-gen
)。 fx build src/connectivity/network/netstack3/core:netstack3-core
fx build build/rust:cargo_toml_gen
- 請移除
提交變更
想要為 Netstack3 貢獻內容嗎?歡迎加入我們的行列!如果不是 請務必從這裡著手,參閱良好的第一錯誤清單,或 實用的第二項錯誤清單如果仍然有部分迷失方向 歡迎隨時透過 connectivity-dev@fuchsia.dev 與我們聯絡。
如果您對 Issue Tracker 尚未追蹤的變更有建議, 太棒了!特別歡迎您修正錯誤及改善說明文件。 請先與我們聯絡,確認我們的需求一致,不會 我們完全無法接受我們的工作
準備好貢獻內容後,請按照以下簡單的步驟進行:
- 請參閱捐款給 Fuchsia 的一般操作說明
- 閱讀我們的 Fuchsia 網路貢獻者指南
瞭解顧客
如想深入瞭解 Netstack3 的設計 請參閱說明文件。