Linux あれこれ

Linux 関連(一部 Windows11 )の備忘録です。

「Haiku」にて「FeatherPad」を「1.1.0」にバージョンアップ〈H136-7〉

登録日: 2021-12-26 更新日: 2022-01-12

FeatherPad が「1.1.0」にバージョンアップされました。 Haiku に移植されているFeatherPad は以前のバージョン のままなので、最新の「FeatherPad-1.1.0」に更新してみました。その備忘録です。

-

Haiku では、アプリの移植のシステムがあるので、他のディストリビューションよりも最新のアプリが動く可能性が高いです。ただし、増えた依存パッケージがまだ移植されていないときは、逆に難しくなります。

-

-

システムとしては最新になる「nightly ビルド」の「Haiku R1/beta3」をインストールしました。手間を減らすために、VirtualBoxEFI 立ち上げにしていません。

Haiku にて、Linux アプリをHaiku に移植するときに使われる環境 「Haikuports」を構築 してそこで作業しました。

-

-

使用したPC は「ASUS Chromebox CN60」で、 プロセッサは第4世代の「Intel Celeron 2955U 」です。

-

(注)リンクを戻るときはブラウザの左上の「←」をクリック

-

-


目次

-

参考(投稿からの抜粋):

「レシピファイルについて」

「パッチファイルについて」

「ローカルで差分を作成」

「git で差分を作成」

「.patchset の正式な形式」

-

今回の作業:

「nightly ビルド をダウンロード:」

「VirtualBox に仮想マシンを作成:」

「Haiku をインストール:」

「日本語入力の設定:」

「移植するときに使われる環境を準備:」

「FeatherPad-1.1.0 のレシピの作成:」

「作成したパッケージのインストール:」

「最終的なファイル内容:」

-

「まとめ へ」

-

「目次詳細 へ」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -

-

Haiku R1/beta3」のデスクトップ

-

「nightly ビルド」のデスクトップ画面で「FeatherPad-1.1.0」を起動:

→「nightly ビルド」は開発版ですが、システムとしては最新の状態です。

featherpad を最新の「FeatherPad-1.1.0」にバージョンアップしました。日本語化されています。見た目の違いはありません。

-

「nightly ビルド」のアイコン:

→立ち上げデバイス(ボリューム)には「てんとう虫」マークが付きます。

-

Haiku でインストールすると、ヘルプ表示を個人的な備忘録として活用できません

Haiku のパッケージは「リードオンリー」でマウントされます。書き込みができないので、普通のヘルプファイルとして機能します。

参考: パッケージ化せずに、バイナリをそのまま配置 すれば、ヘルプ表示を個人的な備忘録として使えます。

-

参考: パッケージ化して、インストールした場合のファイルの配置:

→実行ファイルが大文字を含み、通常のアプリのアイコンになっていることに注目。これらはメニューにも反映されます。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --

-

現在のシステムのバージョン:

-

2022-01-08 現在:

~> uname -v
hrev55774 Jan 11 2022 08:37:44

→「nightly ビルド」は、そのつど更新されています。

-

時々、デスクトップが表示しきれないことがあるので、

もし、立ち上げで背景色のまま、デスクトップが表示されないときは「ココ 」を参照

-

Haiku 公式サイト

「nightly ビルド」は開発版ですが多くの不具合が解消されており安定している可能性が高いです。 途中のバージョンをダウンロードしてインストールしている場合でも、システム更新で最新版になるので、 再インストールの必要はありません。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---

1. 最新版の「nightly ビルド」をダウンロード:

-

1). 「nightly ビルド」のサイトを開きます:

nightly ビルド

Supported x86_64 Builds

Revision    Anyboot ISO     Raw Image
hrev55768   us  [checksum] [minisig]  ←(2022-01-08 時点の最新版)
hrev55767   us  [checksum] [minisig]
hrev55763   us  [checksum] [minisig]
hrev55760   us  [checksum] [minisig]
hrev55758   us  [checksum] [minisig]
hrev55756   us  [checksum] [minisig]
hrev55754   us  [checksum] [minisig]
hrev55747   us  [checksum] [minisig]
hrev55746   us  [checksum] [minisig]
hrev55742   us  [checksum] [minisig]  ←(投稿の作業時点での最新版)
hrev55736   us  [checksum] [minisig]
:

-

2). 作業時点での最新版をダウンロード:

2021-12-25 現在:

一覧の一番上にある「hrev55742」の右となリの「us 」をクリック

→「ファイルを保存する」

→ファイルを「~/ダウンロード/Haiku/」フォルダに移動

-

3). チェックサムの確認:

-

選んだ「hrev55742」の右となリの「checksum 」をクリック

→「ファイルを保存する」

→「haiku-master-hrev55742-x86_64-anyboot.zip.sha256」ファイルのチェックサム値を確認

-

確認:

$ cd ~/ダウンロード/Haiku/

$ sha256sum haiku-master-hrev55742-x86_64-anyboot.zip
59c7a302733d44e0ad7eb6d1c2c347c00b36fe5ef3177db88ad03a2c66ede564  haiku-master-hrev55742-x86_64-anyboot.zip

→こちらと同じ表示がされれば OK

展開:

haiku-master-hrev55742-x86_64-anyboot.zip」を右クリック→「ここで展開」

→「~/ダウンロード/Haiku/haiku-master-hrev55742-x86_64-anyboot/haiku-master-hrev55742-x86_64-anyboot.iso」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----

2. VirtualBox仮想マシンを作成:

-

(1). 仮想マシンを作成:

手順は、コチラ

-

仮想マシンを作成したら、一度「OK」をクリック

-

(2). 最終的な設定:

-

-

(3). ライブイメージをセット:

手順の項番 15). にて、右にある「ストレージ」の光学ドライブの「空」をクリック

→「ディスクファイルを選択…」 →事前にダウンロードした「ISO イメージ」を指定:

-

「~/ダウンロード/Haiku/haiku-master-hrev55742-x86_64-anyboot/haiku-master-hrev55742-x86_64-anyboot.iso」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----

3. 作成した仮想マシンに、ゲストOS として「Haiku R1/beta3」をインストール

-

1). 「nightly ビルド」のライブで立ち上げて、「Haiku R1/beta3」をインストール:

-

手順は、コチラ

-


2). 完了したら、ライブイメージを取り外し

-

続けて、

-


3). ゲストOS を起動した状態で、仮想マシン →スナップショットを作成

スナップショット名とコメントを入力 : install 0

→スナップショットは正常に作成されました

-


4). 再起動にて、デスクトップ画面でパネルやアイコンが表示しきれないので、

仮想マシン →リセット

-


5). GUI でのシステム更新:

メニュー(右上の青い葉)→Applications →「ソフトウェアの更新」(SoftwareUpdater)

「更新が見つかりました」 →「いますぐ更新」をクリック

-

→「更新が完了しました」

→「再起動」をクリック

-


6). 画面の解像度を変更:

メニュー →Preferences →「画面」(Screen) :

1152 x 864  ←(フルHD で、スクロールバーが表示されない広さ)

→選んで、「適用」

→「保持」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -

4. 日本語入力の設定:

-

手順は、コチラ

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --

5. その他の設定:

-


1). 個人データ用のフォルダ「My」を作成

個人データの保存先は「ホーム」配下か、デスクトップになると思います。散らばらないように、データ保存用のフォルダを作って、できるだけそこに保存するようにしました。

受け渡しやデータの一時保存のときに、フォルダごとコピーすれば良いので便利です。

-

デスクトップの「ホーム」アイコンをダブルクリック →空きを右クリック →新規フォルダ →名前 を「My」にしました。

-

下記のようにフォルダを作りました:

ホーム
 My
  Documents
  Pictures
  Downloads
  Music

-


2). ウィンドウの背景を変更:

メニュー →Preferences →「背景」(Backgrounds)

-

「背景」が起動:

画像: 「HAIKU logo-white on blue-big.png」(605x179)

-

小さい文字も選べます:

→ファイルの指定→「artwork/HAIKU logo-white on blue-normal.png」(351x132) →「選択」

-

配置: 手動

→手動にすると、ウィンドウの左上に画像を置けます。

左枠にある、X方向: 258、Y方向: 519 の値の変更でタイトル文字を置く場所を変えられます。

解像度によって、好きな位置に配置できます。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---

-

6. Linux アプリをHaiku に移植するときに使われる環境を準備:

-

参考: 「端末」アプリの起動: Windows+Alt+T

デスクトップにファイルのウィンドウを開いて選び、Windows+Alt+T とするとそのファイルのパス(階層)で開いてくれます。

端末の中でのみ、マウスで範囲選択 →マウスの「中央」または「右」クリック→「貼り付け」できます。

-

参考: ブラウザで手順を表示しながら端末に貼り付けると、作業が楽です。

-

ただし、ブラウザによって使い勝手が異なります。

-

「WebPositive」:

