Skip to content

x86 以外のビルドのリリース #228

Closed
2 of 2 issues completed
Closed

Description

@nmaya

request

現状

x86 ビルドのバイナリは Windows の WOW64 により x64 Windows, Arm Winodws で実行可能である。

対応するメリット

  • 確実に(どの程度?)実行可能である

対応するデメリット(コスト)

  • 現在は徹底して「1つのリリースバージョンは1つのバイナリ」になるようにしている
    • バグ等の報告の際、ビルドの差による影響を完全に排除するため
    • インストーラ版とzip版に全く同じバイナリを含める(ソースは同じでリビルドされたもの、ではない)ようにしている cf. ttssh2-devel 4728, 4769, 4773, 4776, ttssh2-dev 273, https://github.com/TeraTermProject/teraterm/wiki/Prevent-rebuild
  • バグ等への対応
    • 「バイナリのアーキテクチャ固有の問題かどうかの切り分け」「問題発見者が報告にアーキテクチャを含めてくれるか」「修正対応者がを実機を持っていて確認できるか」など
  • 使用しているすべてのライブラリが、そのアーキテクチャ用にビルドできるか
  • 複数アーキテクチャに対応したソースを書く必要がある
  • 複数アーキテクチャのバイナリを(AppVeyorで)ビルドする必要がある
  • 複数アーキテクチャのためにインストーラ(とzip版?)を作成する必要がある

cf. 過去に出した x64 に関する意見 ttssh2-devel 3994

まとめ

  • 各アーキテクチャのビルド
  • 既存のアーティファクト名を修正
  • ファイル名が変わる
    • teraterm-x.y.z.exe -> teraterm-x.y.z-x86.exe, teraterm-x.y.z-x64.exe, teraterm-x.y.z-arm64.exe
    • teraterm-x.y.z.zip -> teraterm-x.y.z-x86.zip, teraterm-x.y.z-x64.zip, teraterm-x.y.z-arm64.zip
  • インストールできるOS x86 以外のビルドのリリース #228 (comment)
    • x86 ... x86, x64, arm64 にインストール可能
    • x64 ... x64, arm64 にインストール可能
    • arm64 ... arm64 にインストール可能
    • 制限はしない
  • プログラムメニューのグループ名
  • デスクトップのショートカット名

Activity

  1. zmatsuo commented on Jun 5, 2024

    @zmatsuo
    Member

    テストできるバイナリがないとテストが進まないところがジレンマですね。

    確実に(どの程度?)実行可能である

    x64版はビルド可能で、動作も問題なさそうです。
    手もとで日常使いしています。一人テスト状態ですね。

    現在は徹底して「1つのリリースバージョンは1つのバイナリ」になるようにしている
    バグ等への対応

    x86が正式バイナリ、x64版,ARM版は実験的バイナリとして
    ダウンロードできる状態にするのはどうでしょうか。
    従来(x86版)を優先してx64,ARM版は後回しでまずは進めればよいかなと思います。

    使用しているすべてのライブラリが、そのアーキテクチャ用にビルドできるか

    _M_X64 で動作を分岐している箇所がいくつかあります。
    最もアーキテクチャ依存が大きい箇所が common/ttdebug.cpp 内の
    レジスタ表示だと思います。
    ダンプを使っての調査の方が便利(レジスタ見てもすぐわからない)ので
    x64ではレジスタ表示を省いています。ARMでもレジスタ表示は不要かなと思います。

    複数アーキテクチャのバイナリを(AppVeyorで)ビルドする必要がある
    複数アーキテクチャのためにインストーラ(とzip版?)を作成する必要がある

    ローカルの開発環境が整っていれば ci_scripts\build_local_appveyor_vs2022_x64.bat を
    実行すれば x64のzip,インストーラーができてきます。
    これを AppVeyor で動かせれば作成できるはずです。

    ARM版はまだ手つかずで、現在はARM版をすぐ作ることはできないです。
    またバイナリができても
    手もとに実機がないのでテストができないです。

    ビルド対象が増えるとビルド時間が増えるのも欠点ですね。
    GitHub でビルドするともう少し速くなりそうです #208

    GitHubにpushすれば、自動でビルドがかかり、
    snapshot のx86版と beta の x64,ARM版 バイナリが
    ダウンロードできる状態になるのが手間なくていいなと思います。
    可能なのか、CPU時間やストレージにコストがかかるかも?
    などよくわかっていないところです。

  2. zmatsuo commented on Jun 30, 2024

    @zmatsuo
    Member

    cmakeビルドでarm64版バイナリがビルドできました。
    #228-arm64 ブランチです。

    ライブラリ、Tera Termのソースで特に引っ掛かるところはなく
    exeを生成することができました。

    ツールがそろっていればソースツリーのtopから次の手順でビルドできます。

    cd libs
    cmake -DCMAKE_GENERATOR="Visual Studio 17 2022" -DARCHITECTURE=arm64 -P buildall.cmake
    cd ..
    mkdir build_vs2022_arm64
    cd build_vs2022_arm64
    cmake .. -G "Visual Studio 17 2022" -A arm64
    cmake --build . --config release
    cmake --build . --config release --target install
    cmake --build . --config release --target zip
    

    (arm64のところをx64,win32に変えれば、各々のバイナリが作れます)

    arm64環境がないのでexeの実行など全くテストは行えていません。
    様子を見て特に指摘などなければmainにマージしようと思います。

  3. added 2 commits that reference this issue on Jul 3, 2024
  4. zmatsuo commented on Jul 3, 2024

    @zmatsuo
    Member

    arm64サポートを main にマージしました。

  5. nmaya commented on Mar 9, 2025

    @nmaya
    MemberAuthor

    今の release.bat

    graph TD;
        start-->chm;
        chm-->libs;
        libs-->vcxproj;
        vcxproj-->cygterm;
        cygterm-->zip;
        zip-->installer;
        installer-->stop;
    
    Loading

    直列に実行される。直列なのが悪いと言っているわけではない。

    依存関係

    こうなっているはず

    graph TD;
        start-->chm;
        start-->cygterm/arch:x64;
        start-->libs/arch:x86;
        chm-->zip;
        chm-->installer/arch:x86;
        cygterm/arch:x64-->zip;
        cygterm/arch:x64-->installer/arch:x86;
        libs/arch:x86-->vcxproj/arch:x86;
        vcxproj/arch:x86-->zip;
        vcxproj/arch:x86-->installer/arch:x86;
        zip-->stop;
        installer/arch:x86-->stop;
    
    Loading

    こうなるといい?

    graph TD;
        start-->chm;
        start-->cygterm/arch:x64;
        start-->libs/arch:x86;
        start-->libs/arch:x64;
        start-->libs/arch:arm64;
        chm-->zip;
        chm-->installer/arch:x86;
        cygterm/arch:x64-->zip;
        cygterm/arch:x64-->installer/arch:x86;
        libs/arch:x86-->vcxproj/arch:x86;
        libs/arch:x64-->vcxproj/arch:x64;
        libs/arch:arm64-->vcxproj/arch:arm64;
        vcxproj/arch:x86-->zip;
        vcxproj/arch:x86-->installer/arch:x86;
        vcxproj/arch:x64-->zip_bin_x64;
        vcxproj/arch:arm64-->zip_bin_arm64;
        zip-->stop;
        zip_bin_x64-->stop;
        zip_bin_arm64-->stop;
        installer/arch:x86-->stop;
    
    Loading
  6. 57 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions