登録日: 2022-01-22 更新日: 2022-03-02
Haiku にて、Linux アプリをHaiku に移植するときに使われる環境 「Haikuports」を構築 しました。
前回は、テキストエディタの「Notepadqq-1.4.8-3」を最新?の「2.0.0-beta」にアップしましたが、起動が遅くて使い勝手はよくありません。
-
見た目や使える機能は同じですが、エンジンが違うことで問題が少ない「Notepadqq-OTE」の移植にトライしました。その備忘録です。
-
今まで、「Notepadqq」のいくつかのバージョンアップを行ってきました。 見た目は似ていても、アプリの中身は別物です。
使っているエンジンも、依存するパッケージも、ダウンロード元も、パッケージ名の付け方も違いました。 すぐ忘れてしまうので整理して書き直しました。
自己流ですが、Haiku にて他のアプリを移植するときの参考になるかもしれません。
-
-
VirtualBox に「nightly ビルド」の「Haiku R1/beta3」をインストール しました。システムとしては最新です。そこで作業しました。
-
-
使用したPC は「ASUS Chromebox CN60」で、 プロセッサは第4世代の「Intel Celeron 2955U 」です。
-
(注)リンクを戻るときはブラウザの左上の「←」をクリック
-
-
目次
-
Haiku での移植の関連情報 :
-
-
今回の作業 :
A.「Notepadqq-1.4.8」のレシピファイルとパッチファイル
B.「Notepadqq-2.0.0-beta」のレシピファイルとパッチファイル
C.「Notepadqq-1.4.8-OTE」のレシピファイルとパッチファイル
「Notepadqq-1.4.8.OTE」をビルドしてインストール:
-
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -
-
「 Haiku R1/beta3」のデスクトップ
-
「nightly ビルド」のデスクトップ画面:

→「nightly ビルド」は開発版になりますが、更新の回数が多いので不具合が解消されている可能性があります。
-
「nightly ビルド」のアイコン:

→立ち上げデバイス(ボリューム)には「てんとう虫」マークが付きます。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --
-
現在のシステムのバージョン:
-
2022-01-22 現在:
~> uname -v hrev55792 Jan 22 2022 07:56:01
→「nightly ビルド」は、頻繁に更新されています。
-
時々、デスクトップが表示しきれないことがあるので、
もし、立ち上げで背景色のまま、デスクトップが表示されないときは「ココ 」を参照
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
-
1. 準備作業:
-
1). アプリを移植する環境の構築:
→以前に環境を構築してから時間が経つので、自分の把握していない、いくつかのアプリやライブラリのレシピファイル等が更新されているはずです。
なので、clone する親フォルダをリネームするか、削除して、環境をイチから構築し直します。
個人的には、VirtualBox のHaiku をインストールし直して、構築し直しました。
-
2). 「haikuports」ツリーにて、アプリの場所を確認:
> cd ~/Git/haikuporter/ > haikuporter -o notepadqq /boot/home/Git/haikuports/app-editors/notepadqq
-
3). レシピファイル名とパッチファイル名を変更:
例:
notepadqq-1.4.8.ote.recipe ←(「~ote」ではないことに注目) notepadqq-1.4.8.ote.patchset ←(「-ote」ではないことに注目)
-
4). レシピファイル名を変更:
例:
> cd ~/Git/haikuports/app-editors/notepadqq/ > cp notepadqq-1.4.8.recipe notepadqq-1.4.8.recipe-ORG > mv notepadqq-1.4.8.recipe notepadqq-1.4.8.ote.recipe > ls -1 additional-files notepadqq-1.4.8.recipe-ORG notepadqq-1.4.8.ote.recipe patches work-1.4.8.ote
→「notepadqq-1.4.8-ote.recipe」のファイル名にしたいけど、それにすると「パッケージ化」がうまく動きません。
-
5). パッチファイル名を変更:
例:
> cd ~/Git/haikuports/app-editors/notepadqq/patches/ > cp notepadqq-1.4.8.patchset notepadqq-1.4.8.ote.patchset > ls notepadqq-1.4.8.patchset notepadqq-1.4.8.ote.patchset
→こちらもレシピ名に合わせました。
-
6). 「work-1.4.8」、「work-1.4.8.ote」、および「download」フォルダがあれば削除
例:
> ls -1 ~/Git/haikuports/app-editors/notepadqq/ additional-files notepadqq-1.4.8.recipe-ORG notepadqq-1.4.8.ote.recipe patches
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
-
A.「Notepadqq-1.4.8」の場合:
「Qt5WebKit」エンジン
-