不安定でpanic がよく出ますが、以前よりは使えます。「通常のブラウザ画面」で、マウスでの範囲選択ができます。 編集アイコン(Web フォント)が表示されないので「ブログの編集画面」は使いづらいです。 ホストOS 側でも「ブログの編集画面」を表示して編集アイコンを表示させながらなら使えます。

-

「Otter Browser」:

安定しています。「通常のブラウザ画面」で、マウスでの範囲選択ができません。 範囲選択するには、ブログの編集画面にする必要がありました。 問題なのはスクロールバーが効かず、マウスのホイールだと希望の場所に行くまでに時間がかかることです。

-

安定している「Otter Browser」をインストール:

メニュー(右上の青い葉)→Applications →「HaikuDepot」

「おすすめパッケージ」タブ →「Otter Browser」をクリック

→「インストール」をクリック →「Apply changes」

-


環境の構築:

手順はコチラ

-

操作例:

-

(1). 「WebPositive」を起動

メニュー(右上の青い葉)→Applications →「WebPositive」

アドレスバーに「https://furuya7.hatenablog.com/entry/2021/」入力

右の検索に「H136-1」

Haiku」にてアプリを日本語化する準備〈H136-1〉をクリック

目次にある、「haikuporter ツールをインストール」をクリック

-

(2). 手順にあるコマンドを見ながら、端末で作業:

→ブラウザの内容を貼り付けるために選択するには「WebPositive」で操作が必要でした。 「Otter Browser」では範囲選択できません。

-

マウスにて、コマンドの先頭をクリックして、そのまま行末まで範囲選択→右クリック→「コピー」

端末にて、マウスの中央ボタンをクリック→「貼り付け」

-

(3). 忘れずに、手順の中にある「便利なコマンド」を使えるようにしておきます

-

(4). セットアップ後に、最初に起動したときのみ、全ての「ports」のチェックと更新が実行されます:

しばらくパソコンが使えないので、タイミングを見計らって実施します。

~> cd ~/Git/haikuporter/
~/Git/haikuporter> haikuporter -v

→更新が終われば、更新されていない個別の「ports」だけが対象なので、通常の速度に戻ります。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----

-

7.「haikuports」ツリーにて、「featherpad」アプリを確認:

-

在り処の表示:
> cd ~/Git/haikuporter/

> haikuporter -o featherpad
/boot/home/Git/haikuports/app-editors/featherpad
> cd ~/Git/haikuports/app-editors/featherpad/

> ls -1
additional-files
featherpad-1.0.1.recipe    ←(レシピファイル: 必須)
patches              ←(パッチファイルを置いておくフォルダ: 現在はなし)
work-1.0.1            ←(作業フォルダ)更新チェックで自動で作られたもの

> ls additional-files
notepadqq.rdef.in        ←(アプリのアイコンなどのリソースが定義されてます)

> ls patches
featherpad-1.0.1.patchset  ←(パッチファイルを使う場合: 現在はなし)

→「.rdef.in 」が置かれている場所はアプリによってはソースの方にある場合もあります。 今回の場合は、パッケージ化のときに作業フォルダに自動でコピーされます。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----

-

8. 参考: 「featherpad」のインストール関連の情報:

-

公式サイト:

GitHub tsujan/FeatherPad

-

  • 以降は、実行は要りません。参考となる資料なので、ながめるだけです。

-


依存パッケージ:

 * g++ >= 5
 * libx11-dev and libxext-dev (for X11)
 * qtbase5-dev and libqt5x11extras5-dev (for Qt5)
 * libqt5svg5-dev (for hard-coded SVG icons)
 * libhunspell-dev (for spell checking)    ←(「1.0.1」で追加されました)
 * qttools5-dev-tools (for localization)

-

(1). 「1.0.1」で増えた依存パッケージ:

日本語では使わないスペルチェックの機能:

hunspell-devel:

