c2a-core icon indicating copy to clipboard operation
c2a-core copied to clipboard

`src_core` をなんとかしたい

Open meltingrabbit opened this issue 3 years ago • 17 comments

概要

src_core をなんとかしたい

詳細

src/
  src_core/
  src_user/

という構造が適切ではないので,なんとかしたい.

close条件

なんとかなったら

備考

NA

meltingrabbit avatar Nov 14 '21 18:11 meltingrabbit

議論点

  • src_corec2a_core とか?
  • src_user → ????

うーん,,,

coreとuserの分離的な観点だと,並行なディレクトリ構造があって,共通部分とそうでない部分を並列させているだけなので...

meltingrabbit avatar Nov 14 '21 18:11 meltingrabbit

以下のような手順での src/src_core, src/src_user の廃止を検討中です.意見求む. PHASE 分割して書いたけど,それぞれ結構 breaking なので実際のリリース時にはある程度マージしてやってもよいと思う.

  • PHASE 1
    • out-of c2a-core build の導入
      • Git submodule でない外部ディレクトリにある c2a-core を使用可能にする
      • 注意: c2a-core は src_core という名前で checkout されていることを期待する
      • これに対応するため,C2A user では #include "../../src_core" などを全排除する必要がある(割と残っていがち)
    • C2A_CORE_SRC_DIR を追加
    • C2A_CORE_DIR${C2A_CORE_SRC_DIR}/src_core とする
    • include dir として C2A_CORE_SRC_DIR を追加
  • PHASE 2
    • src_corec2a-core にすべて rename する
      • out-of c2a-core build 時には c2a-core が c2a-core という名前で checkout されていることを期待する
    • C2A_CORE_DIR${C2A_CORE_SRC_DIR}/c2a-core とする
    • ディレクトリ構造は以下
      • src
        • c2a-core: Git submodule
        • src_user: ユーザー部のコード
  • PHASE 3
    • include dir として repository root を追加
    • <repo>/src/c2a-core -> <repo>/c2a-core
      • #include <src/c2a-core/hoge.h> -> #include <c2a-core/hoge.h>
    • ディレクトリ構造は以下
      • c2a-core: Git submodule
      • src
        • src_user: ユーザー部のコード
  • PHASE 4
    • <repo>/src/src_user -> <repo>/src
    • #include <src/src_user/hoge.h> -> #include <hoge.h>
    • ディレクトリ構造は以下
      • c2a-core: Git submodule
      • src: ユーザー部のコード

sksat avatar Apr 19 '23 15:04 sksat

全体的に agree

include dir として C2A_CORE_DIR を追加

#include <c2a-core/hoge.h> だから,inclulde dirは C2A_CORE_SRC_DIR

out-of c2a-core build 時

ってなんだっけ?

#include <src/c2a-core/hoge.h> #include <src/src_user/hoge.h>

これいまあるっけ?(ない想定のはず)

あと

  • core から user の include どうする?
  • 今, #include <src_core/hoge> #include <src_user/hoge> が対称(coreとuserのディレクトリ構造が相同)だけど,user側はそれをなくす,という感じだよね?(まあ特にここは気持ちはないのでOK)

meltingrabbit avatar Apr 19 '23 15:04 meltingrabbit

typo してたんで edit しました > C2A_CORE_DIR

言葉不足だったけど,大文字の C2A_CORE_SRC_DIR とかは CMake の変数の話で,それがコンパイラからどう見えるかは別.これの場合だと,C2A_CORE_SRC_DIR が include path なので,その下にいる c2a-core が include 時に参照できる,という話.

out-of c2a-core build は僕が最近作った(僕しか使ってない)造語で,「(Git submodule でない)外部ディレクトリにある c2a-core を使用可能にする」に名前を付けたもの > out-of c2a-core build

それはその PHASE 時点で発生するものの話 > #include <src/c2a-core/hoge.h>

sksat avatar Apr 19 '23 15:04 sksat

