衝撃のわからなさ

わかってません

2024/02/13日報

mimic-cross実装

mimic-libのcopy範囲がmemcopy範囲がおかしいのを直した

zigにしたけど結局この手の不毛なmemcpyと向き合わなくてはいけない。つらい。

commit: Fix mimic-lib

--load supportをbuild scriptに追加

commit: support --load

Releaseに向けた作業

  • 旧実装削除
  • test用imageのビルド

commit: Remove old implementation commit: Support build test image commit: Remove old dockerfile commit: apt-get check MIMIC_CROSS_DISABLE commit: deno fmt

20240212日報

mimic-cross実装

venvでnativeを呼ぶように

セットアップ時にpythonスクリプト中からvnevのpython系統を呼んでおり、 python周りの少しの変更ですぐにtestがfailをおこしてしんどいのであきらめた。

commit: Call native python in venv

arm64でamd64向けにビルドするための対応

道半ばimageがビルドできるところまでやった。
クロスツール周りの対応が必要。

commit: Support target to amd64 commit: Remove unnecessary compile commit: libmimc-cross for multiarch

2024/02/11日報

mimic-cross実装

multiplatform対応

nativeなときはそのままnativeビルドパスを通るようになった。 BUILDARCH=amd64,arm64 かつ TARGETARCH=arm64しか今のところはサポートされてない。

commit: Build for multiplatform commit: Update example

colcon buildででた問題

  • 既存イメージをmimic化するときにapt-get updateしてなくて問題になった
  • /usr/share/keyrings をコピーしていなくてupdateがfailした
  • cross toolの呼び出しかたによっては動かないのを修正
  • cliからの呼び出しでnativeなpythonが常に呼び出されていた
  • push先が、localhost:xxxx/image:tag がうまく扱えなかった
  • distutils.coreがimportできてなかった

commit: Run apt-get update in setup
commit: Copy /usr/share/keyrings
commit: Symlink for cross tool commit: Fix python cli commit: Fixed when given port number commit: Install distutils to host

2024/02/10日報

ロスコンパイルビルド用コンテナを作るときにplatform指定

--platform指定するもの、つまりTARGETPLATFORMには将来のBUILDPLATFORMが指定される。
将来のTARGETPLATFORMを指定するものはないので引数指定になる。

mimic-cross実装

gpgまわりの対応

apt-get udpateする前に自動でgpg関係のcopyをして整合性を取ることにした。

commit: Copy gpg files before apt-get update

venv呼び出しのmimic化

exec -a相当のことができなくて困っていたが、bashへ依存することを許容して対応を行った。
いつか$0つけかえを実装できるようになりたい。
venv環境のテストが36s → 16sに短縮した。
この対応でpipに対してもmimic化できるようになったはずなのだが、 モジュールのinstallスクリプトが依存しているモジュールを即座に呼び出すようなケースでうまく動かないことが予想されるので見送った。

commit: Mimicize python3 -m venv

2024/02/09日報

mimic-cross

python3 -m pipをサポート

した。denoを採用したことによって、targetとhostを並列に処理するのが簡単になって嬉しい。 pythonのテストが遅いのでなんとかしたい

commit: Support pip

apt-getが環境変数を引き継がないのを修正

pip実装していて引き継がれていないことに気づいたので修正しておいた。

commit: Set env to apt-get

2024/02/08日報

mimic-cross実装

何も細工せずそのままhostにもapt-getする設定を追加

pythonまわりは細工が必要なくhostにもinstallされていることが大事なパッケージが たくさんあるので、"postInstall": "skip"でそのような処理を通るようにした。
今後もpostInstallの処理は増えそうなのでpostInstallフィールドで管理するようにして、 既存の特殊パスも1フィールドに統合した。

  • skip: 何もしない
  • custom: モジュールを探しに行ってそのモジュールのpostInstall関数を呼ぶ
  • crossTool: crossTool向けの特殊処理を実行
  • default or 未定義: 実行ファイルらしきelfを検出してnative環境にdeployする

commit: Refactoring packageInfo.postinstall

pythonのvenvをサポート

した。とりあえず動くことを優先して target architecture側はnativeなpythonを呼んでいる。
高速化できそうなら今後おこないたい。

commit: Support venv

2024/02/06日報

mimic-cross実装

pythonの基本的なパスを実装

platformやsysconfigが偽装された状態で振る舞うようになるとことまでやった。
あとはpip対応をすればpythonのサポートが終わる。
qemu-staticが必要になるのでtonistiigi/binfmtから引っ張ってくるようにした。
これでいい気がするけれどバージョン違いなどで悩むことがあるかもしれないのでメモ。

commit: Implement python basic path