> pkgman search hunspell
Status  Name                Description                                         
--------------------------------------------------------------------------------
S       enchant             Generic spell-checking dictionary library           
S       hunspell            Spellchecker, forked from myspell                   
        hunspell_devel      Spellchecker, forked from myspell (development files  ←(必要)
        hunspell_source     Spellchecker, forked from myspell (source files)    
:

→「Otter Browser」のインストールの依存で上の 2つは入っていますが、それ以外に「hunspell_devel」のインストールが必要です。逆に、「hunspell_devel」をインストールすると「hunspell」もインストールされました。

-

(2). 依存のインストール:
> pkgman install hunspell_devel
> pkgman search hunspell
Status  Name                Description                                         
--------------------------------------------------------------------------------
S       enchant             Generic spell-checking dictionary library           
S       hunspell            Spellchecker, forked from myspell                   
S       hunspell_devel      Spellchecker, forked from myspell (development files
        hunspell_source     Spellchecker, forked from myspell (source files)    
:

→「hunspell_devel」をインストールしてから、削除すると依存により「Otter Browser」も削除されるので注意。

-

-


翻訳ファイルとヘルプファイル

featherpad/data/translations/featherpad_ja.ts
featherpad/data/help
featherpad/data/help_ja
featherpad/data/help_pt_BR

→ヘルプファイルは出来たら書き込みできるホームに移動するかリンクできると便利。

-


参考: 最新のソースの入手:

  • 実行は要りません。ながめるだけです。

-

ダウンロード:

https://github.com/tsujan/FeatherPad/archive/refs/tags/V1.1.0.tar.gz

$ sha256sum FeatherPad-1.1.0.tar.gz
82bd94996f0d7be23be1b150a22d88b9c0b19c9852d5c2c7388e61ea9e05be03  FeatherPad-1.1.0.tar.gz

-


参考: インストール手順:

FeatherPad/INSTALL

-

qmake を使う場合:
> qmake && make
> make install

Haiku に移植済の「FeatherPad-0.9.2」で使われているやり方です。

-

cmake を使う場合:
> mkdir build && cd build
> cmake ..
> make
> make install

Haiku に移植済の「FeatherPad-1.0.1」で使われているやり方です。 メッセージから依存の状態が確認できます。ビルド用のフォルダを作るので、やり直しが楽です。 今回もこのやり方になります。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- -

-

9. 現在、Haiku に移植されている「FeatherPad-1.0.1」の情報:

> haikuporter -o featherpad
/boot/home/Git/haikuports/app-editors/featherpad

> cd /boot/home/Git/haikuports/app-editors/featherpad/

> ls -1
additional-files
featherpad-1.0.1.recipe
work-1.0.1

> ls -1 additional-files
featherpad.rdef.in

> ls -1 work-1.0.1
port.recipe

-

1). 「.rdef.in」ファイル:

> cat ~/Git/haikuports/app-editors/featherpad/additional-files/featherpad.rdef.in
resource app_flags B_MULTIPLE_LAUNCH;

resource app_version {
        major  = @MAJOR@,
        middle = @MIDDLE@,
        minor  = @MINOR@,

        variety = B_APPV_FINAL,
        internal = 0,

        short_info = "FeatherPad",
        long_info = "Lightweight Qt5 text editor"
};

resource app_signature "application/x-vnd.featherpad";

resource file_types message {
                "types" = "text/x-source-code",
                "types" = "text/x-makefile",
                "types" = "text/x-jamfile",
                "types" = "text/html",
                "types" = "text/xml",
                "types" = "text/plain",
                "types" = "text/rtf"
};

resource vector_icon {

        $"6E6369661A05FE0382848103696B670387898603A7A8A603B3B4B203B4B4B303"
        $"A2A39F05F903D2D9E105FA034D76A303C8CACA03878F92038EA8C40393999A03"
        $"AFBCC803090B0C03A0A29E03A4A7A403A9ABA7038B8D8903888A850397999503"
        $"D2D5CE035B5E592408052020CBFA20CBFACBFA20CBFA20200211B85BB5ACB855"
        $"B453B768B5A6B48BB593B57EB59AB48BB593B493B613B493B613B493B613B40E"
        $"B623B40EB623B403BD19B40DCB04B406C40FB40DCB04B46CCACFB46CCACFBBF7"
        $"CB0BCB12CACEC387CB00CB12CACECB70CB03CB70CB03CB78C40ECB70B626CB7C"
        $"BD19CB70B626CAEBB60FCAEBB60FCAEBB60FCAEFB593CAEFB593C9FDB59AC722"
        $"B5ACC817B5A6C726B453C518B5904DB406C49AB53AC32BB523C31DB3CFC1DDB5"
        $"D6BFE0B56043B3B4BEFCB4E7BD43B5A6BDB1B3F7BC80B456BA66B590BB4FB484"
        $"BA91B4060207B85BB5ACB87CB65CB855B453BA66B590BA91B406BB4FB484BD43"
        $"B5A6BC80B456BD43B5A6BD31B60CBD31B60CBD08B6C1BCC0B82DBCE9B777BB87"
        $"B887BA61B6A2BAF6B77BBAAAB7E6B8B2B7BFB99FB8D5B899B70D000ABD43B5A6"
        $"BD43B5A6BDB1B3F7BFE0B560BEFCB4E743B3B4C32BB523C1DDB5D6C31CB60CC2"
        $"CAB7D4C300B6F3C2B7B760C27BB5FDC28FB674C227B6C4C1A4B861C1EFB796C0"
        $"6FB83EBFA7B61CC00DB70FBF98B736BDF0B87BBF00B81BBD8BB7B9BD31B60C3A"
        $"B6E1BD31B60CBD43B5A6BD43B5A6BD43B5A60003BE15B5B3BE15B5B3BDBAB64D"
        $"BE09B788BDB6B6EABF40B7E5BE15B5B3BF75B501BE15B5B30202C0ACB5B345B5"
        $"1EC025B64AC175B788C095B7BCC1EBB6F00204B493B613B500BC33B55DB632B7"
        $"BCB690B6F3B670B6DCB697B51AB6B5B5FAB69EB4F5BCA925C892B53AC29FB3B8"
        $"C28B0204C837B676C8EFB688C90DB60ACAEBB60FCA04B626CA8CBC27CA8FC871"
        $"CBACC26ECA30C28BCA63B6BBCA94BCA0C9ABB69E0206C32BB523C31CB60CC31D"
        $"B3CFC518B590C49AB53A4DB406C722B5ACC726B453C702B65BC6CAB7BBC6E5B7"
        $"0AC5D7B8D5C51EB6A3C4D9B7E5C4BBB768C2CAB7D4C342B906C300B6F30205B4"
        $"8BB593B48BB593B57EB59AB85BB5ACB768B5A6B87CB65CB8B2B7BFB899B70DB8"
        $"63B757B7BCB690B810B6F3B6F3B670B493B613B55DB632B493B6130205C722B5"
        $"ACC702B65BC817B5A6CAEFB593C9FDB59ACAEFB593CAEBB60FCAEBB60FCA04B6"
        $"26C837B676C90DB60AC796B6AFC6CAB7BBC73AB747C6E5B70A0202BE15B5B3BD"
        $"BAB64DBF75B501BE09B788BF40B7E5BDB6B6EA0202C0ACB5B3C025B64A45B51E"
        $"C175B788C1EBB6F0C095B7BC0206B40EB623B403BD19B40EB623B493B613B493"
        $"B613B500BC3325C892B3B8C28BB50AC92CB51ECA61B516C9C7B4F3CA7DB46CCA"
        $"CF24CAB4B46CCACFB40DCB04B40DCB04B406C40F0206CAEBB60FCA8CBC27CAEB"
        $"B60FCB70B626CB70B626CB7CBD19CB70CB03CB78C40ECB70CB03CB12CACECB12"
        $"CACECAE5CAB4CA5DCA61CA8ACA7DCA6AC9BBCA8FC871CA7CC917CBACC26E0212"
        $"BCC0B82DBB87B887BCE9B777BD31B60CBD08B6C13AB6E1BDF0B87BBD8BB7B9BD"
        $"8FB8B5BCC8B927BD2BB8EDBC51B959BB6731BBDCB98F32BA16B72DBA42B77FB9"
        $"0AB72DBA42B73BBAB8B73BBAB8B7E8BAE1B9F7BB5BB947BB33B904BB92B730BC"
        $"4FB6A3BA94B79BBC58B8D4BC74B86CBC6AB878BCC6B76FBD46B755BCB5B7DA40"
        $"B71CC4C9B747C25AB6DEC56CB670C6B3B6A7C60DB627C77D25C892B5F0C85FB5"
        $"3AC29FB51AB6B5B4F5BCA9B5FAB69EB7BCB690B6DCB697B810B6F3B8B2B7BFB8"
        $"63B757B99FB8D5BA61B6A2BAAAB7E6BAF6B77B0205BFA7B61CBF98B736C00DB7"
        $"0FC1A4B861C06FB83EC1A4B861C188B8BBC188B8BBBFF2B8DEBCC8B927BE5DB9"
        $"0ABD2BB8EDBDF0B87BBD8FB8B5BF00B81B0016C1A4B861C1A4B861C1EFB796C2"
        $"7BB5FDC227B6C4C28FB674C2CAB7D4C2B7B760C342B906C51EB6A3C4BBB768C4"
        $"D9B7E5C6CAB7BBC5D7B8D5C73AB747C837B676C796B6AFC8EFB688CA63B6BBC9"
        $"ABB69ECA94BCA0CA8FC871CA30C28BC41FC832B73CC84BBDACC875B73CC84BB7"
        $"07C7EDB707C7EDB81DC733B8BBC4BAB868C5EAB98AC47FBB2BC40EBA5BC442BD"
        $"59C420C1B3C41FBF85C424C18DC3FCC11FC390C144C3B5BFD5C2A3BC57C314BD"
        $"DFC353BDB5C29EBF8FC09BBEF0C20DBFA8BF35C12DBE38C367BF55C27ABD3BC5"
        $"18BB37C384BBC2C68EBB42C97FBB3DC806BB44C8FCBAEAC7EABA5BC876BA9BC5"
        $"E6B979C188B8BBC3C7B891C188B8BBC1A4B861C1A4B861C1A4B8610004C4C9BC"
        $"F1C4C9BCF1C49DBD2EC41CBDE4C447BDA7C55CBDF5C7E0BDE4C69FBDF5C76DBC"
        $"83C4C9BCF1C5E9BCDBC4C9BCF10407FA3EC29EC323C29BC3A6C29EC428C29EC4"
        $"28C40BC428C853C42AC6E7C42AC853C42AC856C3A6C853C323C853C323C6E6C3"
        $"23C29EC323C40AC323C29EC3230203B9C3C539BB2BC52CB9C3C579B9C5C63DB9"
        $"C5C5FDBB42C629BDFDC53D3AC703BC93C52E0212BCC8B927BC51B959BE5DB90A"
        $"C188B8BBBFF2B8DEC3C7B891C7EABA5BC5E6B979C73633C518BB37C5CDBAFFC3"
        $"84BBC2C12DBE38C27ABD3BC367BF55BF8FC09BBFA8BF35BEF0C20DBC57C314BD"
        $"B5C29EBC32C334BBC2C390BBE7C372BB9CC3B0BB2BC40EBB51C3EFBA5BC442B8"
        $"BBC4BAB98AC47FB988C123BF04BC52BCF5BF21BB87BDECB71CC4C9B91CC18BB7"
        $"47C25AB76FBD46B7DA40B80FBD83B92FBE39B898BDECB93EBDA4B92DBC79B93E"
        $"BD0F30BC32B9F7BB5BB9C5BBA2BA5BBB1EBAEDBA66BAADBACABB0CBA3EBB6731"
        $"BB49B9EEBBDCB98F0203B72DBA42B86DBA48B77FB90ABB673132BA16BB49B9EE"
        $"BAEDBA66BB0CBA3EB9ADBA520204B72DBA42B72DBA42B86DBA48BAEDBA66B9AD"
        $"BA52BAADBACAB9F7BB5BBA5BBB1EB947BB33B73BBAB8B7E8BAE1B73BBAB80203"
        $"C7EABA5BC73633C876BA9BC97FBB3DC8FCBAEAC806BB44C518BB37C68EBB42C5"
        $"CDBAFF0204B730BC4FB79BBC58B6A3BA94B9F7BB5BB904BB92B9C5BBA2B92DBC"
        $"7930BC32B92DBC79B8D4BC74B8D4BC74B86CBC6A0204B8D4BC74B878BCC6B8D4"
        $"BC74B92DBC79B92DBC79B93EBD0FB92FBE39B93EBDA4B898BDECB76FBD46B80F"
        $"BD83B755BCB50205B71CC4C9B6DEC56CB91CC18BBF04BC52BB87BDECBCF5BF21"
        $"B8BBC4BAB988C123B868C5EAB707C7EDB81DC733B6E1C79EB670C6B329C702B6"
        $"A7C60D0203C4C9BCF1C49DBD2EC5E9BCDBC7E0BDE4C76DBC83C69FBDF5C41CBD"
        $"E4C55CBDF5C447BDA70203BBC2C390BD8CC3A2BBE7C372BC57C314BC32C334BD"
        $"DFC353C11FC390BFD5C2A3BF55C3970204C29EC323C29EC323C40AC323C853C3"
        $"23C6E6C323C853C323C856C3A6C856C3A6C66CC3A6C29BC3A6C485C3A6C29BC3"
        $"A60204BB2BC40EBD59C420BB51C3EFBBC2C390BB9CC3B0BD8CC3A2C11FC390BF"
        $"55C397C144C3B5C1B3C41FC18DC3FCBF85C4240204C29BC3A6C29BC3A6C485C3"
        $"A6C856C3A6C66CC3A6C856C3A6C853C42AC853C42AC6E7C42AC29EC428C40BC4"
        $"28C29EC4280203B9C3C539B9C3C579BB2BC52CBDFDC53DBC93C52E3AC703B9C5"
        $"C63DBB42C629B9C5C5FD020725C892B50AC92CB5F0C85FB670C6B3B627C77D29"
        $"C702B707C7EDB6E1C79EB707C7EDB73CC84BB73CC84BBDACC875CA8FC871C41F"
        $"C832CA7CC917CA5DCA61CA6AC9BBC347CA6AB51ECA61BC34CA77B516C9C70204"
        $"B46CCACFBBF7CB0B24CAB4B51ECA61B4F3CA7DBC34CA77CA5DCA61C347CA6ACA"
        $"8ACA7DCB12CACECAE5CAB4C387CB001E0A00020001000A010102000A02030304"
        $"05000A020106000A020107000A030108000A040109000A04010A000A05010B00"
        $"0A06010C000A07010D000A07010E000A08010F000A090110000A0A0411121314"
        $"000A0B0115000A0C0116000A0D0117000A0E0118000A0F0119000A10011A000A"
        $"11011B000A12011C000A13011D000A14011E000A15011F000A160120000A1701"
        $"21000A180122000A19012300"
};

→アプリをシステムに登録するときに必要な情報(アイコン等)です。

-

2). レシピファイル:

