Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ビルドランチャー

ソースコードのフォルダを指定するだけで、ビルド方式(CMake / Meson / Autotools / Make / Cargo / npm / Python / Gradle / Maven)を自動検出し、GUIでビルドを実行する ツールです。ビルドログはリアルタイムでウィンドウに表示されます。

さらに、ビルドが失敗したときはログを解析し、apt-file を使って 「足りていなさそうなDebianパッケージ」の候補を自動で探し、確認の上で インストール→ビルド再試行までを行います。

1. インストール

Debian(trixie)の場合、PySide6はモジュールごとにパッケージが分かれているので、 このアプリで使っている分をまとめて入れます。

sudo apt update
sudo apt install python3-pyside6.qtcore python3-pyside6.qtgui python3-pyside6.qtwidgets

また、ビルド対象のプロジェクトに応じて、ビルドツール本体も別途必要です。 最低限、汎用的なビルドに必要なものは以下でまとめて入ります。

sudo apt install build-essential cmake meson ninja-build autoconf automake libtool

(Rust製プロジェクトなら別途 cargo、Node.js製なら npm が必要です)

(pip を使う場合は pip install --user PySide6 でも動きます)

依存パッケージの自動解決を使う場合(任意・強く推奨)

ビルド失敗時に足りないパッケージを自動で探せるように、apt-file も 入れておくことをおすすめします。

sudo apt install apt-file
sudo apt-file update

apt-file update は一度実行しておく必要があります(パッケージが含む ファイルの一覧をダウンロードするコマンドです)。これを実行していないと、 このツールは「apt-fileが見つからない」または「候補が見つからない」と 表示し、自動検索をスキップします。

また、パッケージのインストールには pkexec を使って管理者権限を求めます。 KDE(CachyOSと同じ環境)や GNOME など、通常のデスクトップ環境であれば Polkit認証エージェントが標準で動いているため、GUIのパスワード入力 ダイアログがそのまま表示されます。

2. 起動方法

このフォルダを好きな場所に置いて、ターミナルから:

cd buildlauncher
python3 main.py

3. 使い方

  1. 「フォルダを選択...」でビルドしたいソースコードのフォルダを選ぶか、 zip/tar.gzのままなら「圧縮ファイルを開く...」で直接指定します (詳しくは次の項目)
  2. ビルド方式が自動検出されて、そのまま自動的にビルドが始まります (「検出できたら自動的にビルドを開始する」のチェックを外せば、 検出だけ行って「ビルド開始」ボタンを押すまで待つようにできます)
  3. ログ欄に出力がリアルタイムで流れます
  4. 成功すると「成功」、失敗すると「失敗」とステータスが表示されます
  5. 「ログを保存」でログをテキストファイルとして保存できます

選んだフォルダの直下に見つからない場合

フォルダや圧縮ファイルの直下にビルド設定(CMakeLists.txt や Makefile など)が無い場合、自動的に数階層下まで探しに行きます。

  • 候補が1つに絞れた場合は、そのままそこを使って自動的にビルドが 始まります(いちいちフォルダの中に手で入っていく必要はありません)
  • 候補が複数見つかった場合は、選択肢が表示されるので、 ビルドしたいものを選んでください
  • それでも見つからない場合は、今まで通り「自動検出できませんでした」 と表示されます。手動でビルド方式を選ぶか、正しいフォルダを 直接指定してください

圧縮ファイル(zip / tar.gz など)をそのまま指定する

ダウンロードした .zip や .tar.gz を手動で展開しなくても、 「圧縮ファイルを開く...」ボタンから直接指定できます。

  • 対応形式: .zip .tar.gz .tgz .tar.bz2 .tar.xz .tar
  • 圧縮ファイルと同じ場所に、ファイル名(拡張子抜き)のフォルダを 作って展開します
  • 展開したフォルダの中身がさらに1つのフォルダに包まれているだけの 場合(GitHubの「Download ZIP」でよくあるパターン)や、数階層下に ソースコードが入っている場合も、上記の「選んだフォルダの直下に 見つからない場合」の仕組みで自動的に探し出します
  • 展開先のフォルダが既にある場合は、削除して展開し直すか、 既存のものをそのまま使うか選べます

「ビルド」は実際にコンパイルしていますか?

