Armadilloフォーラム

[Armadillo-610] 1コンテナで複数言語処理の共存について

masa.yamaguchi

2024年12月2日 16時07分

==========
製品型番:Aramadillo-610
ABOSバージョン:3.20.3-at.3
カーネルバージョン: 5.10.226
その他:ATDE9を使用
==========
ATDEによるプロジェクト作成時、添付資料のプロジェクト作成を選択できます(プロジェクト作成.ping)( c/python/shell)
その場合、1つのコンテナで、c言語/python/shell プログラムを共存させたい場合はどのような手順で行うことになりますでしょうか。
( shellでプロジェクトを作成して、shファイルからpyファイルやビルド後のc実行ファイルを直接呼び出す形になりますでしょうか)

ファイル ファイルの説明
プロジェクト作成.png
コメント

at_satoshi.ohta

2024年12月2日 18時13分

太田です。

いつもお世話になっております。
python, shellscript, C言語を共存させることを想定してプロジェクトを作っていませんでしたが、行うとすればC言語のプロジェクトを使用するのがいいかと思います。
C言語のプロジェクトであれば、[Generate development swu] または [Generate release swu] 実行時に、作成したC言語のソースファイルをmakeして実行ファイルも作成することができます。

その場合、shellscriptやpythonのファイル(.shファイルや.pyファイル)はmy_project/app/buildディレクトリに配置してください。
my_project/app/buildディレクトリはコンテナの中の/vol_appにマウントされます。
(ここでのmy_projectは作成したC言語のプロジェクトです)

pythonやC言語の実行ファイル(ここではhoge.py, mainとします)を呼び出すshellscriptのスクリプトをここではhoge.shとすると、
my_project/config/app.confの最終行を以下のように修正してください。

set_command /vol_app/build/hoge.sh

hoge.shの中身は例えば以下のようにします。

#!/bin/bash
 
exec python3 /vol_app/build/hoge.py
exec /vol_app/build/main

このようにすれば、hoge.sh(シェルスクリプト)からhoge.py(Pythonのファイル)とmain(C言語の実行ファイル)を呼び出せるはずです。

また、C言語のプロジェクトでpythonを実行するには、以下の対応が必要です。

* my_project/container/Dockerfileの修正
以下の★がついている行を追記してください。

ARG PRODUCT
COPY resources [r]esources_${PRODUCT} /
 
# Add extra python modules to app/src/requirements.txt ★
RUN python3 -m pip --no-cache-dir install -r requirements.txt  ★

* my_project/container/resources/requirements.txtの作成
作成したrequirements.txtに必要なpythonのパッケージを記述してください。

* my_project/container/packages.txtの修正
以下の★がついている行を追記してください。

python3 ★
python3-pip ★
[build]
build-essential

実際にこちらで試せたわけではないですが、まずはこれで試してみて頂ければ幸いです。
どうぞよろしくお願いいたします。

at_satoshi.ohta

2024年12月2日 18時30分

太田です。

申し訳ありません。
上記の内容で一部修正させてください。

> * my_project/container/Dockerfileの修正

こちらの修正内容で以下の部分のコメント内容が不適切でした。

# Add extra python modules to app/src/requirements.txt ★

正しくは

# Add extra python modules to container/resources/requirements.txt ★

です。

どうぞよろしくお願いいたします。

太田 様

masa.yamaguchiです。

ご回答ありがとうございます。
ご提示いただいた方法で検討したいと思います。
お手数をおかけしてすみませんでした。
本質問はクローズいたします。