> cat ~/Git/haikuports/app-editors/featherpad/featherpad-1.0.1.recipe

-

3). パッチファイル:

なし

-

もし使うときは:

> cd ~/Git/haikuports/app-editors/featherpad/
> mkdir patches
> ls -1
additional-files
featherpad-1.0.1.recipe
patches
work-1.0.1

> ls ~/Git/haikuports/app-editors/featherpad/patches/featherpad-1.0.1.patchset

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- --

-

10.「FeatherPad-1.1.0」のレシピの作成:

-


1). レシピファイルをコピーして修正:

-

(1). 参考: 最新バージョンの「FeatherPad-1.1.0」をダウンロードする指定:

https://github.com/tsujan/FeatherPad/archive/refs/tags/V1.1.0.tar.gz

$ sha256sum FeatherPad-1.1.0.tar.gz
82bd94996f0d7be23be1b150a22d88b9c0b19c9852d5c2c7388e61ea9e05be03  FeatherPad-1.1.0.tar.gz

-

(2). コピーして、レシピファイルの名前を変更:
> cd ~/Git/haikuports/app-editors/featherpad/
> cp featherpad-1.0.1.recipe featherpad-1.1.0.recipe
> mv featherpad-1.0.1.recipe featherpad-1.0.1.recipe-ORG
> ls -1
additional-files
featherpad-1.0.1.recipe-ORG
featherpad-1.1.0.recipe
work-1.0.1

-

(3). レシピファイル「featherpad-1.1.0.recipe」の修正:
> lpe ~/Git/haikuports/app-editors/featherpad/featherpad-1.1.0.recipe
SOURCE_URI="https://github.com/tsujan/FeatherPad/archive/refs/tags/V$portVersion.tar.gz"
CHECKSUM_SHA256="62bcb8ceb788a1626c41ee7dc3f3fbebf73b82db31cf76708a79073da0f04414"

↓ 置換

SOURCE_URI="https://github.com/tsujan/FeatherPad/archive/refs/tags/V$portVersion.tar.gz"
CHECKSUM_SHA256="82bd94996f0d7be23be1b150a22d88b9c0b19c9852d5c2c7388e61ea9e05be03"

-

(4). 修正したレシピファイル「featherpad-1.1.0.recipe」を確認:
> cat ~/Git/haikuports/app-editors/featherpad/featherpad-1.1.0.recipe
SUMMARY="A lightweight Qt5 plain-text editor for Linux"
DESCRIPTION="FeatherPad (by Pedram Pourang, a.k.a. Tsu Jan \
<tsujan2000@gmail.com>) is a lightweight Qt5 plain-text editor for Linux. \
It is independent of any desktop environment and has:
* Drag-and-drop support, including tab detachment and attachment;
* X11 virtual desktop awareness (using tabs on current desktop but opening \
a new window on another);
* An optionally permanent search-bar with a different search entry for each tab;
* Instant highlighting of found matches when searching;
* A docked window for text replacement;
* Support for showing line numbers and jumping to a specific line;
* Optional selection highlighting;
* Automatic detection of text encoding as far as possible and optional \
saving with encoding;
* Syntax highlighting for common programming languages;
* Ability to open URLs with appropriate applications;
* Session management;
* Side-pane mode;
* Auto-saving;
* Spell checking with Hunspell;
* Printing;
* Text zooming;
* Appropriate but non-interrupting prompts; and
* Other features that can be found in its settings, \
on its menus or when it is actually used."
HOMEPAGE="https://github.com/tsujan/FeatherPad"
COPYRIGHT="2016, 2018 Pedram Pourang"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://github.com/tsujan/FeatherPad/archive/refs/tags/V$portVersion.tar.gz"
CHECKSUM_SHA256="82bd94996f0d7be23be1b150a22d88b9c0b19c9852d5c2c7388e61ea9e05be03"
SOURCE_FILENAME="FeatherPad-$portVersion-tar.gz"
SOURCE_DIR="FeatherPad-$portVersion"
ADDITIONAL_FILES="featherpad.rdef.in"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

PROVIDES="
        featherpad$secondaryArchSuffix = $portVersion
        app:FeatherPad$secondaryArchSuffix = $portVersion
        "

REQUIRES="
        haiku$secondaryArchSuffix
        lib:libGL$secondaryArchSuffix
        lib:libhunspell_1.7$secondaryArchSuffix
        lib:libQt5Core$secondaryArchSuffix
        lib:libQt5Gui$secondaryArchSuffix
        lib:libQt5Network$secondaryArchSuffix
        lib:libQt5PrintSupport$secondaryArchSuffix
        lib:libQt5Svg$secondaryArchSuffix
        lib:libQt5Widgets$secondaryArchSuffix
        lib:libz$secondaryArchSuffix
        "

BUILD_REQUIRES="
        haiku${secondaryArchSuffix}_devel
        devel:libGL$secondaryArchSuffix
        devel:libhunspell_1.7$secondaryArchSuffix
        devel:libQt5Core$secondaryArchSuffix
        devel:libQt5Gui$secondaryArchSuffix
        devel:libQt5Network$secondaryArchSuffix
        devel:libQt5PrintSupport$secondaryArchSuffix
        devel:libQt5Svg$secondaryArchSuffix
        devel:libQt5Widgets$secondaryArchSuffix
        devel:libz$secondaryArchSuffix
        "

BUILD_PREREQUIRES="
        cmd:find
        cmd:g++$secondaryArchSuffix
        cmd:ld$secondaryArchSuffix
        cmd:lrelease$secondaryArchSuffix >= 5
        cmd:make
        cmd:pkg_config$secondaryArchSuffix
        cmd:cmake$secondaryArchSuffix
        "

BUILD()
{
        mkdir -p build
        cd build
        cmake .. -DCMAKE_INSTALL_PREFIX:PATH="$appsDir/FeatherPad" \
                -DCMAKE_BUILD_TYPE=Release

        make $jobArgs
}

INSTALL()
{
        cd build
        make install

        mv $appsDir/FeatherPad/featherpad \
                $appsDir/FeatherPad/FeatherPad

        local APP_SIGNATURE="application/x-vnd.featherpad"
        local MAJOR="`echo "$portVersion" | cut -d. -f1`"
        local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
        local MINOR="`echo "$portVersion" | cut -d. -f3`"
        sed \
                -e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
                -e "s|@MAJOR@|$MAJOR|" \
                -e "s|@MIDDLE@|$MIDDLE|" \
                -e "s|@MINOR@|$MINOR|" \
                $portDir/additional-files/featherpad.rdef.in > featherpad.rdef

        addResourcesToBinaries featherpad.rdef $appsDir/FeatherPad/FeatherPad
        addAppDeskbarSymlink $appsDir/FeatherPad/FeatherPad "FeatherPad"
}

→機能の追加の漏れがあったので「DESCRIPTION=」の部分も修正しました。

-


2). 「download」フォルダと「work-1.0.1」フォルダを削除

> cd ~/Git/haikuports/app-editors/featherpad/
> rm -r work-1.0.1
> rm -r download

-


3). パッケージ化を実行

> cd ~/Git/haikuporter/
~/Git/haikuporter> hp featherpad
:
-- Installing: /packages/featherpad-1.1.0-1/.self/apps/FeatherPad/translations/featherpad_ja.qm
:
-- Installing: /packages/featherpad-1.1.0-1/.self/apps/FeatherPad/featherpad
-- Installing: /packages/featherpad-1.1.0-1/.self/apps/FeatherPad/data/help
-- Installing: /packages/featherpad-1.1.0-1/.self/apps/FeatherPad/data/help_ca
-- Installing: /packages/featherpad-1.1.0-1/.self/apps/FeatherPad/data/help_ja
-- Installing: /packages/featherpad-1.1.0-1/.self/apps/FeatherPad/data/help_pt_BR

name                    featherpad
version                 1.1.0-1
architecture            x86_64
summary                 "A lightweight Qt5 plain-text editor for Linux"
description             "FeatherPad (by Pedram Pourang, a.k.a. Tsu Jan <tsujan2000@gmail.com>) is a lightweight Qt5 plain-text editor for Linux. It is independent of any desktop environment and has:
* Drag-and-drop support, including tab detachment and attachment;
* X11 virtual desktop awareness (using tabs on current desktop but opening a new window on another);
* An optionally permanent search-bar with a different search entry for each tab;
* Instant highlighting of found matches when searching;
* A docked window for text replacement;
* Support for showing line numbers and jumping to a specific line;
* Optional selection highlighting;
* Automatic detection of text encoding as far as possible and optional saving with encoding;
* Syntax highlighting for common programming languages;
* Ability to open URLs with appropriate applications;
* Session management;
* Side-pane mode;
* Auto-saving;
* Spell checking with Hunspell;
* Printing;
* Text zooming;
* Appropriate but non-interrupting prompts; and
* Other features that can be found in its settings, on its menus or when it is actually used."
packager                "FuRuYa7 <mymail@mydomain.org>"
vendor                  "Haiku Project"
licenses {
        "GNU GPL v3"
}
copyrights {
        "2016, 2018 Pedram Pourang"
}
provides {
        featherpad = 1.1.0
        app:featherpad = 1.1.0
}
requires {
        haiku >= r1~beta3_hrev55742-1
        lib:libgl >= 1.0.0
        lib:libhunspell_1.7 >= 0.0.1
        lib:libqt5core >= 5.15.2
        lib:libqt5gui >= 5.15.2
        lib:libqt5network >= 5.15.2
        lib:libqt5printsupport >= 5.15.2
        lib:libqt5svg >= 5.15.2
        lib:libqt5widgets >= 5.15.2
        lib:libz >= 1.2.11
}
urls {
        "https://github.com/tsujan/FeatherPad"
}
source-urls {
# Download
        "https://github.com/tsujan/FeatherPad/archive/refs/tags/V1.1.0.tar.gz"
# Location 2
        "https://ports-mirror.haiku-os.org/featherpad/V1.1.0.tar.gz"
}
mimesetting files for package featherpad-1.1.0-1-x86_64.hpkg ...
creating package featherpad-1.1.0-1-x86_64.hpkg ...
----- Package Info ----------------
header size:                     80
heap size:                  1246207
TOC size:                      3562
package attributes size:       1805
total size:                 1246287
-----------------------------------
waiting for build package featherpad-1.1.0-1 to be deactivated
grabbing featherpad-1.1.0-1-x86_64.hpkg and moving it to /boot/home/Git/haikuports/packages/featherpad-1.1.0-1-x86_64.hpkg

→「パッケージ化」できました。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- ---

-

11. 作成したパッケージのインストール:

-


1). パッケージのインストール先:

パッケージ化の作成時の置き場:
/boot/home/Git/haikuports/packages/featherpad-1.1.0-1-x86_64.hpkg

システムにインストール時(pkgman でインストール):
/boot/system/packages/featherpad-1.1.0-1-x86_64.hpkg

ホームにインストール時(cp コマンドでインストール):
/boot/home/config/packages/featherpad-1.1.0-1-x86_64.hpkg

-


2). 「FeatherPad-1.1.0」をシステムにインストールする場合:

  • 通常行うアプリのインストールです。

-

> pkgman install /boot/home/Git/haikuports/packages/featherpad-1.1.0-1-x86_64.hpkg
:
    install package featherpad-1.1.0-1 from local file
:
[system] Done.

→インストールできました。

-

メニューからの起動もOK 。日本語化されています

-


3). 「FeatherPad-1.1.0」をホームにインストールする場合:

  • ホームにインストールする利点は、システム更新で上書きされずに残ること。

→開発中のアプリや個人的にカスタマイズしたアプリのインストールをしたいときに使えます。

-

(1). すでにインストールしている「FeatherPad」を「HaikuDepot」で削除

-

(2). ホームにインストール:
> cp /boot/home/Git/haikuports/packages/featherpad-1.1.0-1-x86_64.hpkg /boot/home/config/packages/featherpad-1.1.0-1-x86_64.hpkg

→特定のフォルダにコピーするだけでインストール(ファイルシステムとして自動マウント)されます。 ホームに配置することで、システム更新でシステム側のアプリは上書きされますが、ホーム側にあるアプリは残るのが利点です。ファイルの右クリック時に個別に起動できます。

-

(3). ホームにインストールしたときのファイル配置:
/boot/home/config/apps/FeatherPad/FeatherPad
/boot/home/config/apps/FeatherPad/translations/featherpad_ja.qm
/boot/home/config/apps/FeatherPad/data/help_ja
/boot/home/config/settings/FeatherPad/featherpad/fp.conf

-

(4). ヘルプファイルに「個人的な備忘録」の追記は、リードオンリーなのでできません

-

書き込みできないので、その代わりのファイルを作成しました:

> lpe /boot/home/My/Documents/help_ja.md

↓ 記入例:

### 個人的な備忘録

左クリックを3回で行選択して、Alt+C でコピー

lpe ~/config/apps/FeatherPad/data/help_ja

-

### コマンドで、システム更新:

pkgman refresh
pkgman update


-

### パッケージのport の場所を検索

cd ~/Git/haikuporter/
haikuporter -o featherpad

/boot/home/Git/haikuports/app-editors/featherpad

-

haikuporter -o qtwebengine

/boot/home/Git/haikuports/dev-pythin/pyqtwebengine5
/boot/home/Git/haikuports/dev-qt/qtwebengine
/boot/home/Git/haikuports/dev-qt/qtwebengine_bin

-

### パッケージ化を実行

cd ~/Git/haikuporter/
hp featherpad

-

### パッチファイルで、「makefile」を含む行を表示:

inpatch makefile

-

### レシピファイルで、「koder」を含む行を表示:

inrecipe koder

-

→マウスや Shift +「矢印」キーなどでは範囲選択できないので、左クリックを3回で行選択して Alt+C でコピーします。端末には、右クリックで貼り付けできます。その他のアプリへは Alt+V です。

-

(注意) : システム更新のタイミングで、システム側の「Featherpad」は元のバージョンで上書きされます

手動でビルドしたパッケージをインストール後に、「ソフトウェアの更新」を起動:

→同じアプリ名の(以前のバージョンの)アプリで、システム側は上書きされます。メニューからの起動は、新しいバージョンの方が残ることを期待したいですが、確実ではありません。

-

ホームにインストールした新しいバージョンの「Featherpad」は配置場所に残り、

右クリックで場所を「ホーム」に指定すれば起動できます。

-

  • ホームにインストールする利点は、システム更新で上書きされずに残ること。

-

参考: もし、開発の残骸で、インストールのときにエラーする場合;

アプリはアンインストールしても、インストール時には、バックアップから優先してアプリが復元されます。

-

一度アプリをアンインストール後に、下記を削除:

rm -r /boot/home/config/non-packaged/apps/featherpad
rm -r /boot/system/packages/administrative/state_2021*

→「state_2021」のところは任意。個別に選ぶのもアリ。

GUI で操作するときは、ゴミ箱への移動でエラーしたら、Shift+「移動」をクリック

-

参考: Haiku での「パッケージ化」とは:

他のディストリビューションでの「パッケージ化」は、事前にソースからビルドしておいて、インストール時にそのバイナリをシステムに再配置できるように梱包したものです。

それと違い、Haiku の「パッケージ化」は、アプリや共有ライブラリを含んだファイルシステムを作るような仕組みです。使うときにファイルシステムとしてマウントできるように作られています。なので、通常のパッケージのしくみと思っていると移植作業で混乱します。また、パッケージ化処理中は chroot になることでシステムの書き込み保護を回避しています。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- ----

-

12. 追記: プルリクエストしました:

-

プルリクエスト (改善するための修正案)を送信

→サイトにある「Files changed」タブのクリックで、送ったファイル差分が確認できます。

採用されるかはわかりませんが貢献できるといいですね。

また、採用されると、ビルドしないと使えなかった機能が簡単にインストールできるようになったり、システム更新で上書きされなくなったりと、自分の使い勝手にも影響します。

-

-


参考: プルリクエストするときの自分なりのコツ:

-

プルリクエストする環境は、個人的には「Xubuntu 20.04.3」に統一:

自分でメインに使っているディストリビューションからのみ、プルリクエストしています。

プルリクエストするためには、それなりの環境を構築することが必要です。 git やSSH を使えるようにする設定とかは、一度だけ行えばいいだけですし、後は使えた実績ができます。

-

コマンドでプルリクエストするときは「git clone」時に、SSH のURL アドレスを指定:

GitHub のセキュリティ強化があり、以前のhttps のURL アドレスだとpush でエラーすると思われます。 使うには事前にSSH を使えるようにする設定が必要です。(ググればヒットします) ダウンロードする目的だけなら、支障なし。

-

ファイルの修正は「mousepad」ではなく「featherpad」に統一:

Haiku でソースファイルを作成するときのルールは、インデントは「タブ」文字です。 デフォルトで(下手に)タブをスペースに変換しない「featherpad」に統一していると気楽です。

「mousepad」だと「スペース」(空白)に変換する設定になっていることがあり、差分が作成されるときに影響します。本来の差分以外の無駄な差分の行が生成されます。

→「featherpad」の設定は、見た目の「タブ幅」のサイズは4 にして、「空白」と「タブ」を表示させる設定にしています。

-

プルリクエストすると、追加の注文がくることもあります

Haiku の「haikuports」サイトは「アプリの移植が目的」ということもあり、できるだけ「アプリの本家の方にプルリクストできないか」を求められることと、更に良くしようという熱心な方が多いのか、他のサイトよりも追加注文というか、アドバイスが多いようです。

できるだけそのアドバイスにトライするようにしていますが、スキル不足でできないときは「スキルがないのでできません」と丁寧に伝えるようにしています。自分では気づかなかった良いアドバイスを更にもらえ、勉強になることがあります。

-


プルリクエストするための差分を作るコツ:

今回のように、ファイルの内容だけでなく、ファイル名も変わってしまう時は、編集のやり方に注意が必要です。

「featherpad-1.0.1.recipe」→「featherpad-1.1.0.recipe」

-

通常、ファイルを置き換える時は
  1. 古いファイルを削除

  2. 新しいファイルをコピー

としがちですが、これだと差分は、

古いファイルの行が全て削除
新しいファイルの行が全て追加

→これだと、他の方が差分を見ても、どこを変更したのかわかりません。

-

オススメの手順:
  1. 古いファイルのファイル名を新しいファイル名に変更

  2. 新しいファイルの変更行のみ、修正 (使うエディタに注意。タブをスペースに変換しがち。その行も変更されたと認識されます。後は自動で作成されるバックアップファイルがあったら削除しておくこと)

ファイル名の変更
ファイルの一部の行が削除 →一部の行が追加
:
ファイルの一部の行が削除 →一部の行が追加

→これだと、差分を見れば、どこを変更したのかがわかります。

-

push する前に、必ず「git show」して確認すると良いです:

push する前なら、やり直すのは簡単です。 「git clone」したフォルダをリネームするか削除して、「git clone」からやり直せばいいだけです。

-

ただし、push してプルリクエストした後に対話が始まっていたら、削除は慎重にしないと、いきなり寸断されるので 相手に失礼ですし、下手な git 操作は影響が大きく、リスクが高いので注意が必要です。

-

「git show」の表示例:

~/Git/haikuports$ git show

commit e1...f79 (HEAD -> develop)
Author: FuRuYa7
Date:   Mon Dec 27 07:24:42 2021 +0900

    featherpad: bump version

diff --git a/app-editors/featherpad/featherpad-1.0.1.recipe b/app-editors/featherpad/featherpad-1.1.0.recipe
similarity index 94%
rename from app-editors/featherpad/featherpad-1.0.1.recipe
rename to app-editors/featherpad/featherpad-1.1.0.recipe
index e986b48c8..252cd6307 100644
--- a/app-editors/featherpad/featherpad-1.0.1.recipe
+++ b/app-editors/featherpad/featherpad-1.1.0.recipe
@@ -1,7 +1,7 @@
 SUMMARY="A lightweight Qt5 plain-text editor for Linux"
 DESCRIPTION="FeatherPad (by Pedram Pourang, a.k.a. Tsu Jan \
 <tsujan2000@gmail.com>) is a lightweight Qt5 plain-text editor for Linux. \
-It is independent of any desktop environment and has: \
+It is independent of any desktop environment and has:
 * Drag-and-drop support, including tab detachment and attachment;
 * X11 virtual desktop awareness (using tabs on current desktop but opening \
 a new window on another);
:

→行の削除(-) と追加(+) になっています。前後は未編集の 3つの行で挟まれます。

「git show」で表示されるのは直前のコミットがひとつのみです。

数個のコミットを表示させたいときは、別のコマンドでコミットの数とか、コミットの範囲を指定します。ただし、プルリクエストするなら、コミットはひとつにまとめるか、プルリクエストを複数に分割するのがやりやすいです。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- -----

-

13. 追記: プルリクエストについて、追加の修正のアドバイスが 2件ありました

-

2022-01-06

-

1). アドバイスのあった修正を実施:

-

(1). テキストファイルで右クリックしてアプリ起動するとファイルが開かれない件を解消:

参考:

“Open with” in Qt5 application

-

(2). cmake では「$secondaryArchSuffix」は使わないみたい:

-

2). 修正して、差分を追加で送信:

-

(1). 差分:
$ git diff
diff --git a/app-editors/featherpad/additional-files/featherpad.rdef.in b/app-editors/featherpad/additional-files/featherpad.rdef.in
index 2dfe6f571..5d482fd5d 100644
--- a/app-editors/featherpad/additional-files/featherpad.rdef.in
+++ b/app-editors/featherpad/additional-files/featherpad.rdef.in
@@ -1,6 +1,8 @@
 
 resource app_flags B_MULTIPLE_LAUNCH;
 
+resource ("QT:QPA_FLAGS") "Q_REF_TO_ARGV | Q_REF_TO_FORK";
+
 resource app_version {
        major  = @MAJOR@,
        middle = @MIDDLE@,

diff --git a/app-editors/featherpad/featherpad-1.1.0.recipe b/app-editors/featherpad/featherpad-1.1.0.recipe
index 252cd6307..84a37ebda 100644
--- a/app-editors/featherpad/featherpad-1.1.0.recipe
+++ b/app-editors/featherpad/featherpad-1.1.0.recipe
@@ -74,7 +74,7 @@ BUILD_PREREQUIRES="
        cmd:lrelease$secondaryArchSuffix >= 5
        cmd:make
        cmd:pkg_config$secondaryArchSuffix
-       cmd:cmake$secondaryArchSuffix
+       cmd:cmake
        "
 
 BUILD()

-

(2). プルリクエストのコメントの記述:
Implemented an advised fix:  ←(和訳: アドバイスのあった修正を実施)
[featherpad.rdef.in]
 resource app_flags B_MULTIPLE_LAUNCH;
 
+resource ("QT:QPA_FLAGS") "Q_REF_TO_ARGV | Q_REF_TO_FORK";
+

-

[featherpad-1.1.0.recipe]
-       cmd:cmake$secondaryArchSuffix
+       cmd:cmake

Right-click on the text file -> Confirmed that the file can be opened.

Thanks.

-

和訳: テキストファイルを右クリック -> (featherpad が起動して)ファイルを開くことができることを確認しました。

-

-


3). 最終的なファイルの内容を確認:

-

(1). 「featherpad.rdef.in」を確認:
$ featherpad ~/Git/haikuports/app-editors/featherpad/additional-files/featherpad.rdef.in
resource app_flags B_MULTIPLE_LAUNCH;

resource ("QT:QPA_FLAGS") "Q_REF_TO_ARGV | Q_REF_TO_FORK";

resource app_version {
    major  = @MAJOR@,
    middle = @MIDDLE@,
    minor  = @MINOR@,

    variety = B_APPV_FINAL,
    internal = 0,

    short_info = "FeatherPad",
    long_info = "Lightweight Qt5 text editor"
};

resource app_signature "application/x-vnd.featherpad";

resource file_types message {
        "types" = "text/x-source-code",
        "types" = "text/x-makefile",
        "types" = "text/x-jamfile",
        "types" = "text/html",
        "types" = "text/xml",
        "types" = "text/plain",
        "types" = "text/rtf"
};