はい、シミュレーションではなく実際のコンパイルです。たとえば Makefileのプロジェクトなら make コマンドを、CMakeのプロジェクトなら cmake → 内部で呼ばれる gcc/g++ を、それぞれこのツールが裏側で 実行しています。表示されているログは、実際にコンパイラ・リンカが 出力した内容そのものです。

ビルドした後、できたアプリはどこ? どう実行する?

コンパイルしただけでは、アプリケーションメニューには何も登録されません (それをするには別途インストール作業が必要です)。できあがった実行 ファイルは、プロジェクトフォルダの中(CMakeなら build/ フォルダの 中など)に置かれるだけです。

このツールはビルドが成功すると、新しく作られた実行可能ファイルを 自動で探し、「実行」ボタンを押せるようにします。見つかったら そのまま押すだけでアプリが起動します。

  • 実行ファイルが1つに絞れれば、そのまま起動します
  • 複数見つかった場合は、選択肢が出ます
  • 何も見つからなかった場合は「実行」ボタンは押せないままです (npmやPythonのプロジェクトなど、単体の実行ファイルを作らない ビルド方式もあります)
  • ターミナルで動くタイプのプログラム(CUIアプリ)の場合、「実行」で 起動しても入出力用のターミナル画面が無いため何も表示されません。 その場合はターミナルを開いて手動で実行してください (例: ./mini-edit-cli ファイル名.txt)

ビルドが失敗した場合(依存パッケージの自動解決)

ビルドが失敗すると、自動でログを解析し、apt-file を使って 足りていなさそうなパッケージの候補を検索します。

  • 候補が見つかった場合、「不足している依存パッケージの候補」という ダイアログが開きます。インストールしたいものにチェックが入った状態で 表示されるので、必要に応じて調整し「インストールして再ビルド」を押します
  • パスワード入力(Polkit認証)を求められたら入力してください
  • インストールが成功すると、自動的にビルドが最初からやり直されます
  • 候補が見つからなかった場合や、ダイアログでキャンセルした場合は、 通常通り「失敗」のまま止まります。ログを見て手動で対応してください

4. 現在対応しているビルド方式

検出ファイル ビルド方式
CMakeLists.txt CMake
meson.build Meson
Cargo.toml Cargo(Rust)
build.gradle / build.gradle.kts Gradle
pom.xml Maven
package.json npm
pyproject.toml / setup.py Python
configure / configure.ac Autotools
Makefile Make

5. 依存パッケージ自動検出の仕組みと限界

  • ビルドログを正規表現でパターンマッチングして「足りていなさそうなもの」 (ヘッダファイル・コマンド・pkg-config/Mesonの依存関係・共有ライブラリ・ CMakeモジュール・Pythonモジュール)を推測し、apt-file search で 対応しそうなパッケージ名を検索しています。あくまで推測なので、 不要なパッケージが候補に混ざることや、逆に検出できないケースも あります。最終的にインストールするかどうかは必ずダイアログで確認します。
  • 検索結果のうち、既にインストール済みのパッケージは候補から除外します (それが原因ではないと分かっているため)。
  • apt-file search は数秒〜十数秒かかることがあり、その間GUIの応答が 一時的に遅くなります(バックグラウンドスレッド化は今後の改善候補です)。
  • 一度のビルド失敗につき、依存解決→再ビルドは1往復です。 再ビルドでまた別のパッケージが足りないことが分かった場合は、 もう一度同じダイアログが表示されます。
  • CMakeの find_package(PkgConfig REQUIRED) が失敗するケース (Could NOT find PkgConfig)は、実際には「.cmakeファイルが無い」 のではなく「pkg-config コマンド自体が入っていない」ことが原因の 場合がほとんどなので、特別に pkg-config コマンドを検索するように しています。

ファイル構成

buildlauncher/
├── main.py                    # 起動スクリプト
├── core/
│   ├── detector.py             # ビルド方式の自動検出ロジック
│   ├── builder.py              # ビルド方式ごとのコマンド手順の定義
│   ├── dependency_resolver.py  # ログ解析 + apt-file による依存パッケージ推測
│   └── archive_extractor.py    # zip/tar圧縮ファイルの展開ロジック
└── ui/
    ├── main_window.py          # GUI本体(PySide6)
    └── dependency_dialog.py     # 依存パッケージ確認ダイアログ

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages