cargo: Generate a Cargo.lock if one wasn't found

オープン
#44 コメント 20 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python, rust
領域
build-system

調査の方向性

まず既存の cargo プラグインと issue 42 にリンクされた仕様を読みます。track、fetch、stage のフローを追い、その後、ここで説明されている generate_lock のモード、デフォルトの動作、エラーケースを検証します。Cargo.lock の生成と依存関係の再構築が指定されたルールに従えば完了です。

索引モデルが issue の本文から書いたものです。

説明

Spec from https://gitlab.com/BuildStream/bst-plugins-experimental/-/issues/42

Will behave like this:

  • track: Cargo.lock will be generated by the host's cargo IF (generate_lock is true) OR (generate_lock is 'if-missing' and Cargo.lock doesn't exist). If generate_lock is false and Cargo.lock doesn't exist, raise an error. Then the existing logic for tracking cargo sources will happen. The ref will now encode everything necessary to reconstruct the vendored libraries, so the generated Cargo.lock is discarded
  • fetch: The sources are fetched according to the ref, as they are now
  • stage: The sources are staged according to the ref, as they are now
  • Buildstream will default to generate_lock: false, and projects can (if they wish) globally override that default to generate_lock: if-missing to make the cargo plugin work in all scenarios. Then generate_lock: true can be used if Cargo.lock needs to be overwritten/ignored for whatever reason (i.e. a hypothetical repo that hasn't been updated in a while and Cargo.lock specifies dependencies w/ known security issues, so you want to force it to use newer libraries)
  • If a project doesn't want to grow a dependency on cargo from the host to track, it can keep generate_lock: false as the default, and then maintain its own Cargo.lock files & stage them before the cargo source:
sources:
- kind: git_tag
  url: whatever:foobar.git
- kind: local
  path: files/cargo/foobar/Cargo.lock
- kind: cargo
  generate_lock: false # <-- from project defaults
主要言語
Python
スター
8
フォーク
16
平均マージ
36分
マージ済み PR(30日)
2

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/buildstream-plugins のほかの issue

apache/buildstream-plugins の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。