resource vector_icon {

    $"6E6369661A05FE0382848103696B670387898603A7A8A603B3B4B203B4B4B303"
    $"A2A39F05F903D2D9E105FA034D76A303C8CACA03878F92038EA8C40393999A03"
    $"AFBCC803090B0C03A0A29E03A4A7A403A9ABA7038B8D8903888A850397999503"
    $"D2D5CE035B5E592408052020CBFA20CBFACBFA20CBFA20200211B85BB5ACB855"
    $"B453B768B5A6B48BB593B57EB59AB48BB593B493B613B493B613B493B613B40E"
    $"B623B40EB623B403BD19B40DCB04B406C40FB40DCB04B46CCACFB46CCACFBBF7"
    $"CB0BCB12CACEC387CB00CB12CACECB70CB03CB70CB03CB78C40ECB70B626CB7C"
    $"BD19CB70B626CAEBB60FCAEBB60FCAEBB60FCAEFB593CAEFB593C9FDB59AC722"
    $"B5ACC817B5A6C726B453C518B5904DB406C49AB53AC32BB523C31DB3CFC1DDB5"
    $"D6BFE0B56043B3B4BEFCB4E7BD43B5A6BDB1B3F7BC80B456BA66B590BB4FB484"
    $"BA91B4060207B85BB5ACB87CB65CB855B453BA66B590BA91B406BB4FB484BD43"
    $"B5A6BC80B456BD43B5A6BD31B60CBD31B60CBD08B6C1BCC0B82DBCE9B777BB87"
    $"B887BA61B6A2BAF6B77BBAAAB7E6B8B2B7BFB99FB8D5B899B70D000ABD43B5A6"
    $"BD43B5A6BDB1B3F7BFE0B560BEFCB4E743B3B4C32BB523C1DDB5D6C31CB60CC2"
    $"CAB7D4C300B6F3C2B7B760C27BB5FDC28FB674C227B6C4C1A4B861C1EFB796C0"
    $"6FB83EBFA7B61CC00DB70FBF98B736BDF0B87BBF00B81BBD8BB7B9BD31B60C3A"
    $"B6E1BD31B60CBD43B5A6BD43B5A6BD43B5A60003BE15B5B3BE15B5B3BDBAB64D"
    $"BE09B788BDB6B6EABF40B7E5BE15B5B3BF75B501BE15B5B30202C0ACB5B345B5"
    $"1EC025B64AC175B788C095B7BCC1EBB6F00204B493B613B500BC33B55DB632B7"
    $"BCB690B6F3B670B6DCB697B51AB6B5B5FAB69EB4F5BCA925C892B53AC29FB3B8"
    $"C28B0204C837B676C8EFB688C90DB60ACAEBB60FCA04B626CA8CBC27CA8FC871"
    $"CBACC26ECA30C28BCA63B6BBCA94BCA0C9ABB69E0206C32BB523C31CB60CC31D"
    $"B3CFC518B590C49AB53A4DB406C722B5ACC726B453C702B65BC6CAB7BBC6E5B7"
    $"0AC5D7B8D5C51EB6A3C4D9B7E5C4BBB768C2CAB7D4C342B906C300B6F30205B4"
    $"8BB593B48BB593B57EB59AB85BB5ACB768B5A6B87CB65CB8B2B7BFB899B70DB8"
    $"63B757B7BCB690B810B6F3B6F3B670B493B613B55DB632B493B6130205C722B5"
    $"ACC702B65BC817B5A6CAEFB593C9FDB59ACAEFB593CAEBB60FCAEBB60FCA04B6"
    $"26C837B676C90DB60AC796B6AFC6CAB7BBC73AB747C6E5B70A0202BE15B5B3BD"
    $"BAB64DBF75B501BE09B788BF40B7E5BDB6B6EA0202C0ACB5B3C025B64A45B51E"
    $"C175B788C1EBB6F0C095B7BC0206B40EB623B403BD19B40EB623B493B613B493"
    $"B613B500BC3325C892B3B8C28BB50AC92CB51ECA61B516C9C7B4F3CA7DB46CCA"
    $"CF24CAB4B46CCACFB40DCB04B40DCB04B406C40F0206CAEBB60FCA8CBC27CAEB"
    $"B60FCB70B626CB70B626CB7CBD19CB70CB03CB78C40ECB70CB03CB12CACECB12"
    $"CACECAE5CAB4CA5DCA61CA8ACA7DCA6AC9BBCA8FC871CA7CC917CBACC26E0212"
    $"BCC0B82DBB87B887BCE9B777BD31B60CBD08B6C13AB6E1BDF0B87BBD8BB7B9BD"
    $"8FB8B5BCC8B927BD2BB8EDBC51B959BB6731BBDCB98F32BA16B72DBA42B77FB9"
    $"0AB72DBA42B73BBAB8B73BBAB8B7E8BAE1B9F7BB5BB947BB33B904BB92B730BC"
    $"4FB6A3BA94B79BBC58B8D4BC74B86CBC6AB878BCC6B76FBD46B755BCB5B7DA40"
    $"B71CC4C9B747C25AB6DEC56CB670C6B3B6A7C60DB627C77D25C892B5F0C85FB5"
    $"3AC29FB51AB6B5B4F5BCA9B5FAB69EB7BCB690B6DCB697B810B6F3B8B2B7BFB8"
    $"63B757B99FB8D5BA61B6A2BAAAB7E6BAF6B77B0205BFA7B61CBF98B736C00DB7"
    $"0FC1A4B861C06FB83EC1A4B861C188B8BBC188B8BBBFF2B8DEBCC8B927BE5DB9"
    $"0ABD2BB8EDBDF0B87BBD8FB8B5BF00B81B0016C1A4B861C1A4B861C1EFB796C2"
    $"7BB5FDC227B6C4C28FB674C2CAB7D4C2B7B760C342B906C51EB6A3C4BBB768C4"
    $"D9B7E5C6CAB7BBC5D7B8D5C73AB747C837B676C796B6AFC8EFB688CA63B6BBC9"
    $"ABB69ECA94BCA0CA8FC871CA30C28BC41FC832B73CC84BBDACC875B73CC84BB7"
    $"07C7EDB707C7EDB81DC733B8BBC4BAB868C5EAB98AC47FBB2BC40EBA5BC442BD"
    $"59C420C1B3C41FBF85C424C18DC3FCC11FC390C144C3B5BFD5C2A3BC57C314BD"
    $"DFC353BDB5C29EBF8FC09BBEF0C20DBFA8BF35C12DBE38C367BF55C27ABD3BC5"
    $"18BB37C384BBC2C68EBB42C97FBB3DC806BB44C8FCBAEAC7EABA5BC876BA9BC5"
    $"E6B979C188B8BBC3C7B891C188B8BBC1A4B861C1A4B861C1A4B8610004C4C9BC"
    $"F1C4C9BCF1C49DBD2EC41CBDE4C447BDA7C55CBDF5C7E0BDE4C69FBDF5C76DBC"
    $"83C4C9BCF1C5E9BCDBC4C9BCF10407FA3EC29EC323C29BC3A6C29EC428C29EC4"
    $"28C40BC428C853C42AC6E7C42AC853C42AC856C3A6C853C323C853C323C6E6C3"
    $"23C29EC323C40AC323C29EC3230203B9C3C539BB2BC52CB9C3C579B9C5C63DB9"
    $"C5C5FDBB42C629BDFDC53D3AC703BC93C52E0212BCC8B927BC51B959BE5DB90A"
    $"C188B8BBBFF2B8DEC3C7B891C7EABA5BC5E6B979C73633C518BB37C5CDBAFFC3"
    $"84BBC2C12DBE38C27ABD3BC367BF55BF8FC09BBFA8BF35BEF0C20DBC57C314BD"
    $"B5C29EBC32C334BBC2C390BBE7C372BB9CC3B0BB2BC40EBB51C3EFBA5BC442B8"
    $"BBC4BAB98AC47FB988C123BF04BC52BCF5BF21BB87BDECB71CC4C9B91CC18BB7"
    $"47C25AB76FBD46B7DA40B80FBD83B92FBE39B898BDECB93EBDA4B92DBC79B93E"
    $"BD0F30BC32B9F7BB5BB9C5BBA2BA5BBB1EBAEDBA66BAADBACABB0CBA3EBB6731"
    $"BB49B9EEBBDCB98F0203B72DBA42B86DBA48B77FB90ABB673132BA16BB49B9EE"
    $"BAEDBA66BB0CBA3EB9ADBA520204B72DBA42B72DBA42B86DBA48BAEDBA66B9AD"
    $"BA52BAADBACAB9F7BB5BBA5BBB1EB947BB33B73BBAB8B7E8BAE1B73BBAB80203"
    $"C7EABA5BC73633C876BA9BC97FBB3DC8FCBAEAC806BB44C518BB37C68EBB42C5"
    $"CDBAFF0204B730BC4FB79BBC58B6A3BA94B9F7BB5BB904BB92B9C5BBA2B92DBC"
    $"7930BC32B92DBC79B8D4BC74B8D4BC74B86CBC6A0204B8D4BC74B878BCC6B8D4"
    $"BC74B92DBC79B92DBC79B93EBD0FB92FBE39B93EBDA4B898BDECB76FBD46B80F"
    $"BD83B755BCB50205B71CC4C9B6DEC56CB91CC18BBF04BC52BB87BDECBCF5BF21"
    $"B8BBC4BAB988C123B868C5EAB707C7EDB81DC733B6E1C79EB670C6B329C702B6"
    $"A7C60D0203C4C9BCF1C49DBD2EC5E9BCDBC7E0BDE4C76DBC83C69FBDF5C41CBD"
    $"E4C55CBDF5C447BDA70203BBC2C390BD8CC3A2BBE7C372BC57C314BC32C334BD"
    $"DFC353C11FC390BFD5C2A3BF55C3970204C29EC323C29EC323C40AC323C853C3"
    $"23C6E6C323C853C323C856C3A6C856C3A6C66CC3A6C29BC3A6C485C3A6C29BC3"
    $"A60204BB2BC40EBD59C420BB51C3EFBBC2C390BB9CC3B0BD8CC3A2C11FC390BF"
    $"55C397C144C3B5C1B3C41FC18DC3FCBF85C4240204C29BC3A6C29BC3A6C485C3"
    $"A6C856C3A6C66CC3A6C856C3A6C853C42AC853C42AC6E7C42AC29EC428C40BC4"
    $"28C29EC4280203B9C3C539B9C3C579BB2BC52CBDFDC53DBC93C52E3AC703B9C5"
    $"C63DBB42C629B9C5C5FD020725C892B50AC92CB5F0C85FB670C6B3B627C77D29"
    $"C702B707C7EDB6E1C79EB707C7EDB73CC84BB73CC84BBDACC875CA8FC871C41F"
    $"C832CA7CC917CA5DCA61CA6AC9BBC347CA6AB51ECA61BC34CA77B516C9C70204"
    $"B46CCACFBBF7CB0B24CAB4B51ECA61B4F3CA7DBC34CA77CA5DCA61C347CA6ACA"
    $"8ACA7DCB12CACECAE5CAB4C387CB001E0A00020001000A010102000A02030304"
    $"05000A020106000A020107000A030108000A040109000A04010A000A05010B00"
    $"0A06010C000A07010D000A07010E000A08010F000A090110000A0A0411121314"
    $"000A0B0115000A0C0116000A0D0117000A0E0118000A0F0119000A10011A000A"
    $"11011B000A12011C000A13011D000A14011E000A15011F000A160120000A1701"
    $"21000A180122000A19012300"
};

