Pharo で日本語入力すると最初の1文字しか入力されない件

Pharo で日本語の文章をインライン入力しても入力中は何も表示されない。Enter で確定するとなぜか最初の1文字だけが入力される。(たとえば、「あいうえお」+Enter と入力すると「あ」だけ表示される)

インライン入力に対応していないのは諦めるとしても、1文字しか入力されないのはとても不便である。

続きを読む →

共有フォルダから Pharo VM が起動しない件

以前の記事で Pharo VM をビルドする理由として挙げた2つ目の理由は、「共有フォルダに格納したVMが起動できない」ことだった。こちらは日本語名を含んだフォルダから起動しようとした時と異なり、いったん Pharo が起動して画面表示された直後にクラッシュする。

PharoDebug.log を見ると readdir のプリミティブの辺りで落ちているようだったので、ディレクトリの読み込みに失敗していると考えて調べてみた。

続きを読む →

VM をビルドせずに Windows 10 版のPharo を日本語のディレクトリ名を含んだフォルダから起動させる件

タイトル長い

前回の記事を書いた後にコメントをもらって、manifestを追加すれば良いということがわかった。manifest でアプリごとに codepage を指定して起動できるらしい。

Use UTF-8 code pages in Windows apps

Windows のシステム設定で一括変更する方法しか知らなかったので朗報。

さっそく自宅にあった mouse e10 で試してみたらちゃんと動いたので変更点を述べる。

続きを読む →

Windows 10 版のPharo で日本語のディレクトリ名を処理できない件

酔狂で面倒な VM のビルドをしたかった訳じゃない。Pharo を使って作成したアプリを展開するのに、表記のような問題があって困るので、VMの変更で対応したいと思ったから。

Pharo VM に関して困っているのは以下の2点である。

  • パスに日本語を含んでいるときにVMがイメージを認識してくれない。
  • 共有フォルダに格納したVMを起動できない。

どっちも「使わなきゃいいじゃない」レベルの話で個人ならいくらでも回避できるんだけど、アプリを展開したいと思っている先の環境なので致し方ない。

VM ソースを追っかけてみると、前者については以下が原因らしい。

  • VMの実行パスからイメージのパスを生成する際、UTF-8からUTF-16の変換をしている。
  • 素のWindows 10の場合、実行パスはShift-JISで表現されている。
  • なので正しく日本語を変換できずイメージファイルを見つけることができない。

後者についてはもっと根が深いみたい。→要追加調査

まずは前者に対応して見ようと思う。

(本日は休日出勤日なのでやる気なし)

(2022.8.1追記)
manifest を変更することで解決できることがわかった。後の記事を見よ。

Windows 10でPharo-vmをビルドする(後編)

前回の記事でビルドする手順を説明したが手抜きすぎたので、簡単なバッチファイルを作ってみた。賞味期限は非常に短いと思われるけど、cygwin のオプションをいろいろ調べたりしたので、その成果も兼ねて。

(2022.8.10追記)
もとの記事だと「FreeTypeライブラリがない」と怒られてしまったので、cygwin のパッケージにlibfreetype-devel を追加した。これに伴って link.txt の変更が不要になった。

続きを読む →

Windows 10でPharo-vmをビルドする(前編)

レポジトリには簡単にできそうに書いてあったけど、ビルドできるようにするまで大変だったので備忘としてメモ。

ポイントはcmakeのバージョンをできるだけ下げること。執筆時点でCygwinにインストールされるのは 3.23.2-1 だったけど、これでは不可解なエラーが発生して cmake が失敗する。

先のレポジトリでは最低でも3.7.2と書いてあったので、選択できる一番古いバージョン(3.17.3-2)に戻したら cmake が成功するようになった。

あと、Windowsの項目では「cmake .」するように書かれているけど、Linux/Mac OSと同じように親ディレクトリから「cmake -S pharo-vm -B build」した方が、いろいろ試しやすくてよかった。

レポジトリにある便利スクリプト(scripts\installCygwin.ps1)は必要なパッケージを自動的にインストールしてくれる。実際にはそれだけでは足りずエラーになった。ビルドには更に以下のパッケージが必要だった。(どうせsetupしなおすんだったら、スクリプトに書いてあるパッケージも含めて手動で入れた方が楽かも)

libssl-devel
libgit2-devel
libz4-devel

パッケージを追加するたびにCygwinのsetupが cmake を最新版にしようとするので、かならず Keep を選んでおくこと。

さて、buildディレクトリでmakeすると途中でエラーになる。freetype ライブラリをリンクする際に-lz が見つからないようだ。cmake のスクリプトを書き換えれば良いのだろうが場所が特定できなかった。(後でやる)

とりあえず build/freetype-build/CMakeFiles/freetype.dir/link.txt を直接編集して、-lz の前に -L/usr/lib を追記したら最後までビルドできた。

cmake は難しい。