Armadilloフォーラム

コンテナイメージに組み込むソフトをPC上でビルドする方法について

r_kawai

2022年11月29日 17時16分

いつもお世話になっております。
現在コンテナイメージに組み込むソフトをPC上でビルドしたいと考えております。

コンテナイメージのベースは
docker.io/debian:bullseye
です。
(at-debian-image-dockerfileベース)

https://download.atmark-techno.com/armadillo-640/at-debian-builder/
にあるdebian-builderを修正すれば対応可能ではないかと考えておりますが、
https://armadillo.atmark-techno.com/forum/armadillo/12741
でマルティネ様にdebパッケージを作成頂いたので、上記ベースについてはPC上に環境を構築するためのスクリプトや設定ファイルを既にお持ちではないかと考えております。
つきましては、もし環境構築用のファイルをお持ちでしたらご提供頂けますとありがたいです。

PC上でビルドする背景としては、epiphanyを再ビルドするためとなります。
ネットワークエラー等が発生した際のエラー表示を変更したいのですが、エラー表示用のhtmlや文言がepiphanyにバイナリとして埋め込まれているため、ビルドし直しをしたいと考えています。
G4上でもビルドは可能と考えていますが、何度もビルドをかけ直すのであればPC上の方が楽と考え、本件質問させて頂きました。

コメント

at_dominique.m…

2022年11月29日 17時40分

r_kawaiさん

お世話になっています、
マルティネです。

> コンテナイメージのベースは
> docker.io/debian:bullseye
> です。
> (at-debian-image-dockerfileベース)
>
> https://download.atmark-techno.com/armadillo-640/at-debian-builder/
> にあるdebian-builderを修正すれば対応可能ではないかと考えておりますが、

at-debian-builder は使えるかもしれませんが、コンテナの作成として考えてませんのでおすすめしません。
at-debian-iamge-dockerfile を少しだけ直せば ATDE上で使えます。
Dockerfile の一行目の FROM を以下に変更していれば、podman や docker build をATDEで使って G4 向けのイメージを作成します:

atmark@atde9:~/at-debian-image-dockerfile-v1.0.7$ head -n 1 Dockerfile
FROM docker.io/arm64v8/debian:bullseye
atmark@atde9:~/at-debian-image-dockerfile-v1.0.7$ podman build -t mycont .
...
... arm64 Packages 等を取得することを確認できます
...
STEP 12: COMMIT mycont
--> 95506d2e92e
95506d2e92e35df66c6909fd585cafe7cbc04b42c34881bf2ed44dbbcb6f442f
atmark@atde9:~/at-debian-image-dockerfile-v1.0.7$ podman save mycont -o mycont.tar
^ のmycont.tar をswdesc_xxx_container で使えます

> https://armadillo.atmark-techno.com/forum/armadillo/12741
> でマルティネ様にdebパッケージを作成頂いたので、上記ベースについてはPC上に環境を構築するためのスクリプトや設定ファイルを既にお持ちではないかと考えております。
> つきましては、もし環境構築用のファイルをお持ちでしたらご提供頂けますとありがたいです。

コンテナのレイヤーの仕組みが少し面倒ですので、このパッケージを COPY して RUN でインストールすればその後に消しても .deb ファイルとして配信することになります。
docker にそのオプションがないと思いますが、podman build の場合は --squash で一時的なレイヤーを捨てることができますので、COPY+RUN でインストールした方が楽かと思います。

> PC上でビルドする背景としては、epiphanyを再ビルドするためとなります。
> ネットワークエラー等が発生した際のエラー表示を変更したいのですが、エラー表示用のhtmlや文言がepiphanyにバイナリとして埋め込まれているため、ビルドし直しをしたいと考えています。
> G4上でもビルドは可能と考えていますが、何度もビルドをかけ直すのであればPC上の方が楽と考え、本件質問させて頂きました。

そうですね、epiphany は比較的に小さいので G4 でもビルドできると思いますが、PCの環境が断じて楽です。
epiphany のビルドも、ATDE で 作成したコンテナを使ってビルドできると思います。(もちろん、ビルドに必要なライブラリーやコンパイラーを最終イメージに入れません)
ATDE で aarch64 のコンテナを起動すると、性能が落ちますが qemu-user で自動的に使えます:

atmark@atde9:~/at-debian-image-dockerfile-v1.0.7$ podman run -ti --rm mycont bash
root@4e2ffd9cd0d3:/# uname -m
aarch64

ATDE でクロスビルドの環境もありますが、クロスビルド可能と不可能なパッケージがあるためあまり案内できません (epiphany の debian ファイルを確認してません)。
webkitgtk あたりはクロスビルド非対応でしたので、コンテナを使ってビルドすることをおすすめします。
G4と同じくコンテナを起動するときに --volume を使えば、ビルドソースや作成した deb ファイルを ATDE に直接に保存できますので試してみてください。

何かできなかったらまた聞いてください。

よろしくお願いします。

マルティネ様

ご回答いただきありがとうございます。
ご教示頂いた方法をもとにPC上でaarch64コンテナの起動ができました。
また/usr/lib/aarch64-linux-gnu/ではなくimx_lib側に存在するライブラリがあるので、rpath関連の設定をmeson.buildに追加しましたが、それ以外は特に修正せずにepiphanyのビルドもできるようになりました。
一部view関連のテストでタイムアウトエラーが出ますが、PC上だと描画周りの処理ができないことができないためと推測し、それらについてはコンテナをコピーしてG4上で実施するようにしています。
また不明点がありましたら質問させて頂くかもしれませんが、その際はよろしくお願いいたします。