-

(2). レシピファイル「featherpad-1.1.0.recipe」を確認:
$ featherpad ~/Git/haikuports/app-editors/featherpad/featherpad-1.1.0.recipe
SUMMARY="A lightweight Qt5 plain-text editor for Linux"
DESCRIPTION="FeatherPad (by Pedram Pourang, a.k.a. Tsu Jan \
<tsujan2000@gmail.com>) is a lightweight Qt5 plain-text editor for Linux. \
It is independent of any desktop environment and has:
* Drag-and-drop support, including tab detachment and attachment;
* X11 virtual desktop awareness (using tabs on current desktop but opening \
a new window on another);
* An optionally permanent search-bar with a different search entry for each tab;
* Instant highlighting of found matches when searching;
* A docked window for text replacement;
* Support for showing line numbers and jumping to a specific line;
* Optional selection highlighting;
* Automatic detection of text encoding as far as possible and optional \
saving with encoding;
* Syntax highlighting for common programming languages;
* Ability to open URLs with appropriate applications;
* Session management;
* Side-pane mode;
* Auto-saving;
* Spell checking with Hunspell;
* Printing;
* Text zooming;
* Appropriate but non-interrupting prompts; and
* Other features that can be found in its settings, \
on its menus or when it is actually used."
HOMEPAGE="https://github.com/tsujan/FeatherPad"
COPYRIGHT="2016, 2018 Pedram Pourang"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://github.com/tsujan/FeatherPad/archive/refs/tags/V$portVersion.tar.gz"
CHECKSUM_SHA256="82bd94996f0d7be23be1b150a22d88b9c0b19c9852d5c2c7388e61ea9e05be03"
SOURCE_FILENAME="FeatherPad-$portVersion-tar.gz"
SOURCE_DIR="FeatherPad-$portVersion"
ADDITIONAL_FILES="featherpad.rdef.in"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

PROVIDES="
    featherpad$secondaryArchSuffix = $portVersion
    app:FeatherPad$secondaryArchSuffix = $portVersion
    "

REQUIRES="
    haiku$secondaryArchSuffix
    lib:libGL$secondaryArchSuffix
    lib:libhunspell_1.7$secondaryArchSuffix
    lib:libQt5Core$secondaryArchSuffix
    lib:libQt5Gui$secondaryArchSuffix
    lib:libQt5Network$secondaryArchSuffix
    lib:libQt5PrintSupport$secondaryArchSuffix
    lib:libQt5Svg$secondaryArchSuffix
    lib:libQt5Widgets$secondaryArchSuffix
    lib:libz$secondaryArchSuffix
    "

BUILD_REQUIRES="
    haiku${secondaryArchSuffix}_devel
    devel:libGL$secondaryArchSuffix
    devel:libhunspell_1.7$secondaryArchSuffix
    devel:libQt5Core$secondaryArchSuffix
    devel:libQt5Gui$secondaryArchSuffix
    devel:libQt5Network$secondaryArchSuffix
    devel:libQt5PrintSupport$secondaryArchSuffix
    devel:libQt5Svg$secondaryArchSuffix
    devel:libQt5Widgets$secondaryArchSuffix
    devel:libz$secondaryArchSuffix
    "

BUILD_PREREQUIRES="
    cmd:find
    cmd:g++$secondaryArchSuffix
    cmd:ld$secondaryArchSuffix
    cmd:lrelease$secondaryArchSuffix >= 5
    cmd:make
    cmd:pkg_config$secondaryArchSuffix
    cmd:cmake
    "

BUILD()
{
    mkdir -p build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX:PATH="$appsDir/FeatherPad" \
        -DCMAKE_BUILD_TYPE=Release

    make $jobArgs
}

INSTALL()
{
    cd build
    make install

    mv $appsDir/FeatherPad/featherpad \
        $appsDir/FeatherPad/FeatherPad

    local APP_SIGNATURE="application/x-vnd.featherpad"
    local MAJOR="`echo "$portVersion" | cut -d. -f1`"
    local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
    local MINOR="`echo "$portVersion" | cut -d. -f3`"
    sed \
        -e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
        -e "s|@MAJOR@|$MAJOR|" \
        -e "s|@MIDDLE@|$MIDDLE|" \
        -e "s|@MINOR@|$MINOR|" \
        $portDir/additional-files/featherpad.rdef.in > featherpad.rdef

    addResourcesToBinaries featherpad.rdef $appsDir/FeatherPad/FeatherPad
    addAppDeskbarSymlink $appsDir/FeatherPad/FeatherPad "FeatherPad"
}

→ブラウザで表示すると「タブ」が「スペース」に変換されているので注意。先頭の空行も意味があります。

-

-


4). 追記: プルリクエストが採用されました

-

2022-01-12 確認

Haiku にて、「FeatherPad」をインストールしていてシステム更新するか、新規にインストールすると「1.1.0-1」になりました。

これで、最新の「FeatherPad」が使えます。

-

「Notepadqq」のように 移植が難しくなる ので、次回バージョンアップされたときに、できるだけ依存パッケージが増えないことを祈るだけですね。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- ----- -

-

14. Haiku で気になるのは「WebPositive」ブラウザでWeb フォントがロードされないこと

-

特に「はてなブログ」では独自のWeb フォントを使っており、その編集アイコンがロードされないので「はてなブログの編集画面」は、Haiku で使うには無理があります。

-

編集アイコンが豆腐文字で表示:

→編集アイコンはMarkdown で記述しているので支障はないけど、右側にある「編集ツール」の「写真を投稿」、「カテゴリー」、「編集オプション」等が表示されません。これが痛いです。

-

Web フォントのロードが重いから外している感があるので、当分は無理だろうなと勝手に思っています。はてなブログの方がHaiku でも使えるサイト(はてな独自のWeb フォントのロードができないときは、ローカルにインストールした汎用のWeb フォントを設定で指定できるサイト)にしてもらった方が早いかも。

-

Ubuntu 22.04 では、Firefox ブラウザがSnap アプリに移行しています。Firefox ブラウザなら、安定していてサクサクだし、それらの問題もありません。Haiku でもSnap(Snapy) やFlatpak のシステム が移植されれば、Firefox ブラウザが使えるかもしれませんね。

ブラウザの移植はセキュリティの更新が多く、メンテ面でもきびしいことを考えると、Snap やFlatpak を移植するほうが最初は大変だけど後は楽かも。また、VSCode もインストールできます。

-

参考:

Fedora でもSnap が使えます: Fedora Server にSnap

GitHub: snapcore/snapd

Flathub へようこそ

Flatpak Firefox Webブラウザ

-

-


まとめ

移植されていた「FeatherPad-1.0.1」を「FeatherPad-1.1.0」にアップしてみました。 アップしなくても支障はありませんが、最新版が使えるようにできる仕組みがあるのは、ありがたいことです。

Haiku の開発環境は古くなっていたので、イチから構築し直しました。Git でリポジトリを更新するよりも確実です。

-

-

ちなみに、不安定なのでシステムビュワーとしてしか使っていなかった「WebPositive」が、ブラウザとしてだいぶ動くようになっていました。ブラウザが普通に使えるかは重要です。

後はWeb フォントである編集アイコンがロードされない件(はてなブログの編集 では致命的)が修正されて欲しいところ。

-

-


-

-

    目次

-

「投稿の先頭 へ」

-

-


-

「この目次 の先頭へ」

「本編の目次 に戻る」

-