昨日行なわれた第113回 関西Debian勉強会に出席してきました。 そしたら、先々月パッケージング道場に出席してたこともあり、再来月くらいにその後の報告をする……といった話になってしまいました。 発表のネタは随時募集中らしいです。 さてはて……。
ということで、しばらく日記を放置してしまっていたんですが、 まずこちらでdeb作成の記録をしながら進めていこうかと……。
で、まずなんのパッケージをつくろうか……、というところからなんですが、 実はパッケージング道場の時にはネタがなくて非常に困ったのですが、 最近ちょっと自分でもパッケージもにしたいかなーというツールができました。 それが、この日記のタイトルにもいれた、tomightyというツールなんす。
tomightyというツール、公式サイトは こちらです。 このツールは、ポモドーロ・テクニックと呼ばれる生産性向上のための手法に使われるタイマーアプリで、Qtで書かれてます。 余談ですけど、Qtを「キュート」って読む事を最近知りました。 ずっと「キューティー」って読んでた……。 閑話休題。 ポモドーロ・テクニックってのは、単純に言うと仕事を25分、その後休憩5分ってのを繰り返すような感じの手法で、 このツールはタスクバーに納まって、25分と5分(と長めの休憩の15分)を計測することができるツールってわけです。 まぁ、テクニックの詳細についてはググってください。
ということで、Qtのdebパッケージのお作法に則ってパッケージを作成していくことになるはずなんですが、 残念ながら、手元のsidで普通にビルドがコケます……。 いちおう、無理矢理通すことはできてるので、まずはこちらを全うな方法で修正するところからですね……。
ちゅーことで
すすめてみます。
まずは、普通にビルドを通す方法について。 ビルド方法は、README.mdに書いてあって、ディレクトリを作ってqmakeを実行……なんですが、 このツールはQt5を要求してるんですが、私の環境だと、
% qmake --version
QMake version 2.01a
Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu
となって、Qt4が使用されてしまうみたいです。
適当に調べてみると、 -qt
オプションを使うのが正解のようで、
% qmake -qt=qt5 --version
QMake version 3.0
Using Qt version 5.6.1 in /usr/lib/x86_64-linux-gnu
とすると、無事Qt5が使われるようになりました。 これで、README.mdに書いてある手順で以下のコマンドを打ってみます。
% mkdir build-qt5
% cd build-qt5
% qmake -qt=qt5 ../src/tomighty.pro
% make
とすると! 以下のようにコケました……。
g++ -m64 -Wl,-O1 -o tomighty-test-runner Main.o -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../core/ -ltomighty-core -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui/ -ltomighty-ui -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests/ -ltomighty-core-tests -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui-tests/ -ltomighty-ui-tests -lQt5Test -lQt5Core -lpthread
/usr/bin/ld: warning: libtomighty-core-mock.so.1, needed by /home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so, not found (try using -rpath or -rpath-link)
/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so: `tmty::InMemoryPreferences::InMemoryPreferences(QObject*)' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so: `tmty::FakeTimer::interval() const' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so: `tmty::FakeTimer::FakeTimer(QObject*)' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so: `tmty::ManualClockwork::moveOneSecond()' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui-tests//libtomighty-ui-tests.so: `tmty::MockTimerSignalEmitter::MockTimerSignalEmitter(QObject*)' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui-tests//libtomighty-ui-tests.so: `tmty::MockPomodoroEngine::isStarted() const' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui-tests//libtomighty-ui-tests.so: `tmty::MockPomodoroEngine::MockPomodoroEngine(QObject*)' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so: `tmty::ManualClockwork::ManualClockwork(QObject*)' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui-tests//libtomighty-ui-tests.so: `tmty::MockPomodoroEngine::getCurrentIntervalType() const' に対する定義されていない参照です
/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests//libtomighty-core-tests.so: `tmty::ManualClockwork::isRunning() const' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
まぁ、単純にlibtomighty-core-mock.so.1にパスが通ってないようで……。 モノはいるんですよ、モノは……。
% find . -name libtomighty-core-mock.so.1
./core-mock/libtomighty-core-mock.so.1
で、コケてる g++
コマンドを以下のようにして、test-runnerディレクトリで実行すると通ることも確認できてます。
% g++ -m64 -Wl,-O1 -o tomighty-test-runner Main.o -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../core/ -ltomighty-core -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui/ -ltomighty-ui -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../core-tests/ -ltomighty-core-tests -L/home/rare/work/debian/tomighty/build-qt5/test-runner/../ui-tests/ -ltomighty-ui-tests -lQt5Test -lQt5Core -lpthread -L/home/rare/work/debian/tomighty/build-qt5/core-mock -ltomighty-core-mock
そもそも、test-runnerなんて名前なので、ビルド必須なのかもよくわかりませんが……。 ひとまずは、こちらを全うに直す方法を調べる必要がありそうです。
まさか……
これだけのはなしですか……?
diff --git src/test-runner/test-runner.pro src/test-runner/test-runner.pro
index 44ac2b4..82bc4c8 100644
--- src/test-runner/test-runner.pro
+++ src/test-runner/test-runner.pro
@@ -27,16 +27,19 @@ win32:CONFIG(release, debug|release): LIBS += \
-L$$OUT_PWD/../core/release/ -ltomighty-core \
-L$$OUT_PWD/../ui/release/ -ltomighty-ui \
-L$$OUT_PWD/../core-tests/release/ -ltomighty-core-tests \
+ -L$$OUT_PWD/../core-mock/release/ -ltomighty-core-mock \
-L$$OUT_PWD/../ui-tests/release/ -ltomighty-ui-tests
else:win32:CONFIG(debug, debug|release): LIBS += \
-L$$OUT_PWD/../core/debug/ -ltomighty-core \
-L$$OUT_PWD/../ui/debug/ -ltomighty-ui \
-L$$OUT_PWD/../core-tests/debug/ -ltomighty-core-tests \
+ -L$$OUT_PWD/../core-mock/debug/ -ltomighty-core-mock \
-L$$OUT_PWD/../ui-tests/debug/ -ltomighty-ui-tests
else:unix: LIBS += \
-L$$OUT_PWD/../core/ -ltomighty-core \
-L$$OUT_PWD/../ui/ -ltomighty-ui \
-L$$OUT_PWD/../core-tests/ -ltomighty-core-tests \
+ -L$$OUT_PWD/../core-mock/ -ltomighty-core-mock \
-L$$OUT_PWD/../ui-tests/ -ltomighty-ui-tests
ビルド通ってしまった。 win版は通るかわかんないけど……。