endcap-sl-software-ri-gener.../README-ja.md

84 lines
3.5 KiB
Markdown
Raw Normal View History

# Endcap SL Software RI Generator
2025-02-10 22:32:01 +09:00
[![pipeline status](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/badges/main/pipeline.svg)](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/-/commits/main)
[![Latest Release](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/-/badges/release.svg)](https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator/-/releases)
これはXMLのレジスタマップからMPSoCソフトで使う用のコードを生成するソフトです。
XMLおよびそのスキーマは[L0 Muon Endcap/Endcap Sl CSR XML](https://gitlab.cern.ch/l0muon-endcap/endcap-sl-csr-xml)にあります。
生成されたコードは[MPSoC Software](https://gitlab.cern.ch/wotsubo/mpsoc-software)で使うことが想定されています。
そこに`RegisterSpec`などのレジスタ向けのトレイトが定義されてます。
## 使い方
このプロジェクトでは、バイナリとライブラリの両方のクレートを提供しています。
バイナリクレートはシェルから使うことができ、ライブラリクレートは他のプログラムから使うためのものです。
### ビルド環境の構築
このコードは[Rust](https://www.rust-lang.org/ja/)で書かれているので、[rustup](https://www.rust-lang.org/ja/tools/install)をインストールする必要があります。
rustupのインストールには公式サイトにある`curl`スクリプトを使うか、あるいはシステムのパッケージマネージャを使うことができます。
`cargo`を実行してみることでインストールのチェックができます。
`cargo`はlxplusにインストールされているみたいなので、それも使えるかもしれません(ただし、バージョンは最新ではありません)。
### バイナリクレートの使い方
```bash
2025-02-12 22:10:48 +09:00
cargo build --features=bin --bins --release
```
2025-02-12 22:10:48 +09:00
を実行します。
`--release`はオプションです。
`target/release`に入ってるバイナリファイルを実行するか、`cargo run -- <XML> <OUT>`で実行できます。
詳しくは`--help`を見てください。
### ライブラリクレートの使い方
```bash
cargo doc --open
```
で閲覧できるドキュメントを見てください。
## 開発
```bash
cargo doc --document-private-items --open
```
でみれるプライベートアイテムを含んだドキュメントを見てください。
テストなどは以下のコマンドで実行できます
```bash
$ cargo test # テスト
$ cargo fmt # フォーマット
$ cargo clippy # リント (`rustup component add clippy`でインストールできます)
```
### rust-analyzer
開発には[rust-analyzer](https://rust-analyzer.github.io)を使用することを __強く推奨__ します。
推論された型の表示や補完に関して必要不可欠な上、フォーマットやclippyを実行することができます。
### CIについて
ビルドとフォーマットとclippyのテストが走ります。
フォーマットやclippyのチェックをしてpushしてください。
### Rustについて
以下のウェブサイトでRustを良く学べます。
- [The Book](https://doc.rust-jp.rs/book-ja/)
もしくはターミナルで
```bash
rustup doc
```
を実行してみてください。
様々な有益なドキュメントへのリンクが載っています(自分はThe Bookとstandard libraryのドキュメントとRust By Exampleが役に立ちました)。