sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.24k stars 162 forks source link

pythonなしでヘルプをコンパイルできるようにする #1879

Closed dep5 closed 1 year ago

dep5 commented 1 year ago

PR の目的

カテゴリ

PR の背景

ヘルプをコンパイルするのにPythonが必要です

PR のメリット

ヘルプのコンパイルだけならPythonのインストールがいらなくなります

PR のデメリット (トレードオフとかあれば)

仕様・動作説明

Pythonがインストールされていない時に Pythonの処理をPowershellで処理します

help\remove-comment.py %HH_INPUT%BOM付UTF8で読んで行ごとにばらし 改行を削除し正規表現でコメントを削除し改行を付け直して、 %HH_OUTPUT%BOM付UTF8で書き込んでいる。 ということだと思います。

Windows 付属のPowershellでは UTF8はBOM付きを指します。 Get-Contentは配列として読み込むので同等のことをしています。 pythonでは改行があるとエラーになるので一旦削除している?ようですが Powershellではエラーにならなかったのでその処理はしていません。

PR の影響範囲

テスト内容

Pythonで出力される内容と同じものができました

テスト1

手順 Pythonをインストール済みの方のテスト方法 build-chm.batの6行目に set CMD_PYTHON= と書き込めばpythonへのパスが消えるので PR前後でテストしてみてください build-chm.batを起動するとchmヘルプがコンパイルできます

関連 issue, PR

参考資料

dep5 commented 1 year ago

Visual Studio 2022 17.4.3でヘルプファイルのコンパイルをしてみました 最新の v143 ビルド ツール用 C++ MFC これを入れてからビルドするときに

このフレームワーク バージョンの Developer Pack (SDK/Targeting Pack) をインストールするか、 アプリケーションのターゲットを再設定してください。

というエラーが出たら 指定通りのバージョンのTargeting Packを入れるか

tools\ChmSourceConverter\ChmSourceConverter\ChmSourceConverter.csproj
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>

ここをインストールしているTargeting Packのバージョンに合わせる必要がありました

AppVeyorBot commented 1 year ago

:white_check_mark: Build sakura 1.0.4215 completed (commit https://github.com/sakura-editor/sakura/commit/e79c904e0d by @dep5)

berryzplus commented 1 year ago

関連issue

dep5 commented 1 year ago

berryzplusさん

pythonをインストールしていない環境で build-chm.batを使ってヘルプをコンパイルしようとすると pythonが必要ですと言われてコンパイルできません。

help\remove-comment.pyを使ってコメントを削除する時にpythonを使っています。代わりのコードを書けばpythonは必要ありません。

ソース中でpythonを使う場所はほかにもありますが ヘルプをコンパイルするだけならpythonが無くてもできるようにしました。

dep5 commented 1 year ago

929 の実現方法の候補

  1. Powershell を使う 版になります https://github.com/sakura-editor/sakura/blob/333f2c10eee14871af25952dac062ea53f4e6f2a/build-chm.bat#L65 で使われているのでPowershellを使ってもよいと思いますが…
berryzplus commented 1 year ago

pythonをインストールしていない環境で build-chm.batを使ってヘルプをコンパイルしようとすると pythonが必要ですと言われてコンパイルできません。

ヘルプをビルドするにはpythonが必要です。 だと思っています。 ビルド手順の最初は「pythonをインストールしていなければインストールします。」になります。

ドキュメントにpythonのインストール手順を書くべきなのかも知らんです。

pythonのインストール手順

pythonをインストールするには管理者権限でpowershellを開き、chocolateyのコマンドを叩きます。

cinst python

インターネット環境とPCの管理者権限が必要ですが、問題はないと思います。

dep5 commented 1 year ago

ヘルプをビルドするにはpythonが必要です。 だと思っています。

ヘルプのビルド中、pythonを使用しているのは help\remove-comment.py 1つだけです。

(pythonはよくわかりませんが) %HH_INPUT%BOM付UTF8で読んで行ごとにばらし 改行を削除し正規表現でコメントを削除し改行を付け直して、 %HH_OUTPUT%BOM付UTF8で書き込んでいる。 ということだと思います。

Windows 付属のPowershellでは UTF8はBOM付きを指します。 Get-Contentは配列として読み込むので同等のことをしています。

Pythonをインストール済みの方のテスト方法 build-chm.batの6行目に set CMD_PYTHON= と書き込めばpythonへのパスが消えるので PR前後でテストしてみてください

ヘルプのビルド中にほかにpythonを使う箇所があれば教えてください。 あるならこのPRはクローズします。

ヘルプ以外のビルドではpythonが必要なのはわかっていますが、 本体のビルドはpythonが無くてもできているので、 できたらインストール必須にはしてほしくないな、と思います

berryzplus commented 1 year ago

pythonをインストールしない理由を詳しく聞いても 納得できなさそうな気がするので 他の回避策を模索してみます。

powershellのワンライナーで書けるので「python必須は無駄じゃね?」には同意できます。

pythonスクリプトにするメリットは「処理に対するテストを書ける」ですが 現状ではテストコードがないのでpythonである必然はありません。

CIにpythonのない環境はありませんが pythonのない環境をシミュレートするのは面倒です。 pythonの有無で分岐するバッチを書くと 「pythonなし」の分岐がCIでは実行されないことになります。 つまり、ローカルとCIで手順が二重化してしまいます。

「置き換え」であれば反対する理由がなくなるのですが、そちらの方向にはできないでしょうか?

berryzplus commented 1 year ago

ちなみにこのPRは仕様変更でも不具合修正でもない認識です。

AppVeyorBot commented 1 year ago

:white_check_mark: Build sakura 1.0.4226 completed (commit https://github.com/sakura-editor/sakura/commit/47c148c841 by @dep5)

sonarcloud[bot] commented 1 year ago

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

AppVeyorBot commented 1 year ago

:white_check_mark: Build sakura 1.0.4227 completed (commit https://github.com/sakura-editor/sakura/commit/5a141272ac by @dep5)