→「1.4.8-3」で日本語入力できるようになりました。メニューの日本語化は一部のみで、ヘルプ表示の「閉じる」ボタンが誤表示しています。
-
1). 「Notepadqq」公式サイト:
「Notepadqq」:
現在、各ディストリビューションでインストールされるバージョンです。
-
2). レシピファイル名とパッチファイル名:
notepadqq-1.4.8.recipe patchs/notepadqq-1.4.8.patchset
-
3). レシピファイルの確認:
> cat ~/Git/haikuports/app-editors/notepadqq/notepadqq-1.4.8.recipe
↓
SUMMARY="Multiplatform Notepad++-like editor"
DESCRIPTION="Notepadqq is designed from developers, for developers. With its \
more than 100 supported languages, it is the ideal text editor for your daily \
tasks."
HOMEPAGE="http://notepadqq.altervista.org/"
COPYRIGHT="2012-2019 Notepadqq Project"
LICENSE="GNU LGPL v3"
REVISION="3"
SOURCE_URI="https://github.com/notepadqq/notepadqq/archive/v$portVersion.tar.gz"
CHECKSUM_SHA256="13fba9abd84c59de27fbe92f74e2763b57588fcf9c88af10ec67313b0abbc9d0"
PATCHES="notepadqq-$portVersion.patchset"
ADDITIONAL_FILES="notepadqq.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
notepadqq$secondaryArchSuffix = $portVersion
app:Notepadqq$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libQt5Core$secondaryArchSuffix
lib:libQt5Gui$secondaryArchSuffix
lib:libQt5Network$secondaryArchSuffix
lib:libQt5PrintSupport$secondaryArchSuffix
lib:libQt5Svg$secondaryArchSuffix
lib:libQt5WebKit$secondaryArchSuffix
lib:libQt5WebKitWidgets$secondaryArchSuffix
lib:libQt5Widgets$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libGL$secondaryArchSuffix
devel:libQt5Core$secondaryArchSuffix
devel:libQt5Gui$secondaryArchSuffix
devel:libQt5Network$secondaryArchSuffix
devel:libQt5PrintSupport$secondaryArchSuffix
devel:libQt5Svg$secondaryArchSuffix
devel:libQt5WebKit$secondaryArchSuffix
devel:libQt5WebKitWidgets$secondaryArchSuffix
devel:libQt5Widgets$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:g++$secondaryArchSuffix
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:lrelease$secondaryArchSuffix >= 5
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:qmake$secondaryArchSuffix >= 5
cmd:which
"
BUILD()
{
./configure --prefix "$appsDir/Notepadqq"
make $jobArgs
}
INSTALL()
{
mkdir -p $appsDir/Notepadqq/Resources
make install
mv $appsDir/Notepadqq/lib/notepadqq/notepadqq-bin \
$appsDir/Notepadqq/Notepadqq
mv $appsDir/Notepadqq/share/notepadqq/* \
$appsDir/Notepadqq/Resources
# Cleanup
rm -rf $appsDir/Notepadqq/{bin,share,lib}
# Icon
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3`"
sed \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
$portDir/additional-files/notepadqq.rdef.in > notepadqq.rdef
addResourcesToBinaries notepadqq.rdef \
$appsDir/Notepadqq/Notepadqq
addAppDeskbarSymlink $appsDir/Notepadqq/Notepadqq
}
-
4). パッチファイルの確認:
> cat ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-1.4.8.patchset
↓
From ad36c58d4ded001703a53e5cb32b1ffda333d9a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
Date: Fri, 23 Aug 2019 13:46:42 +0200
Subject: Disable root check for haiku
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
index da417af..9a358e6 100644
--- a/src/ui/main.cpp
+++ b/src/ui/main.cpp
@@ -87,6 +87,7 @@ int main(int argc, char *argv[])
// Check for "run-and-exit" options like -h or -v
const auto parser = Notepadqq::getCommandLineArgumentsParser(QApplication::arguments());
+#ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -95,6 +96,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+#endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.23.0
From ea2dd9ad34997684e5a76abd4aacfce014762ba7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 24 Aug 2019 11:18:35 +1000
Subject: Fix resources path
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
index ae84c27..c017024 100644
--- a/src/ui/notepadqq.cpp
+++ b/src/ui/notepadqq.cpp
@@ -22,6 +22,9 @@ QString Notepadqq::appDataPath(QString fileName)
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
arg(qApp->applicationDirPath());
--
2.23.0
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
-
B.「Notepadqq-2.0.0~beta」の場合:
「Qt5WebEngine」エンジン
-

→メニューも日本語化されて、日本語入力もできます。ヘルプ表示でのボタンの表示も正常です。
画面下のステータスバーのレイアウトが変更されています。
-
「Notepadqq-2.0.0-beta」のビルドは依存パッケージの「Qt5WebEngine」の移植待ちで中断していました。 移植されたら、事前に「qtwebengine_bin」を 項番6. の手順でビルドしてインストールしておく必要がありましたが、
すでにバイナリが準備され、自動でインストールされるので、それらの事前作業は要りません。
気になるのは、起動が遅いこと、まだ安定しないこと、最近のこれ以降の更新がないこと
-
-
1). 「Notepadqq」公式サイト:
「Notepadqq」の最新版です。「1.4.8-3」以降の途中のバージョンはありません。
- エンジンはChromium の技術である「Qt5WebEngine」に変更されました。
→今のところ Haiku では重たくて不安定です。それは「Qt5WebEngine」の改善しだいと思います。
-
2). ビルドに必要な依存 (Build dependencies:)
Qt 5.6 or higher qtwebengine5-dev ←(注目: 変更されました) libqt5websockets5-dev libqt5svg5-dev qttools5-dev-tools libuchardet-dev pkg-config
-
3). 実行に必要な依存 (Dependencies:)
Qt 5.6 or higher qtwebengine5 ←(注目: 変更されました) libqt5websockets5 libqt5svg5 coreutils libuchardet
-
4). レシピファイル名とパッチファイル名:
notepadqq-2.0.0~beta.recipe ←(「~beta」です) patches/notepadqq-2.0.0-beta.patchset ←(「-beta」です。「~beta」ではありません)
-
5). レシピファイルの置換:
- ファイル名が変更されていることに注意
-
> lpe ~/Git/haikuports/app-editors/notepadqq/notepadqq-2.0.0~beta.recipe
↓ すべて置換:
SUMMARY="Multiplatform Notepad++-like editor"
DESCRIPTION="Notepadqq is designed from developers, for developers. With its \
more than 100 supported languages, it is the ideal text editor for your daily \
tasks."
HOMEPAGE="http://notepadqq.altervista.org/"
COPYRIGHT="2012-2019 Notepadqq Project"
LICENSE="GNU LGPL v3"
REVISION="1"
SOURCE_URI="https://github.com/notepadqq/notepadqq/archive/refs/tags/v${portVersion/\~beta/-beta}.tar.gz"
CHECKSUM_SHA256="7dba81115438f3f44dc29ef0a81d880f6ca98b888b057247308731a39dce234a"
SOURCE_FILENAME="notepadqq-${portVersion/\~beta/-beta}.tar.gz"
SOURCE_DIR="notepadqq-${portVersion/\~beta/-beta}"
PATCHES="notepadqq-${portVersion/\~beta/-beta}.patchset"
ADDITIONAL_FILES="notepadqq.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
notepadqq$secondaryArchSuffix = $portVersion
app:Notepadqq$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libQt5Core$secondaryArchSuffix
lib:libQt5Gui$secondaryArchSuffix
lib:libQt5Network$secondaryArchSuffix
lib:libQt5PrintSupport$secondaryArchSuffix
lib:libQt5Svg$secondaryArchSuffix
lib:libqt5webengine$secondaryArchSuffix
lib:libqt5webenginewidgets$secondaryArchSuffix
lib:libQt5Widgets$secondaryArchSuffix
lib:libuchardet$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libGL$secondaryArchSuffix
devel:libQt5Core$secondaryArchSuffix
devel:libQt5Gui$secondaryArchSuffix
devel:libQt5Network$secondaryArchSuffix
devel:libQt5PrintSupport$secondaryArchSuffix
devel:libQt5Svg$secondaryArchSuffix
devel:libqt5webengine$secondaryArchSuffix
devel:libqt5webenginewidgets$secondaryArchSuffix
devel:libQt5Widgets$secondaryArchSuffix
devel:libuchardet$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:g++$secondaryArchSuffix
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:lrelease$secondaryArchSuffix >= 5
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:qmake$secondaryArchSuffix >= 5
cmd:which
"
BUILD()
{
./configure --prefix "$appsDir/Notepadqq"
make $jobArgs
}
INSTALL()
{
mkdir -p $appsDir/Notepadqq/Resources
make install
mv $appsDir/Notepadqq/lib/notepadqq/notepadqq-bin \
$appsDir/Notepadqq/Notepadqq
mv $appsDir/Notepadqq/share/notepadqq/* \
$appsDir/Notepadqq/Resources
# Cleanup
rm -rf $appsDir/Notepadqq/{bin,share,lib}
# Icon
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`"
sed \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
$portDir/additional-files/notepadqq.rdef.in > notepadqq.rdef
addResourcesToBinaries notepadqq.rdef $appsDir/Notepadqq/Notepadqq
addAppDeskbarSymlink $appsDir/Notepadqq/Notepadqq
}
-
6). パッチファイルの置換:
- ファイル名が変更されていることに注意
→「~beta」でなく「-beta」です。(加工前でなく加工後の名前が使われるからです)
-
> lpe ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-2.0.0-beta.patchset
↓ すべて置換:
From f4234e9ab4d6728817a092edbde8f4b8984e902a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
Date: Fri, 23 Aug 2019 13:46:42 +0200
Subject: [PATCH 1/2] Disable root check for haiku
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
index be427b2..a05fe74 100644
--- a/src/ui/main.cpp
+++ b/src/ui/main.cpp
@@ -92,6 +92,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+#ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -100,6 +101,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+#endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.30.2
From 0aabf29d20ce274506ffaed3f6039fc46b8a61f1 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 24 Aug 2019 11:18:35 +1000
Subject: [PATCH 2/2] Fix resources path
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
index b93c0e4..9fd994c 100644
--- a/src/ui/notepadqq.cpp
+++ b/src/ui/notepadqq.cpp
@@ -23,6 +23,9 @@ QString Notepadqq::appDataPath(QString fileName)
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
arg(qApp->applicationDirPath());
--
2.30.2
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
-
C.「Notepadqq-1.4.8.OTE」の場合:
「Qt5WebKit」や「Qt5WebEngine」を使っていません。エンジンは独自のOTE コンポーネントです。
-
Haiku で起動:

-
Ubuntu で起動:

→ほとんど見た目は同じ。編集アイコンとダブのアイコンが違うくらい。
→メニューも日本語化されて、日本語入力もできます。ヘルプ表示の「閉じる」ボタンの表示も正常です。
OTE 版かを見分けるには、「software libraries:」の表示を確認します。
-
1). 「Notepadqq-OTE」公式サイト:
- 独自の「OTE」エンジンを試すためのフォークのようです。
-
2). レシピファイル名とパッチファイル名:
notepadqq-1.4.8.ote.recipe ←(「.ote」であることに注目) patches/notepadqq-1.4.8.ote.patchset ←(「.ote」であることに注目)
-
3). レシピファイルの置換:
- ファイル名が変更されていることに注意
-
> lpe ~/Git/haikuports/app-editors/notepadqq/notepadqq-1.4.8.ote.recipe
↓ すべて置換:
SUMMARY="Multiplatform Notepad++-like editor"
DESCRIPTION="Notepadqq is designed from developers, for developers. With its \
more than 100 supported languages, it is the ideal text editor for your daily \
tasks."
HOMEPAGE="http://notepadqq.altervista.org/"
COPYRIGHT="2012-2019 Notepadqq Project"
LICENSE="GNU LGPL v3"
REVISION="1"
SOURCE_URI="https://github.com/JuBan1/notepadqq/archive/ote.tar.gz"
CHECKSUM_SHA256="4528c5be728396007630ee91723a2107894611b9f7149713ad276529b7297bd6"
SOURCE_FILENAME="notepadqq-ote.tar.gz"
SOURCE_DIR="notepadqq-ote"
PATCHES="notepadqq-$portVersion.patchset"
ADDITIONAL_FILES="notepadqq.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
notepadqq$secondaryArchSuffix = $portVersion
app:Notepadqq$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libQt5Core$secondaryArchSuffix
lib:libQt5Gui$secondaryArchSuffix
lib:libQt5Network$secondaryArchSuffix
lib:libQt5PrintSupport$secondaryArchSuffix
lib:libQt5Svg$secondaryArchSuffix
lib:libQt5Widgets$secondaryArchSuffix
lib:libuchardet$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libGL$secondaryArchSuffix
devel:libQt5Core$secondaryArchSuffix
devel:libQt5Gui$secondaryArchSuffix
devel:libQt5Network$secondaryArchSuffix
devel:libQt5PrintSupport$secondaryArchSuffix
devel:libQt5Svg$secondaryArchSuffix
devel:libQt5Widgets$secondaryArchSuffix
devel:libuchardet$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:g++$secondaryArchSuffix
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:lrelease$secondaryArchSuffix >= 5
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:qmake$secondaryArchSuffix >= 5
cmd:which
"
BUILD()
{
./configure --prefix "$appsDir/Notepadqq"
make $jobArgs
}
INSTALL()
{
mkdir -p $appsDir/Notepadqq/Resources
make install
mv $appsDir/Notepadqq/lib/notepadqq/notepadqq-bin \
$appsDir/Notepadqq/Notepadqq
mv $appsDir/Notepadqq/share/notepadqq/* \
$appsDir/Notepadqq/Resources
# Cleanup
rm -rf $appsDir/Notepadqq/{bin,share,lib}
# Icon
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`"
sed \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
$portDir/additional-files/notepadqq.rdef.in > notepadqq.rdef
addResourcesToBinaries notepadqq.rdef $appsDir/Notepadqq/Notepadqq
addAppDeskbarSymlink $appsDir/Notepadqq/Notepadqq
}
-
4). パッチファイルの置換:
- ファイル名が変更されていることに注意
-
> lpe ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-1.4.8.ote.patchset
↓ すべて置換:
From 183f0aeec7e7b6ddc315c4da1039fb3866129d09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
Date: Fri, 23 Aug 2019 13:46:42 +0200
Subject: [PATCH 1/2] Disable root check for haiku
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
index a1be0b7..d047a04 100644
--- a/src/ui/main.cpp
+++ b/src/ui/main.cpp
@@ -92,6 +92,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+ #ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -100,6 +101,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+ #endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.30.2
From d6df9d46cab0be8f8ed4b590b7bc268acbe03896 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 24 Aug 2019 11:18:35 +1000
Subject: [PATCH 2/2] Fix resources path
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
index b93c0e4..fedee8f 100644
--- a/src/ui/notepadqq.cpp
+++ b/src/ui/notepadqq.cpp
@@ -23,9 +23,12 @@ QString Notepadqq::appDataPath(QString fileName)
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
- arg(qApp->applicationDirPath());
+ arg(qApp->applicationDirPath());
#endif
if(!QDir(def).exists())
--
2.30.2
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
-
3. 参考: レシピファイルの修正について
-
レシピファイル名の変更をしたら、それに伴う、文字列操作が必要です
-
レシピファイル名を「notepadqq-2.0.0-beta.recipe」のように「-beta」を付けると、うまく認識できません。「-」が使えないみたい。「.tar.gz」の名前は変えられないので工夫が必要でした。
レシピファイル名を「notepadqq-2.0.0.recipe」とすることでビルドできたので、プルリクエストを送信しました。
→notepadqq: bump version #6535
-
- ベータ版の場合は、レシピファイル名を「notepadqq-2.0.0~beta.recipe」のように「~beta」を付けた方が良いという、アドバイスがありました。Haiku でのレシピファイル名の付け方にはルールがあるようです。
I think the recipe should be renamed to notepadqq-2.0.0~beta.recipe
和訳: レシピの名前を「notepadqq-2.0.0~beta.recipe」に変更する必要があると思います
-
ちなみに、「~」が使えるのはプレリリース版のときだけで、他の場合は「.」を使うようです。
the "~" suffix is only for pre-release versions. Just use one dot instead.
和訳: 「~」サフィックスは、プレリリースバージョン専用です。代わりに1つのドットを使用してください。
→プレスリリースとは、新規開始のこと。それではないので、ファイル名の「~」を「.」に変えました。
例: 今回の「notepadqq-1.4.8.ote.recipe」
-
- 「~beta」を含む名前にして正常にビルドできるようにするには、工夫が必要です。
→重要: ダウンロードされたソースは、Haikuporter のデフォルト設定では、
<Port Name>-<Port Version> という名前のディレクトリに解凍されます。
それ以外のディレクトリにする場合は、「SOURCE_DIR=」行にてそのディレクトリ名を指定します。
-
レシピファイル名を変更:
> lpe ~/Git/haikuports/app-editors/notepadqq/notepadqq-2.0.0~beta.recipe
:
REVISION="1"
SOURCE_URI="https://github.com/notepadqq/notepadqq/archive/refs/tags/v${portVersion/\~beta/-beta}.tar.gz"
CHECKSUM_SHA256="7dba81115438f3f44dc29ef0a81d880f6ca98b888b057247308731a39dce234a"
SOURCE_FILENAME="notepadqq-${portVersion/\~beta/-beta}"
SOURCE_DIR="notepadqq-${portVersion/\~beta/-beta}"
PATCHES="notepadqq-${portVersion/\~beta/-beta}.patchset" ←(パッチファイル名: notepadqq-2.0.0-beta.patchset)
ADDITIONAL_FILES="notepadqq.rdef.in"
→「$portVersion」の変数には、レシピファイル名の「2.0.0~beta」の部分がセットされます。 できるだけこの変数を使うのは、次のバージョンアップがあったときに変更が少くて済むようにです。
-
ダウンロードするファイル名は固定なので、文字列操作で、ファイル名の「2.0.0~beta」の「~beta」を削除、「-beta」を追加、して「2.0.0-beta」に変更しました。
→それに伴い他の行も修正。これらの修正をしましたが、パッケージ化の実行でエラーで停止しました:
rc: Error! notepadqq.rdef:7 syntax error
-
レシピの最後の2行のコマンドの最初の行にて、エラーを検出しています:
→「addResourcesToBinaries notepadqq.rdef $appsDir/Notepadqq/Notepadqq」の行でエラー:
-
この行は、「.rdef」の定義(アイコンイメージの定義等)を実行ファイルに「ファイル属性」として取り込む操作です。
-
下記のファイルを確認:
エラーする 7行目は、「minor」の行(バージョン番号の3つ目の文字列)でした。数字でない文字が含まれているとシンタックスエラーとなるようです。
> cat ~/Git/haikuports/app-editors/notepadqq/work-2.0.0~beta/sources/notepadqq-2.0.0-beta/notepadqq.rdef
抜粋:
resource app_version {
major = 2,
middle = 0,
minor = 0~beta,
↓
resource app_version {
major = 2,
middle = 0,
minor = 0,
と変更する必要があります。
-
回避策: レシピファイルの後半にある定義部分にて、
# Icon
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3`"
↓ 以下のように修正して、文字列操作を追加します:
# Icon
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`"
notepadqq.rdef に設定された
「2.0.0~beta」にある「0~beta」の部分(7行目)は数字ではないので「シンタックスエラー」となります。
「0」に加工するため、上記の4行目の行末にパイプで( cut -d~ -f1 )の文字列操作の処理を追加しました。
cut -d. -f1 →バージョン番号を「.」で区切り、その 1つ目を抜き出し →「2」 cut -d. -f2 →バージョン番号を「.」で区切り、その 2つ目を抜き出し →「0」 cut -d. -f3 →バージョン番号を「.」で区切り、その 3つ目を抜き出し →「0~beta」 cut -d~ -f1 →その文字列を「~」で区切り、その 1つ目を抜き出し →「0」
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---
-
4. 参考: パッチファイルの修正について
-
- 改善のため、ソースが修正されることはよくあることです。パッチファイルは行番号指定なので、そのままでは使えません。ソースが修正されて行番号がズレると、パッチファイルのエラーが表示されます。また、どのバージョンからの差分かも重要です。バージョンにより、ソースの修正内容が変わり、パッチファイルも変わります。
→手動の差分と以前のパッチファイルのヘッダー部を組み合わせて、手動でパッチファイルを作成しました。(手動で作成したファイルだと、形式を統一するため、プルリクエストで受け付けてもらえません。)
→パッチファイルを作るときは、以前のヘッダー部(コミットを登録した人などの情報)を残しておくのがミソです。コミット番号とgit バージョン以外の情報(つまり、開発者名)を引き継げます。
-
- フッター(お尻)にある番号は、使っているPC のgit のバージョン番号で、自動で付けられます:
git のバージョン:
> git --version git version 2.30.2
-
1). 以前のバージョンで最新のパッチファイル(原本)を表示:
> cat ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-1.4.8.patchset
↓
From ad36c58d4ded001703a53e5cb32b1ffda333d9a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com> ←(残します)
Date: Fri, 23 Aug 2019 13:46:42 +0200 ←(残します)
Subject: Disable root check for haiku ←(パッケージ化で、パッチが当たる時に表示)
←(2行の空行で区切り)
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
index da417af..9a358e6 100644
--- a/src/ui/main.cpp
+++ b/src/ui/main.cpp
@@ -87,6 +87,7 @@ int main(int argc, char *argv[])
// Check for "run-and-exit" options like -h or -v
const auto parser = Notepadqq::getCommandLineArgumentsParser(QApplication::arguments());
+#ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -95,6 +96,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+#endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.23.0
←(2行の空行で区切り)
From ea2dd9ad34997684e5a76abd4aacfce014762ba7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com> ←(残します)
Date: Sat, 24 Aug 2019 11:18:35 +1000 ←(残します)
Subject: Fix resources path ←(パッケージ化で、パッチが当たる時に表示)
←(2行の空行で区切り)
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
index ae84c27..c017024 100644
--- a/src/ui/notepadqq.cpp
+++ b/src/ui/notepadqq.cpp
@@ -22,6 +22,9 @@ QString Notepadqq::appDataPath(QString fileName)
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
arg(qApp->applicationDirPath());
--
2.23.0 ←(git のバージョン番号)
←(2行の空行で区切り)
→今回は2つのコミットから出来ています。パッケージ化でソースにパッチを当てるときに、「Subject: 」の表題が表示されるので、パッケージ化のときに、ちゃんと当たったかがメッセージで確認できます。
-
- ソースの改版がわからないので、その違いを、パッチファイルの差分とGitHub 上の最新の現在の状態のオリジナルの1.4.8 を見比べながら、修正していき、その差分ファイルを作成します。手順は以下を参照。
-
2). 差分ファイルをローカルで手動で作成して、パッケージ化するときに使える仮のパッチファイルを作成:
- 手動で作成したパッチファイルは受け付けてもらえません
→プルリクエストのときに一緒に送れるパッチファイルを作成しました:
-
個人的な作成手順:
-
(1). ローカルでファイルを「a」と「b」のフォルダにコピー
できたらフォルダ構造は、ソースの階層構造にしておくと手直しが楽です。
新しいフォルダ
a/src/ui/main.cpp
a/src/ui/notepadqq.cpp
b/src/ui/main.cpp ←(こちらをパッチを見ながら修正)
b/src/ui/notepadqq.cpp ←(こちらをパッチを見ながら修正)
-
(2). 「b」の方を手動で既存のパッチファイルを見ながら修正
-
(3). ローカルで差分ファイルを作成
$ cd 新しいフォルダ $ diff -Naur a b > test.diff
-
(4). その差分ファイルの内容を使って、Haiku の仮のパッチファイルを手動で作成:
ヘッダー部とフッター部、は以前のものを残します。区切りは2行の空行を使います。
-
仮のパッチファイル
> lpe ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-1.4.8-ote.patchset
↓ すべて置換
From 000001 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
Date: Fri, 23 Aug 2019 13:46:42 +0200
Subject: Disable root check for haiku
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
--- a/src/ui/main.cpp 2022-01-15 22:15:23.000000000 +0900
+++ b/src/ui/main.cpp 2022-01-17 14:52:12.364286731 +0900
@@ -92,6 +92,7 @@
return EXIT_SUCCESS;
}
+ #ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -100,6 +101,7 @@
return EXIT_SUCCESS;
}
+ #endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.30.2
From 000002 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 24 Aug 2019 11:18:35 +1000
Subject: Fix resources path
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
--- a/src/ui/notepadqq.cpp 2022-01-15 22:15:23.000000000 +0900
+++ b/src/ui/notepadqq.cpp 2022-01-17 14:57:34.173692332 +0900
@@ -23,9 +23,12 @@
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
- arg(qApp->applicationDirPath());
+ arg(qApp->applicationDirPath());
#endif
if(!QDir(def).exists())
--
2.30.2
→ヘッダー部のコミット番号は省略しています。
-
(5). レシピファイルを別に退避しておき、レシピファイルの後半にある「BUILD()」以降の行をすべて削除
レシピファイル:
BUILD()
{
:
→この行を含めて、以降の行をすべて削除します。
-
(6). パッケージ化を実行。ビルドをスキップするのは、他の差分で埋もれないためです
メッセージを見るとパッケージ化は成功したように見えますが、ビルドはスキップされています。
→ソースに、手動で作成したパッチが当たっています。
-
(7). git でコミットの差分を表示(コミットしないとパッチファイルを生成できません)
> git show
-
(8). パッチファイルを作成し直し
> git format-patch -2 0001-Disable-root-check-for-haiku.patch 0002-Fix-resources-path.patch
→コミットごとに、ファイルとして出力されます。
> ls 0001-Disable-root-check-for-haiku.patch configure doc notepadqq.pro src 0002-Fix-resources-path.patch CONTRIBUTING.md Dockerfile README.md support_files build-tools COPYING images snap TODO.txt
-
> cat 0001-Disable-root-check-for-haiku.patch > cat 0002-Fix-resources-path.patch
→コミット番号が正規な値に変更されます。これらのファイルの内容をつなげることでパッチファイルとして使えます。
-
-
3). 実際に作成したパッチファイル:
-
- レシピファイルの変更があり、パッチファイル名も変更されていることに注意
-
> lpe ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-1.4.8-ote.patchset
↓ すべて置換:
From ad36c58d4ded001703a53e5cb32b1ffda333d9a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
Date: Fri, 23 Aug 2019 13:46:42 +0200
Subject: Disable root check for haiku
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
--- a/src/ui/main.cpp 2022-01-15 22:15:23.000000000 +0900
+++ b/src/ui/main.cpp 2022-01-17 14:52:12.364286731 +0900
@@ -92,6 +92,7 @@
return EXIT_SUCCESS;
}
+ #ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -100,6 +101,7 @@
return EXIT_SUCCESS;
}
+ #endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.25.1
From ea2dd9ad34997684e5a76abd4aacfce014762ba7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 24 Aug 2019 11:18:35 +1000
Subject: Fix resources path
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
--- a/src/ui/notepadqq.cpp 2022-01-15 22:15:23.000000000 +0900
+++ b/src/ui/notepadqq.cpp 2022-01-17 14:57:34.173692332 +0900
@@ -23,9 +23,12 @@
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
- arg(qApp->applicationDirPath());
+ arg(qApp->applicationDirPath());
#endif
if(!QDir(def).exists())
--
2.25.1
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----
-
5. 問題の少ない「Notepadqq-1.4.8.OTE」 をビルド:
-
最近、「Notepadqq」の最新バージョンとして「notepadqq-1.4.8.ote」が Haiku に採用されました
2022-01-18 以降に「移植の環境を構築」したのであれば、たぶん、レシピファイルとパッチファイルに反映されています。ports ツリーだけでなく、リポジトリにバイナリとしても置かれているので、ビルドしなくても「Haikudepot」で「notepadqq」としてインストールできます。
-
こちらで実行しているのは、Haiku でのビルドについて勉強するためです。
-
ports ツリーに反映されているかは、ファイル名で判断:
notepadqq-1.4.8.ote.recipe ←(「.ote」であることに注目) patches/notepadqq-1.4.8.ote.patchset ←(「.ote」であることに注目)
参考:
-
1). レシピファイルが修正されているかの確認:
とりあえずは、下記が表示されればファイル名は合っています。
> cat ~/Git/haikuports/app-editors/notepadqq/notepadqq-1.4.8.ote.recipe
内容:
SUMMARY="Multiplatform Notepad++-like editor"
DESCRIPTION="Notepadqq is designed from developers, for developers. With its \
more than 100 supported languages, it is the ideal text editor for your daily \
tasks."
HOMEPAGE="http://notepadqq.altervista.org/"
COPYRIGHT="2012-2019 Notepadqq Project"
LICENSE="GNU LGPL v3"
REVISION="1"
SOURCE_URI="https://github.com/JuBan1/notepadqq/archive/ote.tar.gz"
CHECKSUM_SHA256="4528c5be728396007630ee91723a2107894611b9f7149713ad276529b7297bd6"
SOURCE_FILENAME="notepadqq-ote.tar.gz"
SOURCE_DIR="notepadqq-ote"
PATCHES="notepadqq-$portVersion.patchset"
ADDITIONAL_FILES="notepadqq.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
notepadqq$secondaryArchSuffix = $portVersion
app:Notepadqq$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libQt5Core$secondaryArchSuffix
lib:libQt5Gui$secondaryArchSuffix
lib:libQt5Network$secondaryArchSuffix
lib:libQt5PrintSupport$secondaryArchSuffix
lib:libQt5Svg$secondaryArchSuffix
lib:libQt5Widgets$secondaryArchSuffix
lib:libuchardet$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libGL$secondaryArchSuffix
devel:libQt5Core$secondaryArchSuffix
devel:libQt5Gui$secondaryArchSuffix
devel:libQt5Network$secondaryArchSuffix
devel:libQt5PrintSupport$secondaryArchSuffix
devel:libQt5Svg$secondaryArchSuffix
devel:libQt5Widgets$secondaryArchSuffix
devel:libuchardet$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:g++$secondaryArchSuffix
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:lrelease$secondaryArchSuffix >= 5
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:qmake$secondaryArchSuffix >= 5
cmd:which
"
BUILD()
{
./configure --prefix "$appsDir/Notepadqq"
make $jobArgs
}
INSTALL()
{
mkdir -p $appsDir/Notepadqq/Resources
make install
mv $appsDir/Notepadqq/lib/notepadqq/notepadqq-bin \
$appsDir/Notepadqq/Notepadqq
mv $appsDir/Notepadqq/share/notepadqq/* \
$appsDir/Notepadqq/Resources
# Cleanup
rm -rf $appsDir/Notepadqq/{bin,share,lib}
# Icon
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`"
sed \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
$portDir/additional-files/notepadqq.rdef.in > notepadqq.rdef
addResourcesToBinaries notepadqq.rdef $appsDir/Notepadqq/Notepadqq
addAppDeskbarSymlink $appsDir/Notepadqq/Notepadqq
}
-
2). パッチファイルが修正されているかの確認:
とりあえずは、下記が表示されればファイル名は合っています。
> cat ~/Git/haikuports/app-editors/notepadqq/patches/notepadqq-1.4.8.ote.patchset
内容:
From 183f0aeec7e7b6ddc315c4da1039fb3866129d09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
Date: Fri, 23 Aug 2019 13:46:42 +0200
Subject: [PATCH 1/2] Disable root check for haiku
diff --git a/src/ui/main.cpp b/src/ui/main.cpp
index a1be0b7..d047a04 100644
--- a/src/ui/main.cpp
+++ b/src/ui/main.cpp
@@ -92,6 +92,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+ #ifndef Q_OS_HAIKU
// Check if we're running as root
if( getuid() == 0 && !parser->isSet("allow-root") ) {
qWarning() << QObject::tr(
@@ -100,6 +101,7 @@ int main(int argc, char *argv[])
return EXIT_SUCCESS;
}
+ #endif
if (a.attachToOtherInstance()) {
return EXIT_SUCCESS;
--
2.30.2
From d6df9d46cab0be8f8ed4b590b7bc268acbe03896 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sat, 24 Aug 2019 11:18:35 +1000
Subject: [PATCH 2/2] Fix resources path
diff --git a/src/ui/notepadqq.cpp b/src/ui/notepadqq.cpp
index b93c0e4..fedee8f 100644
--- a/src/ui/notepadqq.cpp
+++ b/src/ui/notepadqq.cpp
@@ -23,9 +23,12 @@ QString Notepadqq::appDataPath(QString fileName)
#ifdef Q_OS_MACX
QString def = QString("%1/../Resources/").
arg(qApp->applicationDirPath());
+#elif defined(Q_OS_HAIKU)
+ QString def = QString("%1/Resources/").
+ arg(qApp->applicationDirPath());
#else
QString def = QString("%1/../appdata/").
- arg(qApp->applicationDirPath());
+ arg(qApp->applicationDirPath());
#endif
if(!QDir(def).exists())
--
2.30.2
-
3). 「download」フォルダと「work-x.x.x」フォルダを削除
-
4). パッケージ化を実行
> cd ~/Git/haikuporter/
> hp notepadqq
:
Applying: Disable root check for haiku ←(ソースにパッチが当たりました)
Applying: Fix resources path ←(ソースにパッチが当たりました)
:
name notepadqq
version 1.4.8.ote-1
architecture x86_64
summary "Multiplatform Notepad++-like editor"
description "Notepadqq is designed from developers, for developers. With its more than 100 supported languages, it is the ideal text editor for your daily tasks."
packager "FuRuYa7 <mymail@mydomain.org>" ←(パッケージ化した人)
vendor "Haiku Project"
licenses {
"GNU LGPL v3"
}
copyrights {
"2012-2019 Notepadqq Project"
}
provides {
notepadqq = 1.4.8.ote
app:notepadqq = 1.4.8.ote
}
requires {
haiku >= r1~beta3_hrev55792-1
lib:libgl >= 1.0.0
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:libuchardet >= 0.0.7
}
urls {
"http://notepadqq.altervista.org/"
}
source-urls {
# Download
"https://github.com/JuBan1/notepadqq/archive/ote.tar.gz"
# Location 2
"https://ports-mirror.haiku-os.org/notepadqq/ote.tar.gz" ←(そのバージョンが採用されたときに退避?)
}
mimesetting files for package notepadqq-1.4.8.ote-1-x86_64.hpkg ...
creating package notepadqq-1.4.8.ote-1-x86_64.hpkg ...
----- Package Info ----------------
header size: 80
heap size: 2833441
TOC size: 58462
package attributes size: 820
total size: 2833521
-----------------------------------
waiting for build package notepadqq-1.4.8.ote-1 to be deactivated
grabbing notepadqq-1.4.8.ote-1-x86_64.hpkg and moving it to /boot/home/Git/haikuports/packages/notepadqq-1.4.8.ote-1-x86_64.hpkg
→パッケージ化が成功しました。
パッケージ化に成功すると、最後尾にパッケージ名が表示されます。
-
ちなみに、「# Location 2」の行について:
[Index of /notepadqq/] (https://ports-mirror.haiku-os.org/notepadqq/) を確認すると:
Name↓ Last Modified: Size: notepadqq-ote.tar.gz 2022-Jan-18 17:12:12 2.8M v1.4.0.tar.gz 2018-Nov-13 15:53:20 4.1M v1.4.8.tar.gz 2019-Aug-23 12:21:18 4.2M
→「v2.0.0-beta.tar.gz」がないところを見ると、 パッケージ化が成功した時にダウンロードファイルが退避されるのではなく、Haiku でそのバージョンが採用されたときに退避されるみたい。
-
5). 作成されたパッケージを確認:
> ls -1 /boot/home/Git/haikuports/packages/ featherpad-1.1.0-1-x86_64.hpkg notepadqq-1.4.8.ote-1-x86_64.hpkg ←(今回作成されたパッケージ) qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg qtwebengine_bin-5.15.2-4-x86_64.hpkg
→今までパッケージ化を実行して、成功したパッケージです。インストール元になるだけで、インストールされているとは限りません。
-
6). インストール:
> pkgman install ~/Git/haikuports/packages/notepadqq-1.4.8.ote-1-x86_64.hpkg
:
The following changes will be made:
in system:
upgrade package notepadqq-1.4.8.ote-1 to 1.4.8.ote-1 from local file
Continue? [yes/no] (yes) :
[system] Applying changes ...
*** failed to commit transaction: Failed to change the package activation in packagefs: Name in use
→以前インストールしたときのゴミ(使用中の名前があるみたい)が影響しています。
-
HaikuDepot にて、「notepadqq」をアンインストール
システムにて、下記に似た名前のファイルを削除:
/boot/system/packages/administrative/state_2022-01-22_20:20:07 /boot/system/packages/administrative/transaction-1
上記を選択して「Delete」→Shift 押しながら「move」をクリック
-
パッケージを再インストール:
> pkgman install ~/Git/haikuports/packages/notepadqq-1.4.8.ote-1-x86_64.hpkg
:
The following changes will be made:
in system:
install package notepadqq-1.4.8.ote-1 from local file
Continue? [yes/no] (yes) :
[system] Applying changes ...
[system] Changes applied. Old activation state backed up in "state_2022-01-22_20:20:07"
[system] Cleaning up ...
[system] Done.
-
7). 動作の確認:
-
起動しました
ヘルプの誤表示が修正されています。
テキストファイルを右クリックしての、ファイルを開いての起動もできました。
日本語入力できます。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----
-
6. 参考: 「移植待ち」だった依存パッケージの「qtwebengine_bin」をビルドする場合:
-
追記: こちらの作業は不要です。移植されており、バイナリが準備されました。 参考として、ご覧ください。
-
「Notepadqq-2.0.0-beta」のビルドは依存パッケージの「移植待ち」で中断していました。
「Notepadqq-2.0.0-beta」のビルドの前に、「qtwebengine_bin」をビルドしてインストールしておく必要がありました。
ただし、こちらの作業は不要になりました。すでにバイナリが準備されました。
-
1). 「qtwebengine」パッケージのport の場所を検索
> cd ~/Git/haikuporter/ ~/Git/haikuporter> haikuporter -o qtwebengine /boot/home/Git/haikuports/dev-python/pyqtwebengine5 /boot/home/Git/haikuports/dev-qt/qtwebengine /boot/home/Git/haikuports/dev-qt/qtwebengine_bin
→複数の移植されたパッケージの登録があります。
-
2). 試しにひとつ、パッケージ化を実行
> cd ~/Git/haikuporter/ ~/Git/haikuporter> hp qtwebengine : Checking if any dependency-infos need to be updated ... Looking for stale dependency-infos ... Warning: skipping qtwebengine-5.15.7, as it is untested on the target architecture. Warning: skipping qtwebengine-5.15.2, as it is untested on the target architecture. Error: No version of qtwebengine can be built
→2つあるレシピファイルともに、アーキテクチャでのテストが出来ていないというエラーが出ています。
-
haikuports のファイル構成を確認:
> cd ~/Git/haikuports/dev-qt/qtwebengine/ > ls -1 download patches qtwebengine_bin-5.15.2.recipe qtwebengine-5.15.2.recipe qtwebengine-5.15.7.recipe work-5.15.2 work-5.15.7
→違うバージョンのレシピファイルが2つあります。
-
パッチを見ると:
> ls -1 patches/ qtwebengine-5.15.2.patchset qtwebengine-5.15.7.patchset
ダウンロードを見ると:
> ls -1 download/ qtwebengine_devel-5.15.2-3-x86_64.hpkg qtwebengine_devel-5.15.2-3-x86_64.hpkg.uri qtwebengine-5.15.2-3-x86_64.hpkg qtwebengine-5.15.2-3-x86_64.hpkg.uri
→パッケージ化の実行にて、2つのファイルがダウンロードされました。
-
3). 別の「qtwebengine_bin」のパッケージで、パッケージ化を実行:
> cd ~/Git/haikuporter/
~/Git/haikuporter> hp qtwebengine_bin
:
Checking if any dependency-infos need to be updated ...
Looking for stale dependency-infos ...
----------------------------------------------------------------------
dev-qt::qtwebengine_bin-5.15.2
/boot/home/Git/haikuports/dev-qt/qtwebengine/qtwebengine_bin-5.15.2.recipe
----------------------------------------------------------------------
:
waiting for build package qtwebengine_bin-5.15.2-4 to be activated
waiting for build package qtwebengine_bin_devel-5.15.2-4 to be activated
Building ...
Collecting files to be packaged ...
/packages/qtwebengine_bin_devel-5.15.2-4/.self
name qtwebengine_bin
version 5.15.2-4
architecture x86_64
summary "Chromium-based rendering library for the Qt5 framework"
description "QtWebEngine provides a Web browser engine that integrates Chromium's fast moving web capabilities into Qt."
packager "FuRuYa7 <mymail@mydomain.org>"
vendor "Haiku Project"
licenses {
"BSD (3-clause)"
"GNU LGPL v2.1"
}
copyrights {
"2015-2020 The Qt Company Ltd."
}
provides {
qtwebengine_bin = 5.15.2 compat >= 5
lib:libqt5pdf = 5.15.2 compat >= 5
lib:libqt5pdfwidgets = 5.15.2 compat >= 5
lib:libqt5webengine = 5.15.2 compat >= 5
lib:libqt5webenginecore = 5.15.2 compat >= 5
lib:libqt5webenginewidgets = 5.15.2 compat >= 5
cmd:qwebengine_convert_dict
}
requires {
haiku >= r1~beta3_hrev55774-1
lib:libavcodec >= 58.54.100
lib:libavformat >= 58.29.100
lib:libavutil >= 56.31.100
lib:libdbus_1
lib:libexecinfo >= 1.1
lib:libexpat >= 1.8.1
lib:libfontconfig >= 1.12.0
lib:libfreetype >= 6.18.0
lib:libgl >= 1.0.0
lib:libjpeg >= 62.3.0
lib:liblcms2 >= 2.0.12
lib:libminizip >= 1.2.11
lib:libnspr4
lib:libnss3
lib:libnssutil3
lib:libopus >= 0.7.0
lib:libplc4
lib:libplds4
lib:libpng16 >= 16.37.0
lib:libqt5core >= 5.15.2
lib:libqt5gui >= 5.15.2
lib:libqt5network >= 5.15.2
lib:libqt5positioning >= 5.15.2
lib:libqt5printsupport >= 5.15.2
lib:libqt5qml >= 5.15.2
lib:libqt5qmlmodels >= 5.15.2
lib:libqt5quick >= 5.15.2
lib:libqt5quickwidgets >= 5.15.2
lib:libqt5webchannel >= 5.15.2
lib:libqt5widgets >= 5.15.2
lib:libsmime3
lib:libsnappy >= 1.1.8
lib:libvpx >= 6.4.0
lib:libwebp >= 7.1.2
lib:libwebpdemux >= 2.0.8
lib:libwebpmux >= 3.0.7
lib:libz >= 1.2.11
}
conflicts {
qtwebengine
}
urls {
"https://www.qt.io"
}
source-urls {
# Download
"https://github.com/threedeyes/qtwebengine-haiku/releases/download/5.15.2-3/qtwebengine-5.15.2-3-x86_64.hpkg#noarchive"
# Download
"https://github.com/threedeyes/qtwebengine-haiku/releases/download/5.15.2-3/qtwebengine_devel-5.15.2-3-x86_64.hpkg#noarchive"
}
mimesetting files for package qtwebengine_bin-5.15.2-4-x86_64.hpkg ...
creating package qtwebengine_bin-5.15.2-4-x86_64.hpkg ...
----- Package Info ----------------
header size: 80
heap size: 86210758
TOC size: 7360
package attributes size: 1970
total size: 86210838
-----------------------------------
name qtwebengine_bin_devel
version 5.15.2-4
architecture x86_64
summary "Chromium-based rendering library for the Qt5 framework (development files)"
description "QtWebEngine provides a Web browser engine that integrates Chromium's fast moving web capabilities into Qt."
packager "FuRuYa7 <mymail@mydomain.org>"
vendor "Haiku Project"
licenses {
"BSD (3-clause)"
"GNU LGPL v2.1"
}
copyrights {
"2015-2020 The Qt Company Ltd."
}
provides {
qtwebengine_bin_devel = 5.15.2 compat >= 5
devel:libqt5pdf = 5.15.2 compat >= 5
devel:libqt5pdfwidgets = 5.15.2 compat >= 5
devel:libqt5webengine = 5.15.2 compat >= 5
devel:libqt5webenginecore = 5.15.2 compat >= 5
devel:libqt5webenginewidgets = 5.15.2 compat >= 5
}
requires {
haiku >= r1~beta3_hrev55774-1
qtwebengine_bin == 5.15.2 base
}
conflicts {
qtwebengine_devel
}
urls {
"https://www.qt.io"
}
source-urls {
# Download
"https://github.com/threedeyes/qtwebengine-haiku/releases/download/5.15.2-3/qtwebengine-5.15.2-3-x86_64.hpkg#noarchive"
# Location 2
"https://ports-mirror.haiku-os.org/qtwebengine/qtwebengine-5.15.2-3-x86_64.hpkg#noarchive"
# Download
"https://github.com/threedeyes/qtwebengine-haiku/releases/download/5.15.2-3/qtwebengine_devel-5.15.2-3-x86_64.hpkg#noarchive"
# Location 2
"https://ports-mirror.haiku-os.org/qtwebengine/qtwebengine_devel-5.15.2-3-x86_64.hpkg#noarchive"
}
mimesetting files for package qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg ...
creating package qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg ...
----- Package Info ----------------
header size: 80
heap size: 64245
TOC size: 15875
package attributes size: 1114
total size: 64325
-----------------------------------
waiting for build package qtwebengine_bin-5.15.2-4 to be deactivated
waiting for build package qtwebengine_bin_devel-5.15.2-4 to be deactivated
grabbing qtwebengine_bin-5.15.2-4-x86_64.hpkg and moving it to /boot/home/Git/haikuports/packages/qtwebengine_bin-5.15.2-4-x86_64.hpkg
grabbing qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg and moving it to /boot/home/Git/haikuports/packages/qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg
→「qtwebengine_bin」でパッケージ化に成功しました。今回は2つのパッケージが作成されました。
-
4). 作成されたパッケージを確認:
> ls -1 ~/Git/haikuports/packages/ qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg qtwebengine_bin-5.15.2-4-x86_64.hpkg
→ノーマル版と開発版になるのかな。
-
5). 両方のパッケージをインストール:
> pkgman install ~/Git/haikuports/packages/qtwebengine_bin-5.15.2-4-x86_64.hpkg : [system] Done.
-
> pkgman install ~/Git/haikuports/packages/qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg : [system] Done.
-
6). インストールされたか確認:
> pkgman search qtwebengine
Status Name Description
--------------------------------------------------------------------------------
falkon A QtWebEngine browser
falkon_debuginfo A QtWebEngine browser (debug info)
falkon_source A QtWebEngine browser (source files)
pyqtwebengine5 Python bindings for the Qt WebEngine framework
pyqtwebengine5_python38 Python bindings for the Qt WebEngine framework
pyqtwebengine5_source Python bindings for the Qt WebEngine framework
S qtwebengine_bin Chromium-based rendering library for the Qt5 fr
S qtwebengine_bin_devel Chromium-based rendering library for the Qt5 fr
→ちなみに、「falkon」ブラウザをインストールすると「QtWebEngine」がインストールされます。 ただし、「falkon」はまだ安定していないので使える状態ではありません。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- -
-
7. 参考: インストールした「qtwebengine_bin」を削除:
-
追記: 上記の項番 6. を実施していなければ、こちらの作業は不要です。
-
1). 上記の項番 6. を実施後、システム更新すると、下記のパッケージの更新が来ました:
qtwebengine_bin 5.15.2-4 qtwebengine_bin_devel 5.15.2-4
→ということは、公式リポジトリにこれらのバイナリがあるということです。 なので、ビルドの必要はなかったということです。
> pkgman search qtwebengine_bin Status Name Description -------------------------------------------------------------------------------- S qtwebengine_bin Chromium-based rendering library for the Qt5 fram S qtwebengine_bin_devel Chromium-based rendering library for the Qt5 fram
→項番 6. を実施して、パッケージ名に「_bin」が付くということがわかったのが収穫でした。
-
2). HaikuDepot を起動して、「qtweb」で検索すると、
「qtwebengine_bin 5.15.2-4」だけのインストールが確認できました。(_devel も含んだ表示みたい)
-
3). レシピファイルがちゃんと動けば、自動的にインストールされるはずです
-
4). なので、HaikuDepot で「qtwebengine_bin」をアンインストールしました
-
5). まぎらわしいので、下記のファイルは削除しておきました:
> ls -1 /boot/home/Git/haikuports/packages/ qtwebengine_bin_devel-5.15.2-4-x86_64.hpkg qtwebengine_bin-5.15.2-4-x86_64.hpkg
→削除したのは項番 6. のビルドで作成されたパッケージです。
-
-
まとめ
前回の「Notepadqq-2.0.0-beta」のビルドは、 依存パッケージの「Qt5WebEngine 」が不足しており、Haiku への移植待ちで中断していました。
その後依存パッケージが移植され、すんなりとビルドできました。貢献された人たちに感謝です。
-
ただし、あまりに起動に時間がかかるので、もっとレスポンスの良い別フォークの「notepadqq-1.4.8-ote」の移植に切り替えました。日付の挿入ができないとか、置換に改行が含められない、など欲しい機能がありますが、普通に使うには支障ありません。
-
Haiku で使えるアプリやライブラリがさらに増えて行くと良いですね。
-
-
-
-
目次
-
-
- 目次
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -
- 「 Haiku R1/beta3」のデスクトップ
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --
- 現在のシステムのバージョン:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
- 1. 準備作業:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
- A.「Notepadqq-1.4.8」の場合:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
- B.「Notepadqq-2.0.0~beta」の場合:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
- C.「Notepadqq-1.4.8.OTE」の場合:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
- 3. 参考: レシピファイルの修正について
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---
- 4. 参考: パッチファイルの修正について
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----
- 5. 問題の少ない「Notepadqq-1.4.8.OTE」 をビルド:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----
- 6. 参考: 「移植待ち」だった依存パッケージの「qtwebengine_bin」をビルドする場合:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----- -
- 7. 参考: インストールした「qtwebengine_bin」を削除:
- まとめ
- -
-
-
-