OK

meltingrabbit avatar Apr 19 '23 15:04 meltingrabbit

core から user への include はあんまりちゃんと考えてなかった......(そもそもあってほしくないのだけど,まあ仕方ない)

とはいえ,それもユーザ部のコードが入ってるディレクトリ(今でいう src/src_user)から直接参照してほしいかなあ.つまり,core 部でも #include <src/src_user/hoge.h>hoge.h になる. ここで問題となるのが,core と user のソースファイル配置を対照的にしようとしていたことによって src/src_core/hoge.hsrc/src_user/hoge.h みたいなやつが同時に存在していると(してそう)include path の優先順位問題が発生してしまうこと. ただ,これはそもそも対照的にしようとしているのがおかしいと思う(ライブラリやコンポーネントみたいな単位での対称さはあってよいと思うけど,ファイル名でそれをやるのはおかしいはず)ので,ユーザ側の方のファイルには _user みたいな suffix を付けるべきなのでは.

sksat avatar Apr 19 '23 15:04 sksat

あ,ファイル名が全く同じ ヘッダファイルはないよ(インクルードガード命名規則に反するので)

userが独自に作ってたら知らないけど

meltingrabbit avatar Apr 19 '23 15:04 meltingrabbit

対称的にしてる,ライブラリとしては変なのはわかっていつつも,LibraryやApplicationなどは,汎用的なもの(ここでの汎用,とは,多くの衛星FSWでもっていてよい,という意味での汎用であって,SW的汎用ではない)をcoreにいれていく,という経緯から,対称的なほうがわかりやすい,というのがあったなぁ.

meltingrabbit avatar Apr 19 '23 15:04 meltingrabbit

user が勝手に作ってた場合のことを考えてました(そして治安の悪い user はそこそこありそうだし). でも include gurad の規則に反するのはたしかに.そうすると実際にはほぼ存在してなさそうだな.

sksat avatar Apr 19 '23 15:04 sksat

Library と Application については,そもそも「(core の || user の)Library」,「(core の || user の)Application」という単位で命名・ビルドしていることがおかしいな,という気持ちがあるので,そこの単なるディレクトリの場所の対称関係は崩していいと思っています.

sksat avatar Apr 19 '23 15:04 sksat

微妙に伝わりにくいと思うのでもうちょっと具体的に言うと,汎用的(であるべき)なのは c2a-core/Library ではなく c2a-core/Library/crc とかじゃないですか,みたいな気持ち.

sksat avatar Apr 19 '23 15:04 sksat

たぶん一番気持ちがあるので,self assign

sksat avatar Apr 19 '23 15:04 sksat

自動生成コード中に #include "../../src_core" が残ってるのと, git_revision.sh をどうにかする必要がある.

sksat avatar Apr 19 '23 16:04 sksat

git_revision は根本的解決をすべきなので, #82 を復活させる

sksat avatar Apr 19 '23 16:04 sksat

#82 の復活ありがたい.

meltingrabbit avatar Apr 20 '23 04:04 meltingrabbit

Library と Application については,そもそも「(core の || user の)Library」,「(core の || user の)Application」という単位で命名・ビルドしていることがおかしいな,という気持ちがあるので,そこの単なるディレクトリの場所の対称関係は崩していいと思っています.

OK. そうなってくると,いよいよ

  • https://github.com/ut-issl/c2a-core/issues/553

をなとかしたさはあるな

meltingrabbit avatar Apr 20 '23 04:04 meltingrabbit

#553 はとりあえずエイヤで c2a-core に場所移してから考えればよくない?(あんまり src_core 問題とは依存関係無いと思う). 明らかにビルド単位がおかしいのは LibraryApplication だけだし,この2つは割と自明に分割可能じゃない?という気もするし(Application は Application そのもののインターフェースを定義するヘッダみたいなやつは生えるかもだけど).

sksat avatar Apr 20 '23 06:04 sksat